前言
本文评估开发板上进行音频实时处理,移植speex算法,进行回声消除和降噪处理,主要关注算法执行时间。
移植speex
Speex的移植可以参考公众号文章
我这里分享了测试demo,
测试
编译
source /opt/st/myd-ld25x/4.2.4-snapshot/environment-setup-cortexa35-ostl-linux
修改build.sh
gcc为$CC
chmod +x ./build.sh
./build.sh
导入测试文件到开发板
导入程序到开发板
chmod +x speexecho
./speexecho mic3.wav spk3.wav out3.wav
可以看到执行时间大概是1.8mS
导出out3.wav查看波形
可以看到回声消除和降噪效果。
这里对比其他
某个M4F平台N=256点,TAIL=1024需要14~15mS
这里只需要1.8mS,和之前测试的fft的效率比例相当,所以算法主要执行时间就是取决于fft运算时间,当然还有很多内存搬运的时间和平台相关。
总结
以上可以看到进行16k音频的实时处理,对应时间为16mS,需要算法时间为1.8ms,
所以算法完全足够,如果按照48k采样率,数据量变为3倍,按倍数估计也只需要5.4ms,
占比16ms也很少,所以进行实时音频处理是毫无压力的。