跳转至

回声消除使用说明

AEC是声学回声消除(Acoustic Echo Cancellation)的简称,该算法在有参考的情况下,自适应追踪回声路径的变换、实时抑制扬声器到达麦克风终端的回声信号,以提升目标语音的识别效果,根据实际应用场景评估是否开启AEC。开启该功能后,当存在较长的播放内容,或者在播放音频媒体资源时候(例如音箱播放MP3歌曲),这时也可以进行语音识别打断。

本文档主要介绍如何使用该功能。

1. AEC基本介绍

AEC的应用原理示意框图如下,参考信号经过喇叭产生播放信号B,人声为目标语音信号A,当播放声音时,信号B和信号A在应用环境进行复杂的混合后进入芯片,AEC算法根据参考信号和混合后的信号,抑制信号B,提高信号A的信噪比,再进入语音识别引擎,从而提升识别效果。

回声消除原理框图

图1-1 回声消除原理框图

2. AEC软件平台

以下SDK可以支持AEC功能:

  • 离线语音识别SDK:CI13XX_SDK_ASR_Offline

3. AEC软件配置

3.1 开启功能

  • 离线语音识别SDK

用户可在../projects/offline_asr_pro_sample/src/user_config.h文件中进行配置

#define USE_AEC_MODULE      0   //是否开启回声消除功能,1:开启,0:关闭。

3.2 参数配置

用户可打开SDK包中的../projects/offline_asr_pro_sample/src/ci_ssp_config.c文件,回声消除算法有以下参数可供用户调试使用:

  • 离线语音识别SDK
const aec_config_t aec_config =
{
    .alc_off_codec_adc_gain_mic = 20,           //麦克风信号增益
    .alc_off_codec_adc_gain_ref = 0             //参考信号增益
};

参数说明:

开启AEC功能后,会自动关闭自动增益控制(ALC)。用户可通过调整参数alc_off_codec_adc_gain_mic、alc_off_codec_adc_gain_ref的大小来设置麦克风信号通道、参考信号通道的固定增益。

alc_off_codec_adc_gain_mic:默认20,范围-18 ~ 28.5,单位dB。

alc_off_codec_adc_gain_ref:默认0,范围-18 ~ 28.5,单位dB。

调试建议:麦克风信号通道增益至少高于参考信号通道增益8dB;当识别效果正常时,建议不修改参数值;若识别效果差,用户可通过5.2节内容逐步排查麦克风信号、参考信号是否削顶,使回声消除精度下降,回声残留增多,从而导致识别效果变差。

4. 硬件设计

4.1 物料选型

  1. 功放选型注意,要保证在最大音量状态下,功放输出功率失真度要<10%。我司常用型号为FM8002A,SGM4890等,用D类功放反馈信号注意需要加RC波形波。
  2. 喇叭最好选用带音腔的喇叭,在150HZ-3000HZ之间THD最好能小于10%。

4.2 原理图设计

  • 离线语音识别SDK仅支持单MIC+单喇叭方案

可在我司平台上下载对应需要的参考电路,第一次设计完成后,建议发我司市场或FAE确认。

  1. 单MIC+单喇叭,AB类功放参考电路

原理图设计

图4-1 单MIC+单喇叭-AB类功放参考电路
  1. 单MIC+单喇叭,采用D类功放参考电路。需要加RC滤波,把脉冲宽度调制信号滤为模拟信号

注意:电路留差分设计,但默认采用单端反馈方式

原理图设计

图4-2 单MIC+单喇叭-D类功放参考电路

4.3 整机结构要求

  • 要求麦克风与喇叭在结构空间允许的条件下,麦克风需尽量远离喇叭位置,麦克风不要超出喇叭朝向所在水平面,麦克风离喇叭越近,信噪比越低,麦克风失真的可能性越大,考虑结构大小建议麦克风离喇叭10cm左右,麦克风与喇叭的位置关系左右上下对AEC处理效果影响不大;

内部AEC参考硬件线路图

图 4-3 麦克风与喇叭的位置
  • 麦克风需配备结构稳固且可密封的外壳,胶套厚度需超过1mm,以确保麦克风不会接收到整机内部喇叭产生的音源干扰;

  • 选择模拟麦克风时,应考虑灵敏度在-32±3dB范围内,以确保有效降低环境噪音并拾取清晰人声。同时,信噪比应大于70dB,以满足高质量声音回放的需求;

  • 必须设计合理的麦克风进音孔,拾音孔的直径与孔深度(即外壳厚度)密切相关。以下是推荐的规格:

序号 孔深度(与产品面板厚度及咪套厚度有关) 拾音孔直径
1 1mm 1.5mm
2 2mm 2.5mm
3 3mm 3.0mm

麦克风进音孔示例图

麦克风进音孔示例图

图 4-4 麦克风进音孔结构
  • 最好使用带音腔的喇叭,避免把声音传入整机内部。尽量不要用微型扬声器、超薄扬声器等共振频率较高的扬声器单元,该类单体低频失真大。扬声器后腔结构允许的话,加被动辐射器或导向管设计,可以增加低频,同时减小喇叭的非线性振动;
  • 详细信息可参考我司平台说明:☞产品结构设计

5. 调试流程

5.1 喇叭音量调试

用分贝仪测量音量,当喇叭为最大音量播放时,在喇叭附近的音量建议小于95dB(最大不超过110dB),在MIC处的音量建议小于85dB(最大不超过90dB)。若喇叭播放音量过大,建议降低喇叭 hp out 最大音量。

