MT8516平台交叉编译移植WebRTC audio processing实现NS降噪功能

        WebRTC 作为一个流媒体的框架,包含音频、视频、p2p传输一整套流媒体核心技术。最近利用业余时间学习它的音频模块,WebRTC支持音频的麦克风采集、编码、RTP打包发送。同时加入了AGC(自动增益)、NS(降噪)、AEC(回声消抑)、VAD(静音检测)等一系列算法。这些算法主要在采集过后,编码之前进行处理,代码集中在AudioProcessingModule(音频处理单元),简称APM。

1、WebRTC AudioProcessing网站:

        https://www.freedesktop.org/software/pulseaudio/webrtc-audio-processing

 

2、下载源码包:

        当前最新版本0.3.1,下载网址:http://freedesktop.org/software/pulseaudio/webrtc-audio-processing

         GIT下载命令: git clone git://anongit.freedesktop.org/pulseaudio/webrtc-audio-processing

 

3、执行autogen.sh脚本

        cd webrtc-audio-processing

        ./autogen.sh

报错,提示交叉编译时需要添加参--host。

因为我交叉编译的目标板为MT8516,为ARM64嵌入式系统,所以需要配置的参数--host参数如下:

        ./autogen.sh —host=aarch64-poky-linux

脚本执行完成后,会在当前目录下生成一些新的文件:

 

4、执行configure

    ./configure --prefix=/work/ZelusTek_MT8516/WebRtc_Audio_Processing/lib_audio_processing —host=aarch64-poky-linux

 

5、make && make install

 

6、编译完成后,在prefix目录下会生成目标库文件,在项目中链接该so库即可.

MT8516平台交叉编译移植WebRTC audio processing实现NS降噪功能_第1张图片

 

7、开启NS定点数运算降噪算法模块

    Webrtc_audio_processing默认编译出来的库开启的是NS浮点数运算的降噪算法,接口如:WebRtcNs_set_policy。

    如果想要使用定点数运算的降噪算法,可以通过配置configure参数来实现。

./configure --prefix=/work/ZelusTek_MT8516/WebRtc_Audio_Processing/lib_audio_processing —host=aarch64-poky-linux —with-ns-mode=fixed

定点数运算的降噪接口如:WebRtcNsx_set_policy。

 

8、开启NS降噪前后,通过CoolEdit工具可以听到明显效果:

    NS开启前:

MT8516平台交叉编译移植WebRTC audio processing实现NS降噪功能_第2张图片

 

    NS开启后:

MT8516平台交叉编译移植WebRTC audio processing实现NS降噪功能_第3张图片

 

你可能感兴趣的:(Linux,Multimedia,Working,Notes)