win10系统单独编译和使用WebRTC的回声消除(AEC)、音频增益(AGC)、去噪(NS)模块

一、简介

本人想单独编译并使用WebRTC的音频回声消除模块,奈何技术有限,于是在百度的海洋里大海捞针,发现了https://www.cnblogs.com/mod109/p/5827918.html#!comments这篇博文已经做了相关工作,不甚感激!

但是我的需求是在window系统下进行编译,而该博主是基于其它平台做的项目(由于本人太菜,看不出是啥平台),于是本篇的内容就是基于https://www.cnblogs.com/mod109/p/5827918.html#!comments这篇博文的工作移植到windows系统上并运行成功。

二、工具

Windows10+VScode+xmake

三、具体流程

  • 1、删除不需要的文件,并将WebRtcAudioTest.cpp中主函数名 int _tmain(int argc, _TCHAR* argv[])改为int main(int argc, char* argv[])
    由于我使用VScode,而原项目是vs2010的工程,因此我不需要stdafx.h和stdafx.c这两个文件,先删掉这两个文件,并在WebRtcAudioTest.cpp文件中将#include"stdafx.h"注释掉
    注:理论上使用vs2010打开这个项目能编译成功,但是我尝试一番后,还是运行报错,所以在vs2010上运行此项目未成功。
  • 2、写个最基础的xmake.lua文件,直接进行编译

点击查看代码

target("main")
    set_kind("binary")
    add_files("/*.cpp")
    add_includedirs("/")
    set_targetdir("./output")

编译后你会发现有一堆报错,仔细看就会发现是一些函数未定义,如下

然后只需要将未定义的函数名在vscode中全局搜索一下,看看是在哪个xxx.c文件中定义的,在xmake.lua文件中添加上这个xxx.c文件就可以了

  • 3、重复步骤2,直到编译成功!

四、结语

该方法虽然有点繁琐,但是有效啊,千万不要在编译的时候一下子把项目中webrtc库里的所有.c文件都带上,本人刚开始就是这么干的,结果各种报错,搞了好多天都没搞好。

编译成功后就可以愉快的进行WebRTC中的回声消除、增益、去噪三个模块进行测试了!

附录:

下边附上步骤2中所需要的所有.c文件
点击查看代码

target("main")
    set_kind("binary")
    add_files("/*.cpp")
    add_files("webrtc/modules/audio_processing/aec/**.c",
              "webrtc/modules/audio_processing/agc/**.c", 
              "webrtc/modules/audio_processing/ns/noise_suppression.c",
              "webrtc/modules/audio_processing/ns/ns_core.c",
              "webrtc/modules/audio_processing/utility/**.c", 
              "webrtc/common_audio/signal_processing/splitting_filter.c",
              "webrtc/common_audio/signal_processing/resample_by_2.c",
              "webrtc/common_audio/signal_processing/division_operations.c",
              "webrtc/common_audio/signal_processing/copy_set_operations.c",
              "webrtc/common_audio/signal_processing/dot_product_with_scale.c",
              "webrtc/common_audio/signal_processing/spl_sqrt.c",
              "webrtc/common_audio/signal_processing/randomization_functions.c",
              "webrtc/system_wrappers/source/cpu_features.cc")
    add_includedirs("/")
    set_targetdir("./output")

下载

可在该原博客中下载项目代码:https://www.cnblogs.com/mod109/p/5827918.html#!comments