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语音智能体架构解析(一)系统架构全景图-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 后,接下来就是见证奇迹的时刻。我们只需运行一个脚本,剩下的工作就全部自动化完成了。

  1. 进入脚本目录

    复制代码
    cd tools/sbot_audio_gen
  2. 执行生成脚本

    复制代码
    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 配置 + 脚本生成"的自动化流程,我们成功地将音频资源管理从繁琐的手工劳动中解放出来。其核心优势在于:

  1. 集中管理:所有音频资源及其元数据都在一个 Excel 表格中清晰可见。
  2. 自动化处理:一键完成格式校验、云端合成、编码转换和 C 数组生成。
  3. 高效迭代:新增或修改音频提示时,只需修改表格并重新运行脚本,无需触碰核心业务代码。

这套流程不仅适用于音频,其设计思想也可以推广到其他需要批量处理资源文件的场景中,是提升嵌入式开发效率的利器

相关推荐
2601_949499941 小时前
400G组网低功耗优选!芯瑞科技400G VR4 QSFP112光模块赋能智算中心高速互联
大数据·人工智能·科技
GoAI2 小时前
# AI Agent 记忆框架横向对比报告总结
人工智能·大模型·llm·多模态
李昊哲小课2 小时前
fastapi sse websocket 奶茶店实时订单看板
人工智能·python·websocket·网络协议·fastapi·sse
万邦科技Lafite2 小时前
天猫商品评论API:评价内容中的用户情感倾向分析
人工智能·api·电商开放平台·淘宝开放平台·api开放接口
遇码3 小时前
认识 LakeMind:一款本地优先的开源 AI 数据探索工作台
人工智能·开源
格林威3 小时前
多相机微秒级对齐:硬件触发 vs PTP(IEEE 1588)方案实战对比
开发语言·人工智能·数码相机·机器学习·计算机视觉·视觉检测·机器视觉
viva51723 小时前
Vibe/各规则定义的顺序和内容
ai编程
三江番长 陀舍古帝3 小时前
AI 相关概念之(基础层级):AI、ANI、AGI、ASI
人工智能·agi
加速财经4 小时前
PocketBay探索AI应用部署新方式
人工智能