AI语音智能体开发日记(十一)为智能设备“声”临其境——详解音频资源自动化生成流程
相关链接AI语音智能体开发日记一如何为“小智”服务器启用并调试 License 功能-CSDN博客AI语音智能体开发日记二解决 Wi-Fi 配网小程序的兼容性问题-CSDN博客AI语音智能体开发日记三解决小程序配网中的蓝牙命名与MAC地址获取问题-CSDN博客AI语音智能体开发日记四在FreeRTOS中构建线程安全的UART2通信模块-CSDN博客AI语音智能体开发日记五为智能设备注入“灵魂”——详解MCP工具的注册与使用-CSDN博客AI语音智能体开发日记六为智能体注入旋律——七牛云音乐服务的接入与避坑指南-CSDN博客AI语音智能体开发日记七搞定功放控制——详解GX8006平台Mute电平配置-CSDN博客AI语音智能体开发日记八LVGL 8.4.0 移植实战——从零构建嵌入式GUI-CSDN博客AI语音智能体开发日记九LVGL 8.4.0 中文字体配置全攻略-CSDN博客AI语音智能体开发日记十LVGL 图标字体实战——从 FontAwesome 到屏幕显示-CSDN博客AI语音智能体开发日记十一为智能设备“声”临其境——详解音频资源自动化生成流程-CSDN博客AI语音智能体开发日记十二GX8006 固件定制指南——从双唤醒词到 UART 音频传输-CSDN博客AI语音智能体开发日记十三一次由寄存器溢出引发的串口波特率“玄学”问题排查-CSDN博客AI语音智能体开发日记十四为语音智能体打造 LCD 表情动画位图BMP显示-CSDN博客AI语音智能体开发日记十五智能体LCD屏幕GIF动画显示方案——从GIF到BMP的完整实战-CSDN博客AI语音智能体开发日记十六智能体OTA失败的“401未授权”玄学问题排查-CSDN博客AI语音智能体开发日记十七智能体“失语“ -- 大量MCP指令与LCD内存分配引发的问题-CSDN博客AI语音智能体开发日记十八智能体服务器xiaozhi-esp32-server源码部署指南-CSDN博客AI语音智能体开发日记十九智能体服务器xiaozhi-esp32-server配置与调试-CSDN博客推荐链接AI语音智能体架构解析一系统架构全景图-CSDN博客AI语音智能体架构解析二大模型AI 的大脑-CSDN博客AI语音智能体架构解析三智控台指挥中心-CSDN博客AI语音智能体架构解析四AI 语音终端执行器官-CSDN博客AI语音智能体架构解析五小程序/APP遥控器-CSDN博客推荐链接AI 应用 图文 解说 (一) -- 百度智能云 实现 语音 聊天-CSDN博客AI 应用 图文 解说 (二) -- 百度智能云 ASR LIM TTS 语音AI助手程序 -CSDN博客开发手记为智能设备“声”临其境——详解音频资源自动化生成流程在智能硬件开发中丰富且恰当的音效与语音提示是提升用户体验的关键一环。然而手动管理成百上千个音频文件并将其转换为代码可用的格式无疑是一项繁琐且易错的工作。今天我将详细记录我们项目中一套高效的音频资源自动化生成流程。这套流程通过一个config.xlsx配置文件和一套 Python 脚本实现了从音频源文件到 C 语言头文件的“一键式”生成极大地提升了开发效率和可维护性。第一步准备工作与音频格式规范在开始之前我们需要明确系统对原始音频文件的硬性要求。这是保证音频能被正确播放的基础。根据项目中的wav_to_opus.py脚本校验规则所有输入的.wav文件必须满足以下三个条件参数要求不符合会怎样采样率必须是 16000 Hz直接报错退出声道必须是单声道 (Mono)直接报错退出位深必须是 16-bit PCM直接报错退出如果你的原始音频不符合这些规范可以使用ffmpeg工具在 Linux 下进行快速转换。例如将一个名为水滴音效.wav的文件转换为标准格式ffmpeg -i 水滴音效.wav -ar 16000 -ac 1 -sample_fmt s16 水滴音效_16k.wav第二步编辑配置文件 (config.xlsx)这是整个流程的核心。我们不再直接修改代码而是通过编辑config.xlsx表格来管理所有音频资源。表格的每一行代表一个音频事件主要包含以下几列事件ID: 音频的唯一数字标识。音频文本: 如果是语音提示这里填写需要合成的文字内容。是否生成音频: 标记为“是”表示该音频文本需要发送到云端进行语音合成标记为“否”则表示使用本地已有的音频文件。音频路径: 当“是否生成音频”为“否”时这里填写本地音频文件的路径。举个例子假设我们要添加一个新的“水滴提示音”。我们可以在表格末尾新增一行事件ID:13音频文本:水滴提示音是否生成音频:否音频路径:./audio_data/水滴音效.wav通过这种方式无论是新增云端合成的语音还是引入本地的音效都变得非常直观和简单。第三步运行自动化生成脚本需要用到的命令cd /home/zrh/LN882/qiniu_ota/Dog/HN2506044_V0.7_260721/tools/sbot_audio_gen rm -rf .venv python3 -m venv .venv source .venv/bin/activate .venv/bin/python3 -m pip install soundfile numpy openpyxl pandas opuslib requests .venv/bin/pip install -r requirements.txt配置好config.xlsx后接下来就是见证奇迹的时刻。我们只需运行一个脚本剩下的工作就全部自动化完成了。进入脚本目录cd tools/sbot_audio_gen执行生成脚本bash start_sbot_audio.sh这个start_sbot_audio.sh脚本会自动帮你完成以下所有步骤环境准备检测并创建 Python 虚拟环境.venv。依赖安装自动安装requirements.txt中列出的所有依赖库如opuslib(用于 Opus 编码)、openpyxl(用于读取 Excel)、soundfile等。核心处理调用python src/main.py config.xlsx开始处理音频。脚本运行后终端会输出详细的日志信息例如1INFO - Excel解析完成, 共解析20条音频配置 2INFO - 开始生成音频文件 3INFO - 成功生成C头文件: output/include/audio_data.h 4INFO - 所有文件生成完成!生成文件并替换后可以直接进行定义第四步集成生成的音频资源脚本成功执行后会在output/include/目录下生成一个全新的audio_data.h文件。这个文件就是音频资源的最终形态。打开audio_data.h你会看到所有音频文件都被转换成了一个巨大的二进制数组这个数组包含了项目中所有音频的二进制数据。最后我们需要将这个新生成的audio_data.h文件拷贝到项目源码目录中替换掉旧文件project/ln_model_public/app/servers/qiniu/mcp_server/mcp_tools/smart_toilet/audio_data.h第五步在代码中使用音频资源集成完毕后我们就可以在代码中通过枚举值来方便地调用它们了。这些枚举定义在smartbot_audio_res.h文件中。在业务逻辑代码中只需要传入对应的枚举值系统就能播放指定的音效或语音实现了数据与逻辑的完美解耦。总结通过这套“Excel 配置 脚本生成”的自动化流程我们成功地将音频资源管理从繁琐的手工劳动中解放出来。其核心优势在于集中管理所有音频资源及其元数据都在一个 Excel 表格中清晰可见。自动化处理一键完成格式校验、云端合成、编码转换和 C 数组生成。高效迭代新增或修改音频提示时只需修改表格并重新运行脚本无需触碰核心业务代码。这套流程不仅适用于音频其设计思想也可以推广到其他需要批量处理资源文件的场景中是提升嵌入式开发效率的利器

