语音交互是 AI 硬件的基本功能,交互过程中音频数据的质量,是保障产品功能、体验的基础,也是保证语音识别正确率,大模型理解、应答准确度的前提条件。因此,每个 AI 硬件产品都需要进行声学结构调试。
涂鸦提供了基础的音频数据调试方法,以协助您在开发过程中获取音频数据,并结合数据对产品结构、硬件、软件进行调整,保障音频数据质量,提高唤醒率、语音识别率,优化大模型交互体验。平台调试音频数据为.pcm数据,16bit位宽,16k采样率。推荐查看音频数据软件Adobe Audition或者ocenaudio
本部分文档仅适用于板载音频场景,如果是外挂语音芯片,则需要参考语音芯片的声学结构体调试方法。
AI对话基于传统流媒体技术,和VOIP以及直播视频有诸多相似之处,设备上的音频处理包括推流和拉流两个部分,推流部分麦克风采集、3A处理、语音编码等部分,拉流部分包括语音解码、音频处理、扬声器输出等部分。

图中相关名词解释:
AGC: auto gain control,自动增益控制
AEC: acoustic echo cancellation, 回声消除
NS: noise suppression, 噪声抑制
音频处理除图中所示外,还可能包括其他如DRC、VAD等模块,在音频各模块中,对语音交互影响比较大的是AEC模块,回声消除的效果不仅和算法有关,还和硬件性能、结构设计等关系密切。由于硬件结构和设计上带来的影响,音频处理上需要在尽可能去除回声的同时保留近端对话,以保证AI语音对话的流畅性。
使用涂鸦官方的串口调试工具 tyuTool 进行测试。
在使用 tyuTool 的 AI Debug 串口模式(或直接通过串口终端)连接到设备后,可使用以下命令来控制录音与播放,以辅助声学结构测试:
| 命令 | 功能说明 |
|---|---|
start |
开始录音与音频处理 |
stop |
停止录音与音频处理 |
reset |
重置录音状态 |
bg 0 |
播放白噪声 |
bg 1 |
播放 1KHz-0dB 单频音 |
bg 2 |
播放连续扫频(50Hz - 7.5kHz) |
bg 3 |
播放离散频率扫频(见下文频率表) |
bg 4 |
播放最小单频(或者作为静音测试) |
volume <0-100> |
设置播放音量(例如:volume 70 将音量设为 70%) |
micgain <0-100> |
设置麦克风增益(例如:micgain 70) |
dump 0 |
抓取麦克风 (MIC) 原始输入通道数据 |
dump 1 |
抓取参考 (REF) 回采通道数据 |
dump 2 |
抓取AEC算法处理之后的音频数据 |
dump 3 |
抓取输入给KWS模块的音频数据 |
dump 4 |
抓取发送给云端AI Agent的音频数据 |
声学结构的设计可以通过播放测试音频来进行检查,用户可按照以下步骤播放对应的音频并进行试听或抓取数据分析:
tyuTool 或其他串口工具连接设备串口。reset 命令清理之前可能遗留的录音状态。同时可根据需要配置合适的 volume 和 micgain。start 命令开始记录音频数据。bg <模式> 命令。可用的测试音频包括:
bg 1):持续时间2s,0dB。bg 0)。bg 2):50Hz - 7500Hz 连续扫频。bg 3):频率与时长信息如下表。bg 4)。stop 命令停止采集,将采集好的数据缓存在设备中。dump 0 抓取麦克风数据,再发送 dump 1 抓取喇叭回采数据。将抓取到的 .pcm 数据导入 Adobe Audition 或 ocenaudio 中进行波形与频谱分析,判断是否有谐波失真、直流偏置或削波等现象。为了简化操作,tyuTool 提供了自动音频测试命令:
ser_auto 模式)。| 频率(Hz) | 时长(s) | 幅度(归一化) |
|---|---|---|
| 1000 | 0.5 | 0.8 |
| 7500 | 0.3 | 0.8 |
| 5800 | 0.3 | 0.8 |
| 4500 | 0.3 | 0.8 |
| 3500 | 0.3 | 0.8 |
| 2750 | 0.3 | 0.8 |
| 2150 | 0.3 | 0.8 |
| 1700 | 0.3 | 0.8 |
| 1300 | 0.3 | 0.8 |
| 785 | 0.3 | 0.8 |
| 600 | 0.3 | 0.8 |
| 475 | 0.3 | 0.8 |
| 370 | 0.3 | 0.8 |
| 285 | 0.3 | 0.8 |
| 225 | 0.3 | 0.8 |
| 175 | 0.3 | 0.8 |
| 135 | 0.3 | 0.8 |
| 100 | 0.3 | 0.8 |
| 80 | 0.3 | 0.8 |
| 65 | 0.3 | 0.8 |
| 50 | 0.3 | 0.8 |
可利用播放上述其中一个或者几个信号用来判断扬声器和麦克风性能,是否有谐波失真,是否有直流偏置,有无削波等。
直流偏置(DC Bias) 指的是音频信号中叠加的一个恒定直流电压分量,导致信号整体偏离零电平(参考电平)。这种现象可能由硬件设备、电路设计或信号传输过程中的问题引起,对音频质量产生不良影响。
下图给出了有直流偏置和正常音频波形示意图


