项目

一般

简介

音频 » 回声消除测试.txt

ly w, 2025-10-16 18:26

 
# 回声消除示例

# 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/
(2-2/2)