相关新闻

perfect-freehand 仓库现代化改造实战指南:TypeScript 5、Vitest、Rolldown 与 Lazyrepo 完整落地

perfect-freehand 仓库现代化改造实战指南:TypeScript 5、Vitest、Rolldown 与 Lazyrepo 完整落地

图形学 【免费下载链接】perfect-freehand Draw perfect pressure-sensitive freehand lines. 项目地址: https://gitcode.com/gh_mirrors/pe/perfect-freehand 点击查看 免费下载 导读:本文以 perfect-freehand 仓库根目录的 todo.md(Moder…

2026/10/12 2:09:11 阅读更多 →
七天真机实战:从零构建AI虚拟人,搞定角色一致性、语音与记忆

七天真机实战:从零构建AI虚拟人,搞定角色一致性、语音与记忆

七天假期,别人在景区排队,我在键盘前跟几十亿个 token 搏斗。最终产物是一个 AI 虚拟人——对,就是那种群里常说的“AI 老婆”形态的智能体,已经开源,拿到配置后一分钟能跑起来。这几天里我摸清了角色一致性、语音合成…

2026/10/12 2:09:11 阅读更多 →
AI语音智能体开发日记(十三)一次由寄存器溢出引发的串口波特率“玄学”问题排查

AI语音智能体开发日记(十三)一次由寄存器溢出引发的串口波特率“玄学”问题排查

