# 回声消除示例 # 1. 查看版本 pulseaudio --version pulseaudio 13.99.3 # 2. 加载回声消除插件 pactl load-module module-echo-cancel \ source_name=noechosource \ sink_name=noechosink \ aec_method=webrtc \ source_master=alsa_input.platform-es8388-sound.stereo-fallback \ sink_master=alsa_output.platform-es8388-sound.stereo-fallback # 注意: 1)通过 pactl list sources short 和 pactl list sinks short 查看你想绑定的声卡 2)不设置aec_method=webrtc几乎没效果; 3)另外aec_method=webrtc还可以进一步设置其它参数比如 aec_args="analog_gain_control=0 digital_gain_control=1",此项未测试过 # 3. 设置pulseaudio的默认声卡 pactl set-default-source noechosource pactl set-default-sink noechosink # 4. 生成测试音频 apt install sox sox -n -b 16 -r 44100 1.wav synth 120 sine 440 # 5. 播放并采集 1)播放:aplay -D pulse 1.wav 2)同时采集(麦克风靠近 aplay 播放的音源):arecord -D pulse -r 44100 -c 1 -f S16_LE 2.wav 3)采集完后播放:2.wav,发现几乎没有 1.wav 相关的声音 # 6. 卸载插件 pactl load-module module-echo-cancel # 附录: 1)除了 webrtc 回声消息算法引擎外,还可以尝试其它的,比如speex aec_method=webrtc aec_method=speex 通过加载外部算法库来实现回声消除: /usr/lib/aarch64-linux-gnu/libwebrtc_audio_processing.so /usr/lib/aarch64-linux-gnu/libwebrtc_audio_processing.a /usr/lib/aarch64-linux-gnu/libwebrtc_audio_processing.so.1 /usr/lib/aarch64-linux-gnu/libwebrtc_audio_processing.so.1.0.0 /usr/lib/aarch64-linux-gnu/libspeexdsp.so.1.5.0 /usr/lib/aarch64-linux-gnu/libspeex.so.1 /usr/lib/aarch64-linux-gnu/alsa-lib/libasound_module_rate_speexrate.so /usr/lib/aarch64-linux-gnu/alsa-lib/libasound_module_rate_speexrate_medium.so /usr/lib/aarch64-linux-gnu/alsa-lib/libasound_module_rate_speexrate_best.so /usr/lib/aarch64-linux-gnu/libspeex.so.1.5.0 /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstspeex.so /usr/lib/aarch64-linux-gnu/libspeexdsp.so.1 2)参考 https://blog.csdn.net/godbreak/article/details/38756977 https://arunraghavan.net/2011/08/hello-hello-hello/