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
win10系统单独编译和使用WebRTC的回声消除(AEC)、音频增益(AGC)、去噪(NS)模块的更多相关文章
- webRTC中回声消除(AEC)模块编译时aec_rdft.c文件报错:
webRTC中回声消除(AEC)模块编译时aec_rdft.c文件报错. 原因是: 局部变量ip跟全局变量冲突的问题,可以将局部变量重新命名一下,就可以通过编译了. aec_rdft.c修改以后文件代 ...
- 单独编译和使用webrtc音频降噪模块(附完整源码+测试音频文件)
单独编译和使用webrtc音频增益模块(附完整源码+测试音频文件) 单独编译和使用webrtc音频回声消除模块(附完整源码+测试音频文件) webrtc的音频处理模块分为降噪ns,回音消除aec,回声 ...
- 单独编译和使用webrtc音频回声消除模块(附完整源码+测试音频文件)
单独编译和使用webrtc音频降噪模块(附完整源码+测试音频文件) 单独编译和使用webrtc音频增益模块(附完整源码+测试音频文件) 说实话很不想写这篇文章,因为这和我一贯推崇的最好全部编译并使用w ...
- 单独编译和使用webrtc音频增益模块(附完整源码+测试音频文件)
webrtc的音频处理模块分为降噪ns和nsx,回音消除aec,回声控制acem,音频增益agc,静音检测部分.另外webrtc已经封装好了一套音频处理模块APM,如果不是有特殊必要,使用者如果要用到 ...
- webrtc 的回声抵消(aec、aecm)算法简介(转)
webrtc 的回声抵消(aec.aecm)算法简介 webrtc 的回声抵消(aec.aecm)算法主要包括以下几个重要模块:1.回声时延估计 2.NLMS(归一化最小均方自适应算法) ...
- 拓展 - Webrtc 的回声抵消(aec、aecm)算法简介
webrtc 的回声抵消(aec.aecm)算法简介 原文链接:丢失.不好意思 webrtc 的回声抵消(aec.aecm)算法主要包括以下几个重要模块:1.回声时延估计 2.NLMS( ...
- Win10系统下编译GDAL1.9.2版本
环境说明: 1.Win10企业版.64位: 2.VS2012旗舰版: 3.GDAL1.9.2 GADL编译 1.解压GDAL压缩包至F:\GDAL\gdal-1.9.2: 2.设置GDAL编译后安装目 ...
- 关于电脑重装win10系统导致编译环境失效(jdk)
年前换了固态,于是重装了系统发现之前装在非系统盘的jdk1.8配置过系统环境后仍然不能正常使用的问题,在犹豫一会后选择了重装jdk, 由于之前用的是win7在环境配置上是 变量值内加;即可自行分行,但 ...
- Win10系统下编译GEOS3.6.2
环境说明 1.Win10专业版.64位: 2.VS2012旗舰版: 3.cmake-3.9.0.64位: 资源准备 GEOS管网(http://trac.osgeo.org/geos)下载3.4.3版 ...
- Win10系统下编译OSG3.4
环境说明 1.Win10专业版.64位: 2.VS2012旗舰版:QT5.2.0: 3.cmake-3.9.0.64位: 资源准备 1.OSG3.4源码包 http://trac.opensceneg ...
随机推荐
- 前端Vue自定义顶部搜索框 热门搜索 历史搜索 用于搜索跳转使用
前端Vue自定义顶部搜索框 热门搜索 历史搜索 用于搜索跳转使用, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13128 效 ...
- 4. SpringMVC获取请求参数
1. 通过 ServletAPI 获取 将 HttpServletRequest 作为控制器方法的形参 , 此时 HttpServletRequest 类型的参数表示封装了当前请求的请求报文的对象 ...
- 基于C# 开发的SOL SERVER 操作数据库类(SQLHelp)
说明:以下是我近两年年来开发中最常用的C#操作sql server数据库访问类,对初学者非常有用,容易扩展,支持多库操作,多研究研究,有什么问题欢迎留言 当前环境为 C# .NET CORE 3.0 ...
- 从Excel 电子表格中读取数据并插入到数据库的简单方式
using (FileStream fileStreamRead = new FileStream("new.xls" , FileMode.Open )) { //创建工作簿 I ...
- Java扩展Nginx之一:你好,nginx-clojure
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于Nginx扩展 以欣宸自己为例,对一个java程序 ...
- 论文日记二:VGG
1. 导读 前面我们回顾了AlexNet,AlexNet的作者指出模型的深度很重要,而VGG最大的贡献就在于对网络模型深度的研究. VGG原论文:<Very Deep Convolutional ...
- Windows10 下 Neo4j1.5.8 安装教程
前言 Neo4j 是一个高性能的.NOSQL 图形数据库,它将结构化数据存储在网络上而不是表中.基于磁盘的.具备完全的事务特性的 Java 持久化引擎,这里就不把他和常用关系型数据库做对比了.因为篇幅 ...
- TCP的Keep-Alive机制:链接存在但是没有数据传输,内核怎么处理
服务端/客户端会定期发送探测报文来检测客户端的存活状态. 由三个内核参数控制: 首次发送探测报文时间:net.ipv4.tcp_keepalive_time有报文传输时重置 探测报文的发送间隔:net ...
- 磁盘 io 测试
磁盘 io 测试 参考链接 主机的磁盘io测试
- windows传输文件到linux
PFSTP 打开该软件,在安装putty自带的 连接服务器 open 192.168.142.131 按提示输入账户密码 传送文件 put C:\Users\13662\nifi-1.13.2-bin ...