相关链接: AI语音智能体开发日记(一)如何为“小智”服务器启用并调试 License 功能-CSDN博客 AI语音智能体开发日记(二)解决 Wi-Fi 配网小程序的兼容性问题-CSDN博客 AI语音智能体开发日记(三&#xff09…

2026/10/12 2:09:11 阅读更多 →

最新新闻

数据结构 - > 排序算法

数据结构 - > 排序算法

1. 排序的概念1.1 常见的排序算法1.2 排序算法的评价指标复杂度:评价排序算法的第一大指标就是时间复杂度和空间复杂度,它衡量算法的时间效率和空间效率。稳定性:假定在待排序的数据元素中有两个元素 Ri 和 Rj,它们对应的关键字为…

2026/10/12 3:39:10 阅读更多 →
ccg-workflow Shell 技能指南:Bash 脚本自动化、系统管理与多模型协作实战

ccg-workflow Shell 技能指南:Bash 脚本自动化、系统管理与多模型协作实战

【免费下载链接】ccg-workflow 多模型协作工作流引擎 — /ccg:go 一个命令,AI 自动分析意图、选择策略、编排 Codex Gemini Claude 协作执行 项目地址: https://gitcode.com/gh_mirrors/cc/ccg-workflow 点击查看 免费下载 导读 本文基于 ccg-workfl…

2026/10/12 3:39:10 阅读更多 →
2026年软件测试趋势:AI Agent、质量内建与可观测性重塑质量保障

2026年软件测试趋势:AI Agent、质量内建与可观测性重塑质量保障

做测试这行,每年年底都在猜明年的技术方向,但2026年这次不太一样。我最近和不少测试负责人、开发团队聊下来,大家最焦虑的已经不是又冒出了什么新工具,而是整个质量体系正在被 AI 和平台工程重构,很多沿用多年的测试方…

2026/10/12 3:39:10 阅读更多 →
netdxf实战:DXF文字注释与尺寸标注的创建与修改

netdxf实战:DXF文字注释与尺寸标注的创建与修改

接触过DXF开发的人应该都有这种感觉:画直线、画圆、画多段线都属于“基本功”,真正让图纸变得可读、可传递设计意图的,是文字注释和尺寸标注。这一篇是整个netdxf系列里我比较想写的一篇,因为注释和标注的处理逻辑和普通几何实体完…

2026/10/12 3:39:10 阅读更多 →
文华财经主升浪买点指标公式拆解:多条件共振识别趋势启动

文华财经主升浪买点指标公式拆解:多条件共振识别趋势启动

1. 文华财经主升浪买点指标的实战拆解做期货日内或者波段的朋友,应该都听过“主升浪”这个词。行情走主升浪的时候,速度最快、幅度最大,但也是最难拿得住的一段。很多朋友在文华财经软件里翻遍了各类指标公式,要么信号滞后&#x…

2026/10/12 3:39:10 阅读更多 →
ppt-master 的 IBM 品牌身份预设解析:从 Carbon Blue 设计规范到可执行的 design_spec

ppt-master 的 IBM 品牌身份预设解析:从 Carbon Blue 设计规范到可执行的 design_spec

AI 技能人工智能 【免费下载链接】ppt-master AI 把任意文档生成真正可编辑的 PowerPoint —— 原生形状与动画、演讲者备注可合成音频旁白、还能参考你自己的 .pptx 模板,而不是一张张图片 何雨果出品 项目地址: https://gitcode.com/hugohe3/ppt-master 点击查看…

2026/10/12 3:38:09 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →