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 ...
随机推荐
- GO 语言中 slice 的理解
GO 语言中 slice 理解 为什么说 Go 语言的 slice 是引用类型,其底层实现明明是一个结构体? slice 的底层实现是一个包含三个字段的结构体:指向底层数组的指针.slice 的长度和 ...
- MySQL 中分区表
MySQL 中的分区表 InnoDB 逻辑存储结构 表空间 (Tablespace) 段 (segment) 区 (extent) 页 (page) 行 (row) InnoDB 数据页结构 分区别表 ...
- 【调制解调】DSB 双边带调幅
说明 学习数字信号处理算法时整理的学习笔记.同系列文章目录可见 <DSP 学习之路>目录,代码已上传到 Github - ModulationAndDemodulation.本篇介绍 DS ...
- linux内核编译体验篇(一)
文章目录 一. 准备环境 二. 获取内核源码 三. 交叉编译工具链的配置 1. 博友们常用安装方法链接 2. 公司常用的交叉工具链使用方法 四. 内核解压以及如何打补丁 五. 内核基本配置 1. 编译 ...
- Centos7快速安装Oracl11g
Centos7快速安装Oracle11g 一.解决虚拟机或低配置的云服务器上安装Oracle的方法有两种: 1)不用图形界面,采用静默方式安装,这种方法的技术难度比较大,Oracle的DBA经常采用这 ...
- Linux 命令:lsof
参考文档:lsof命令详解 lsof,列出系统中所有打开的文件. 各列字段意义如下: COMMAND: 进程的名称 PID: 进程标识符 USER: 进程所有者 FD: 文件描述符,应用程序通过文件描 ...
- HTML超文本标记语言3
三.HTML表单标签 1.form标签 <form> form标签 name=表单名称,action=表单提交的地址,method=表单提交方式:get/post get/post详解: ...
- .NET周刊【7月第5期 2023-07-30】
国内文章 PaddleSharp:跨越一年的版本更新与亮点 https://www.cnblogs.com/sdflysha/p/20230724-paddlesharp-in-a-year.html ...
- python下的jstack - pystack
背景 python 多进程任务,卡在某个地方没有继续执行也没有报出异常,进程被hang住 日志没有捕获到相关信息,需要知道进程阻塞在哪里,为什么阻塞 jvm提供了jstack.jmap类工具进行性能分 ...
- CodeForces CF1846G 题解
CodeForces CF1846G 题解 CodeForces题目链接 洛谷题目链接 标准答案是状压之后,转化成Dijkstra算法跑最短路.我这里提供一个不一样的思路. 题意简述 主人公得了病,有 ...