喇叭注意事项:

  • 减少谐波失真:谐波失真由系统的非线性特性造成。在整个音频通路中,谐波失真的产生原因有:喇叭单体的失真曲线、喇叭后腔结构设计、喇叭前网罩、麦克风收音孔结构等。麦克风信号中的谐波失真越大,与参考信号的相似度越差,回声消除的精度越低。
  • 调试建议:尽量不要用微型扬声器、超薄扬声器等共振频率较高的扬声器,该类单体低频失真大;扬声器后腔结构允许的话,加被动辐射器或导向管设计,可以增加低频,同时减小喇叭的非线性振动;避免输入信号的振幅过大,尤其是在接近喇叭的功率极限时,限制信号的峰值振幅。

采用4个不同的喇叭播放相同的音频源,如图5-1的语谱图所示,喇叭2、3、4均存在固定频段能量增强的现象,即存在谐波失真,会严重影响AEC效果,尽量不用采用这种喇叭。

内部AEC参考硬件线路图

图5-1 不同喇叭播放的声音的情况

5.2 信号幅值调试

在产品密封安装后,喇叭以最大音量播放,通过**采音**观察麦克风信号、参考信号,尽量保证麦克风信号和参考信号不削顶失真。削顶会让信号产生非线性失真,进而降低回声消除精度。

链接,增加采音可以用于以下情况的分析:a. 产品硬件底噪 ;b. aec ; c. doa分析.........

1)麦克风信号

若喇叭距离麦克风较近且播放音量过大,麦克风信号可能削顶失真。

调试建议:喇叭播放时控制在合适的音量范围内;减小参数alc_off_codec_adc_gain_mic的值。

图5-2 麦克风信号时域波形图

注意:麦克风信号也不能过小,会影响识别效果。

2)参考信号

**调试建议:**检查播放音源是否削顶;检查分压电路前信号是否削顶,需对音量进行调整或更换低阻抗的喇叭。

如图5-3所示的上、下通道信号分别为麦克风信号、参考信号,展示了参考信号正常、参考信号削顶的时域波形,图5-4是对应的参考信号语谱图,图中可以看到当有播放的时候参考信号有数据,无播放的时候,参考信号非常小接近为0。

内部AEC参考硬件线路图

图5-3 参考信号时域波形图

内部AEC参考硬件线路图

图5-4 参考信号语谱图

注意事项:

  • 从功放后端采集的参考信号更接近喇叭播放的声音信号。在功放无延迟的情况下,可选择功放前端信号作为参考,在功放有延迟(尤其是自带EQ功能的功能)的情况下,建议选择功放后端信号作为参考(注意功能的输出范围不要超过ADC采样范围)。
  • 参考信号为模拟小信号,容易受到干扰。若电路设计存在问题,通常会在采集信号或麦克风信号中引入不良信号,如脉冲、杂波、混叠等,会导致丢数据情况出现,降低回声消除精度。若参考信号中的干扰较多,应首先修改硬件电路,例如:参考模拟信号尽量包地和远离高频信号,保证电路信号干净后,再进行声学测试。

5.3 效果展示

如图5-5所示的上、下通道信号分别为AEC处理后信号、麦克风信号(目标语音和喇叭播放声音的混合信号)。图中可以看出当信号无失真时,AEC算法处理消除了麦克风信号中的播报声音部分,播报残留很小,提高目标语音的信噪比。

内部AEC参考硬件线路图

图5-5 录音板采音时域效果

下图5-6为同样该音频的频域显示,该结果为正常结果。

内部AEC参考硬件线路图

图5-6 音频的频域显示

6. 异常调试步骤

注意:调试异常过程中,保存好音频,有利于快速分析。

  • step1:检查sdk配置是否存在异常

  • step2:通过采音板采集参考信号(ref)、输出信号(dst)和麦克风信号(mic)判断异常原因

目前较多的异常情况都是出现在参考信号,存在的问题举例有:

1)参考通道没有数据,需检查硬件通路、检查ref是左通道输入还是右通道输入,默认左通道;

2)参考信号干扰比较大,需检查硬件通路;

3)参考信号幅值偏离标准值较大(过大或过小),需检查分压电路和alc增益值,以标准板为参考;

4)参考信号分压过程中出现饱和情况,需检查分压电路和alc增益值,AEC异常调试案例

麦克风信号异常的问题有:

1)aec处理过程中,alc没有关闭,需检查播放状态、alc切换状态;

2)麦克风信号出现截幅情况,需检查播放状态、alc切换状态、alc增益值;

3)麦克风信号灵敏度差异,需更换麦克风确认是否麦克风异常;

4)麦克风幅值过小,aec不起效,aec处理中的门限值需要调整、更改alc增益。

  • step3:替换不同的模块分析是否是外围硬件设备差异导致异常

外围设备有:麦克风、喇叭、分压电路、功放、codec等。

  • step4:查看是否是环境因素导致aec效果下降

1)混响较大的环境下,aec效果会下降;

2)在家用电器或机器人等产品设备中,风扇噪声和电机噪声引入的变量会导致麦克风信号的底噪特别大,AEC处理后信号仍会保留这部分底噪,对识别效果有较大影响。要特别注意内部风扇、电机与麦克风的距离,如结构空间允许,可对麦克风单独做密封处理,防止内部传音。

**AEC应用不符合预期时建议以标准sdk和硬件作为参考,通过标准配件参考分模块分析具体原因。 **