Webrtc回声消除
一 配置
1.1 回声消除相关demo
对应代码在⼯程⽬录中的 libmedia/test/main_webrtc_noecho_test.c
1.2 播放、录⾳与回读功能
声卡驱动配置
默认勾选加载模块时codec进入待机状态,播放时配置dac余下步骤(避免播放无声或滋滋声)
使能ADCL中MIC输入为单端模式: ad100 mic为差分不用勾选,ad102n/p为单端需要勾选
mic信号的增益(MICL_GAIN):外接amic时需要依据信号强弱设置改增益⼤⼩
⼿动设置ALCL增益(ALCL_GAIN):alcl为codec的adc的数字增益,⽤于调节录制⾳频的增益⼤⼩
输出信号的模拟增益(HPOUTL):⽤于调节播放⾳频的增益⼤⼩
录音时mic引脚需高电平,播放时功放引脚需高电平
创建声卡设备
1.3 重采样相关第三方库
1.4 buildroot配置
bhu@bhu-PC:~/ad100/buildroot/buildroot24$ make menuconfig
编译webrtc库需要工具链gcc1210
# ls /dev/snd/
controlC0 controlC1 pcmC0D0c pcmC0D0p pcmC1D0c timer
//pcmC0D0c对应amic设备,pcmC0D0p为播放设备,pcmC1D0c为回读设备
二 验证
# aec_webrtc_loopback_test 20 /usr/data/noecho.pcm & //20为录制时长(s),noecho.pcm为经过消除回声后文件
# aplay -Dplughw:0,0 /usr/data/crazy_8k_60.wav & //播放音乐
三 调试
可以通过 cmd_alsa(libhardware2中的⼯具)修改mic及speak音量大小
# cmd_alsa list_ctls card=hw:0
integer: "Master Playback Volume" [0, 255] 220 //speak大小
integer: "Mic Volume" [0, 255] 225 //mic大小
integer: "ADCL Volume" [0, 255] 225
other[1]: "Playback Mute"
integer: "AGC OBSERVE Gain" [0, 31] 31
integer: "AGC PGAIN MAX Volume" [0, 7] 7
integer: "AGC PGAIN MIN Volume" [0, 7] 0
integer: "AGC RANGE MAX Threshold" [0, 32767] 16422
integer: "AGC RANGE MIN Threshold" [0, 32767] 8294
other[1]: "AGC Switch"
integer: "ALCL Volume" [0, 31] 6
integer: "DACL Volume" [0, 255] 220
integer: "HPOUTL Volume" [0, 4] 0
integer: "MICL Volume" [0, 3] 3
example:
cmd_alsa set_ctl card=hw:0 ctl="Master Playback Volume" value=230