AEC(Acoustic Echo Canceller)即声学回声消除,也叫 回声消除 。介绍算法之前,让我们先了解回声是什么,它是怎么产生的。千言万语不如一个实际的例子,我在 YouTube 上找到了一个演示 AEC 算法的
视频
上面的视频中,我们可以看到,在 AEC 算法处理之前,录音包含了背景声音和人声,而背景声音在这种情况下是噪声;经过 AEC 算法处理之后,录音去除了噪声,获得干净的人声。
声学回声的例子被发现在日常的环境中,如:
免持车载电话系统
标准的电话或手机或免持模式
专用独立的“会议电话”
使用天花板扬声器和麦克风的桌子上已安装的会议室系统
物理耦合(通过听筒的扬声器的振动传输到麦克风壳体)
目前抖音上有多个场景用到 AEC 算法,包括合拍、K歌、直播等。
注意
v3算法效果优于v2算法,推荐接入v3算法
ID | 模型 | 描述 |
---|---|---|
C/Java: SAMICoreIdentify_RNNAEC | aec44k_v2.2_modify_time_1s.model | 44.1k模型,支持1000ms以内的延时差,需要消耗更多的资源 |
aec44k_v1.2.model | 44.1k模型,支持200ms以内的延时差 | |
aec_v1.1.model | 16k模型 |
ID | 模型 | 描述 |
---|---|---|
C/Java: SAMICoreIdentify_EngineExecutor_CE_AEC | aec44k_resnet_echo_cancellation_music_v1.3.model | 44.1k模型,针对音乐场景,支持1s以内的延时差 |
aec44k_resnet_echo_cancellation_speech_v1.4.model | 44.1k模型,针对语音场景,支持1s以内的延时差 |
注意
v3版本SDK内部集成重采样,支持格式与v2版本不一致
支持格式 | |
---|---|
采样率 | 44100/16000 (不同采样率使用不同模型和初始化参数) |
通道数 | 1ch/2ch |
数据格式 | Planar-Float |
支持流式 | 支持 |
支持realtime-safe更新参数 | 不支持 |
注意: aec算法需要参考通道的数据 |
支持格式 | |
---|---|
采样率 | 16000/24000/44100/48000... |
通道数 | 1ch/2ch |
数据格式 | Planar-Float/Interleaved-Float |
支持流式 | 支持 |
支持realtime-safe更新参数 | 不支持 |
注意: aec算法需要参考通道的数据 |