在 NVIDIA Jetson Nano 上用 Python 实现 WebRTC 的回声消除(AEC)并不容易——官方没有现成的 Python 接口,ARM 架构下编译 WebRTC 也麻烦,相关教程更是寥寥无几。本文将带你一步步在 Jetson Nano 的 Ubuntu 系统中完成安装与集成。本人是新手,一点点尝试并且安装成功,主要是记录防止后期忘记。有大佬有更好的方法希望可以指导我。

首先git下相关包

git clone https://github.com/xiongyihui/python-webrtc-audio-processing.git

下载完成后

cd python-webrtc-audio-processing

修改 setup.py 排除 *_win.cc(把win相关代码删掉)
打开 setup.py 找到这段(大概在 26–31 行,这是代码中本来就有的代码块)

ap_sources = []
ap_dir_prefix = 'webrtc-audio-processing/webrtc/'
for i in range(8):
    ap_sources += glob(ap_dir_prefix + '*.c*')
    ap_dir_prefix += '*/'

在这段代码后加入一下代码

# 在非 Windows 平台上排除 Windows 专用的 *_win.cc 源文件
if os.name != 'nt':
    ap_sources = [s for s in ap_sources if '_win.' not in s]

完整片段应类似这样:

ap_sources = []
ap_dir_prefix = 'webrtc-audio-processing/webrtc/'
for i in range(8):
    ap_sources += glob(ap_dir_prefix + '*.c*')
    ap_dir_prefix += '*/'

# 在非 Windows 平台上排除 Windows 专用的 *_win.cc 源文件
if os.name != 'nt':
    ap_sources = [s for s in ap_sources if '_win.' not in s]

rw_lock_generic_path = os.path.join('webrtc-audio-processing', 'webrtc', 'system_wrappers', 'source', 'rw_lock_generic.cc')
condition_variable_path = os.path.join('webrtc-audio-processing', 'webrtc', 'system_wrappers', 'source', 'condition_variable.cc')

然后执行以下代码

python setup.py build
python setup.py install

现在就安装完成
可以使用以下代码测试

import webrtc_audio_processing
print(webrtc_audio_processing.__file__)

会获取以下信息就表示安装成功
在这里插入图片描述

使用示例

from webrtc_audio_processing import AP  # AP = AudioProcessingModule
ap = AP(
    aec_type=1,          # 0=关AEC, 1=开AEC
    enable_ns=True,      # 开噪声抑制
    agc_type=0,          # 看需要,0=关AGC
    enable_vad=False     # 自带的VAD
)

但是目前用WebRTC的效果并不理想,做中途打断的时,ai边说话边录音的语音识别效果很差,如果有大佬希望可以指导一下。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