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

win10,系统,单独,编译,使用,webrtc,回声,消除,aec,音频,增益,agc,ns,模块 · 浏览次数 : 81

小编点评

**xmake.lua** ```lua 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") ``` **步骤 2:编译** 1. 打开 VScode。 2. 创建一个新的文件并命名为 `webrtcAudioTest.cpp`。 3. 将 `WebRtcAudioTest.cpp` 的内容粘贴到 `webrtcAudioTest.cpp` 中。 4. 在 VScode 中打开 `webRTC.lua` 文件。 5. 在 `webRTC.lua` 中添加以下代码: ```lua local projectDir = package.get_cwd() local cppFiles = projectDir.."/webrtcAudioTest.cpp" return { compile = function(target) local compiler = compiler.getInstance() compiler:set_target(target) compiler:compile(cppFiles) return compiler:get_error_messages() end } ``` 6. 运行 `webRTC.lua` 文件。 7. 编译成功后,您应该看到一些类似于 `main.o` 的文件。 **提示** * 确保您安装了 WebRTC 库。您可以使用 `npm install webrtc` 来安装。 * 确保您在编译之前将所有 .c 文件都添加到项目中。

正文

一、简介

本人想单独编译并使用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)模块相似的内容:

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

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

驱动开发:内核监控进程与线程回调

在前面的文章中`LyShark`一直在重复的实现对系统底层模块的枚举,今天我们将展开一个新的话题,内核监控,我们以`监控进程线程`创建为例,在`Win10`系统中监控进程与线程可以使用微软提供给我们的两个新函数来实现,此类函数的原理是创建一个回调事件,当有进程或线程被创建或者注销时,系统会通过回调机制将该进程相关信息优先返回给我们自己的函数待处理结束后再转向系统层。

上古神兵,先天至宝,Win11平台安装和配置NeoVim0.8.2编辑器搭建Python3开发环境(2023最新攻略)

毫无疑问,我们生活在编辑器的最好年代,Vim是仅在Vi之下的神级编辑器,而脱胎于Vim的NeoVim则是这个时代最好的编辑器,没有之一。异步支持、更好的内存管理、更快的渲染速度、更多的编辑命令,是大神Thiago de Arruda对开发者们最好的技术馈赠。 之前一篇:Win10系统下安装编辑器之神

Python3.10动态修改Windows系统(win10/win11)本地IP地址(静态IP)

一般情况下,局域网里的终端比如本地服务器设置静态IP的好处是可以有效减少网络连接时间,原因是过程中省略了每次联网后从DHCP服务器获取IP地址的流程,缺点是容易引发IP地址的冲突,当然,还有操作层面的繁琐,如果想要切换静态IP地址,就得去网络连接设置中手动操作,本次我们使用Python3.10动态地

在Ubuntu系统安装Anaconda及Python

本文介绍在Linux Ubuntu操作系统的电脑中,安装Anaconda环境与Python语言的方法。 在之前的文章Anaconda与Python环境在Windows中的部署中,我们介绍了在Win10电脑中,安装Anaconda环境与Python语言的方法;而在本文中,我们就详细介绍一下在Linux

win10离线安装.net3.5失败的解决方案

简介: 问题:有时候需要离线安装.net3.5环境,网上的教程一般都是通过NetFx3.cab进行离线安装,但有时候会出现离线安装失败,比如: by~MaQaQ 2024-06-04 分析: 1、先关闭防火墙及杀毒软件 2、网上下载的离线安装包的版本不一定与你电脑的系统版本一致,如果提示找不到源文件

驱动开发:内核枚举ShadowSSDT基址

在笔者上一篇文章`《驱动开发:Win10枚举完整SSDT地址表》`实现了针对`SSDT`表的枚举功能,本章继续实现对`SSSDT`表的枚举,ShadowSSDT中文名`影子系统服务描述表`,SSSDT其主要的作用是管理系统中的图形化界面,其`Win32`子系统的内核实现是`Win32k.sys`驱动,属于GUI线程的一部分,其自身没有导出表,枚举`SSSDT`表其与`SSDT`原理基本一致。

Win11系统下的MindSpore环境搭建

本文介绍了一个在Win11系统下,通过WSL2+Docker+VSCode的方案搭建了一个mindspore-gpu的编程环境。这种方案既可以实现Linux系统编程以及部署的便捷性,又可以兼顾Windows系统强大的办公软件生态,甚至还可以借助Docker达到一定的软件可迁移性和可复制性。

一键关闭 Win11 系统广告「GitHub 热点速览」

不知道读者中有多少人早已对 Windows 11 系统自带的广告感到厌烦,却又不知道如何关闭它们?虽然网上有详细的关闭教程,但是都需要逐一手动操作,不是很方便。所以,今天「GitHub 热点速览」给大家带来了一款能够轻松关闭 Windows 11 系统广告的工具「OFGB」,它开箱即用、界面简洁、操...

千姿百态,瞬息万变,Win11系统NeoVim打造全能/全栈编辑器(前端/Css/Js/Vue/Golang/Ruby/ChatGpt)

我曾经多次向人推荐Vim,其热情程度有些类似现在卖保险的,有的时候,人们会因为一些弥足珍贵的美好暗暗渴望一个巨大的负面,比如因为想重温手动挡的快乐而渴望买下一辆二十万公里的老爷车,比如因为所谓完美的音质而舍不得一个老旧的有线耳机,比如因为一个铜炉火锅而期待北京那漫长而寒冷的冬天。