轻微直流偏置对音频处理影响不大,直流偏置较大时会影响音频的动态范围,导致削波失真。高于0.01或者低于-0.01建议采用去直流偏移的算法,比如高通滤波等。测试程序中单频白噪声均可用来计算直流偏置。

当音频信号超过了音频数字信号所能表示的最大数值时,会引起削波失真。由于部分平台采用的是硬件回采电路,需要对回采信号和麦克信号进行分别判断。
情形1:比如播放1k单频的情况下,ref信号正常,麦克采集信号削波,如下图所示。

可能的原因是麦克距离喇叭太近导致,需要调整麦克和喇叭的相对位置。如果不能调整麦克和喇叭的相对位置,则可以通过脚本中降低micgain来进行调整。
情形2:ref有削波,麦克信号正常,如下图所示

可能得原因是喇叭响度过大导致,需要降低喇叭的播放响度,可以通过降低volume来进行调整。下图给出了测试结果中削波检测通过,如果未通过,samples记录了总共未通过的采样点数。

总谐波失真(Total Harmonic Distortion,简称 THD) 是衡量信号失真程度的重要指标,用于描述输出信号中谐波成分与基波成分的比例,反映系统对原始信号的还原能力。但实际中,由于器件的非线性特性(如晶体管的非线性区、扬声器振膜的非线性振动),输出信号中会额外产生谐波—— 即频率为输入信号基波频率整数倍的成分(如 2 倍频、3 倍频等),脚本中提供了基于1k的谐波失真计算结果。通常情况下超过扬声器额定功率会引起较大的谐波失真,建议谐波失真不通过时降低喇叭音量,此外,喇叭质量和麦克风质量不高的情况下也会引起谐波失真。

thd一般建议为5%(即0.05),高于此值则表示总谐波失真不通过。
测试程序支持双麦的声学验证,对于双麦处理算法,比如beamforming技术等,需要麦克具有较好的一致性。如果麦克一致性较差时建议更换麦克风。

此相关系数越高越好,理想情况下为1.0,建议此值高于0.7
如果出现丢帧、数据丢失或者处理异常等情况会导致麦克和回采通道数据无法对齐,从而出现延时不稳定的情况,可通过测试程序进行延时计算,评估延时稳定情况。

如果此项未通过(false),表示延时波动过大,对AEC有较为明显的影响,需要结合具体业务内容抓取数据进行定位排查。
在开发过程遇到问题,可以到 TuyaOS 开发者论坛 联网单品开发版块 发帖咨询。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