对讲消回音参数调试
关键字说明
- AGC
AGC(Automatic Gain Control),自动增益控制,用于控制输出增益。 - EQ
EQ(Equalizer),均衡器处理,用于对特定频段进行处理。 - ANR
ANR(Acoustic Noise Reduction),降噪,用于去除环境中持续存在,频率固定的噪声。 - AEC
AEC(Acoustic Echo Cancellation),回声消除。
录音、播放的流程框图
录音数据流向分析
上图中绿色箭头方向为AI数据的流向,数据由麦克风采集,经过芯片内部的增益,到达(A点),此处(A点)的数据为原始的PCM数,接着和AO端的数据(B点)一起送入AEC算法进行处理,AEC算法处理后的数据(C点)会继续送到后面的APC算法(APC为ANR、EQ、HPF、AGC算法的集合)进行处理,处理后的数据即为最终的数据(D点)。
测试音频
TestFile1_pink_noise,TestFile1为一段噪声,用于辅助确认microphone和speaker的增益。
TestFile2_speech,TestFile2为一段对话语音,主要是外国友人的声音,频段比较全,消除难度相对比TestFile4高,用于调整AEC参数。
TestFile4_Chinese_speech,TestFile4为一段对话语音,主要是国人的声音,用于调整AEC参数。
利用Audacity软件分析音频
在对讲的调试过程中可以利用Audacity需要分析音频。
- 下载Audacity软件,并安装。
打开软件导入原始数据。
注意,一定要填入正确的音频格式。
好的录音数据,它的波峰尽量在0.5左右,不能有失真(如果波形上下达到1或者-1,则录音音量太大,应该降低录音音量)
选取需要分析的时间段,选择分析 -> Measure RMS , 可查看选区的平均振幅
确定speaker和microphone的增益
首先根据实际场景的需求(mic的收音距离和speaker的音量),通过测量确定好microphone和speaker的增益。
此步骤为后续调音最重要的一步,若用户需要更改这两个增益,所有的算法相关参数都需要重新调整。
确认speaker的增益
寻找一个比较安静的环境,保证环境噪音低于40dbA。
用待测设备播放TestFile1,调整speaker的增益,在保证没有失真的前提下,使之达到用户的需求。
确认microphone的增益
- 寻找一个比较安静的环境,保证环境噪音低于40dbA。
在距离待测设备一米处,放置一台播放设备,用播放设备播放TestFile1,并调节播放设备的增益,使分贝仪达到70dbA。(没有两台机子请跳转到第4步)
使用待测试设备进行录音,得到A点处的数据(或在不打开任何算法的情况下录制的最终数据),调整microphone增益,使RMS达到-25 DBRMS或以上,并且保证声音没有失真的情况。(使用Audacity查看RMS的方法)
确定speaker和microphone的增益后,待测设备使用确认speaker的增益得到的增益播放TestFile2,同时使用调整好的microphone增益录制音档,确认microphone录制的音档有没有失真。若有失真请继续调整speaker或microphone的增益(减小speaker的增益或减小microphone的增益)。但有时候会因为结构、speaker、功放等因素,无论你怎么调整录回来的音档都会有某些频段存在失真,此时只能从音档上分析是什么原因造成的,尽量去调整,找到原因。
- 若结构设计不合理或者microphone选型灵敏度太低没法达到-25 DBRMS,则在开启AEC后microphone录回来的回音没有爆音的情况下,将microphone的增益调整到足够大。
确认原始数据和算法处理正常
在确定speaker及microphone增益后, 编写测试程序,寻找一个安静的环境,设备自播自录,在启用AEC的情况下,最终得到的录音,理想情况下应该是没有任何声音。 可微调参数,朝理想情况靠近。
常见问题及解决方案
问题 | 现象 | 原因 | 解决方案 |
---|---|---|---|
通话存在底噪消不掉问题 | 语音间出现较大噪声,随后又被压下去 | 持续的噪声,但语音间隔短,导致NR收敛慢 | 开启AEC的舒适噪声辅助NR收敛 |
语音间会有一点回声(“吱吱吱的噪声”) | 主机AEC消不干净留下尾音 | 抓音档分析,若频率固定,则使用AO端EQ/HPF来消掉。若频率不固定则使用AO端AGC,设置noise gate来砍掉主机消不干净的回声 | |
单向对讲问题 | 明显回声 | 分机AEC消不干净 | 主机听到回声:则为分机AEC消不干净,抓出分机的音档分析 1. 调节分机AEC的频段划分和消除强度。 2. 减小分机mic/speaker的增益 3. 测试分机的气密性,排除结构原因 4. 若回声为固定频段,用AI的EQ砍 5. 减小主机的mic增益 |
主机AEC消不干净 | 分机听到回声:则为主机AEC消不干净。 1. 减小主机mic/speaker的增益 2. 测试主机的气密性,排除结构原因 3. 减小分机的mic增益 4. 若主机传过来的回声是固定频段,则可以使用分机AO端的EQ来砍 |
||
双方同时说话 | 声音忽大忽小 | 分机到主机的声音忽大忽小 | 抓出分机端的AI音档分析 1. 可能分机AEC开得太强,调整AEC强度 2. 若分机speaker端有开启AGC,则看是否为AGC参数没有调好,调整AGC参数 3. 若分机端的信号没问题,则可能为主机端speaker开启了AGC/EQ等算法,把信号处理出问题了,这里最好的处理方法是解主机。(从分机解需要分机去猜主机的行为) |
主机到分机的声音忽大忽小 | 抓出分机AO端的音档分析。 若主机过来的声音本来就是这样,则可能是主机mic端的AEC/AGC处理的问题。 1. 可能是主机AEC消得太干净。(这里可能尝试将主机mic/speaker、分机mic的增益减小来确认是否是主机AEC的问题) 2. 可能是主机AGC砍掉。(可以将主机的mic增益加大来实验,看是否为主机端AGC砍掉) 若主机过来的声音没有问题,则确认是否为分机AO端算法处理的问题还是分机结构/speaker的原因。 1. 若分机AO端有开启AGC,则检测是否为AGC参数没有调好导致的。 2. 可能为结构或speaker的原因导致某些频段信号打不出来 |
||
漏字(全消没了) | AEC开得太强 | 1. 调整AEC强度 2. 减小mic/speaker端或对方mic的增益 |
|
Speaker端有打开AGC/EQ等算法 | 调整相应的算法参数 | ||
响度小 | 1. 调整speaker端的增益或对方mic的增益 2.结构问题 |
||
喇叭声音失真、破音、颤音 | 1. 调整speaker端的增益 2. 调整对方的mic端的增益 3. 检查结构问题 |