音频3A——初步了解音频3A

文章目录

  • 前言
  • 一、3A使用的场景和原理
    • 1.AEC
    • 2.AGC
    • 3.ANS/ANR
    • 4.硬件3A和软件3A的区别
      • 1)层级不同
      • 2)处理顺序不同
      • 3)优缺点
    • 5.处理过程
  • 二、3A带来的问题
  • 三、开源3A算法
  • 总结


前言

在日常的音视频通话过程中,说话的双端往往会面对比较复杂的场景,比如:环境存在较大的噪声,扬声器需要开启外放导致麦克风重新采集到,麦克风固定而人物需要走来走去等等的场景。

而为了面对这些复杂的场景,音频通话不得不引入算法对于声音进行预处理,再进行发送给远端。而3A是对于音视预处理的三种算法的统称。这三种算法分别是:

  • AEC(Acoustic Echo Cancellation):声学回声消除
  • AGC (Automatic Gain Control):自动增益控制

以及硬件3A和软件3A中不同的降噪技术:

  • ANS (Automatic Noise Suppression) : 自动噪声抑制(软件噪声抑制算法)
  • ANR(Active Noise Reduction):主动噪声消除(硬件噪声抑制算法)

本篇文章中,会对3A的应用场景、基本原理、一些开源的3A库、以及引入3A会带来哪些问题做详细的介绍


|版本声明:山河君,未经博主允许,禁止转载

一、3A使用的场景和原理

1.AEC

  • 解决问题:消除回声,尤其是在通话或会议过程中,扬声器声音被麦克风拾取,导致反复回传形成回声。
  • 应用场景:视频会议、电话会议、语音助手等涉及麦克风和扬声器同时使用的场景。
  • 工作原理:AEC 技术通过比较输入音频信号和输出信号,识别并减弱回声部分,确保只有原始的语音信号被传输。

2.AGC

  • 解决问题:自动调节音量,使得音频信号的强度保持在一个稳定的范围内,防止声音过大或过小。
  • 应用场景:语音通信、录音、音频采集系统中,用于在距离、音量差异较大的情况下确保音量一致性。
  • 工作原理:AGC 监测输入信号的电平,当声音过弱时自动提高增益,过强时降低增益,从而保证输出信号的音量在适当范围内。

3.ANS/ANR

ANS和ANR虽然目的都是为了降低音频通话过程中产生的噪声,但是两者在使用时机和原理上,存在很大的区别,具体

  • 解决问题:抑制背景噪声,如风声、键盘声、交通噪声等,以提高语音的清晰度和质量。
  • 应用场景:语音通信、会议、录音、语音识别等场景,特别是在嘈杂环境中进行的音频处理。
  • 工作原理:ANS 技术通过分析音频信号中的噪声成分并将其过滤,保留清晰的语音部分,从而提高音质。而ANR是通过使用麦克风捕捉环境噪声,并产生与噪声相位相反的声音信号来进行噪声抵消。

4.硬件3A和软件3A的区别

1)层级不同

  • 硬件3A是通过专用的音频处理芯片或设备在硬件层面实现的音频增强功能,如自动增益控制、回声消除和噪声抑制。
  • 软件3A通过音频处理算法和数字信号处理(DSP)在软件层面实现,包括在移动设备或电脑上运行的音频增强功能。

2)处理顺序不同

  • 硬件3A处理顺序:AEC->ANR->AGC
  • 软件3A处理顺序:AEC->AGC->ANS

产生不同的原因:
硬件3A往往需要处理实时性高的任务,因此ANR被提前应用,因为硬件可以更高效地处理环境噪声,减少低频噪声干扰,再进行增益控制。

而软件3A通常以灵活性为目标,处理复杂的噪声场景,因此优先进行增益控制,然后再通过算法进行噪声抑制,以确保语音信号在处理前后的一致性。

3)优缺点

硬件3A软件3A
延迟低延迟: 由于硬件直接处理信号,通常具有较低的延迟由于音频信号需要经过处理器的计算,可能会带来一定的延迟
成本开发和制造专用硬件需要较高的成本,且设备升级或维修困难依赖现有的处理器和硬件,不需要额外的音频处理芯片,从而降低了成本
性能专用硬件可以更有效地处理音频信号,节省系统的CPU和电源资源,特别在移动设备或嵌入式系统中表现更好软件处理音频通常需要占用设备的CPU和内存资源,可能影响其他应用的运行
扩展性硬件方案较为固定,不容易根据不同场景需求进行调整或升级软件可以通过更新或升级实现新功能,而无需更换硬件设备
维护硬件处理通常是固定的,保证了一定的一致性和稳定性软件算法可以根据不同的需求进行调整和优化

5.处理过程

这里以硬件3A举例

在这里插入图片描述

整体3A工作流程如下:

  1. 近端麦克风采集到Noise, Speaker和人声
  2. AEC通过AF(滤波器)模拟回声通道,再通过NLP进行非线性回声消除
  3. 通过ANR进行噪声抑制
  4. 通过AGC进行音量增益
  5. 通过EQ和CNG增加语音舒适度(非必须)再发送到远端

二、3A带来的问题

既然3A能够带来那么多的好处,为什么使用场景上通常只是在音频通话中使用呢? 例如演唱会、音乐会等等不使用呢?并且在实际场景中,还要根据环境不同进行调节参数呢?

下面来看一看3A引入的一些问题:

  1. AEC(声学回声消除)相关问题:
  • 误消除问题:在回声和语音信号难以区分时,AEC可能误将真实语音当作回声进行消除,导致语音部分被削弱或失真。
  • 延迟引发的失效:AEC依赖于精确的时间同步,如果延迟过大,回声消除器可能无法及时捕捉并处理回声,导致回声仍然存在。
  • 双讲问题:当两个人同时说话时,AEC 可能无法准确处理双向回声,从而导致语音不清晰或部分对话丢失。
  1. AGC(自动增益控制)相关问题:
  • 过度增益调整:AGC可能会导致音量波动过大,特别是在安静的环境下,它会试图放大背景噪声,导致不必要的噪声变得明显。
  • 语音动态损失:在音乐或情感丰富的对话中,AGC可能削减声音的动态范围,使得声音显得过于平淡,失去了原有的情感表现。
  • 慢速反应:AGC可能会对快速变化的音量反应不及时,导致声音过大会有突然的削弱,或者在突然安静后有一段时间声音仍然较高。
  1. ANS(自动噪声抑制)相关问题:
  • 语音质量下降:ANS在过度抑制背景噪声时,可能会削减语音的自然部分,导致语音失真或听起来不自然、机械化。
  • 残留噪声或伪影:在抑制噪声时,ANS有时会留下残余噪声或产生伪影音效(如“嗡嗡”声),特别是在环境噪声复杂或变动较大的情况下。
  • 适应性不足:对于突发性或非持续性的噪声,ANS可能不够灵敏,导致这些噪声在处理时被漏过或抑制效果较差。
  1. 综合问题:
  • 处理延迟:音频3A技术的处理通常需要一些计算时间,特别是对于实时通话应用,这些延迟可能会影响自然的对话流畅性,导致讲话者之间出现不自然的停顿。
  • 复杂环境表现不足:在非常复杂的音频环境下(例如同时存在回声、噪声和音量差异),音频3A系统可能无法同时应对所有问题,导致回声未完全消除、噪声仍然存在或音量波动不稳定。
  • 算法适应问题:音频3A技术往往需要根据不同的环境和设备进行优化。如果没有正确调校,音频质量反而可能受到负面影响,尤其在不同设备(如不同品牌麦克风、扬声器)或不同声学环境中,可能会表现不一致。

三、开源3A算法

下面介绍一些常用的3A开源算法库

介绍功能优点缺点git地址
webrtc最为广泛使用的实时音频处理库之一AEC、AGC、ANS 、VAD(语音检测技术)功能丰富(不仅仅是3A)、跨平台、社区活跃、低延迟场景使用复杂度高、性能高、调节困难webrtc地址
SpeexDSP轻量级的开源音频处理库,适合低功耗或嵌入式设备AEC、AGC、ANS轻量级、易于集成、低功耗和低延迟功能不如 WebRTC 丰富、更新较少、高噪音环境表现一般SpeexDsp地址
PulseAudio AEC ModuleLinux 上常用的音频管理系统,它的模块中集成了回声消除功能,可以结合 WebRTC AEC 模块AEC(基于 WebRTC)无缝集成到桌面和应用程序中、基于 WebRTC、易用性局限于 Linux 平台、使用体验有时受限于 PulseAudio 的整体设置、仅提供回声消除功能PulseAudio 地址
RNNoise基于深度学习的噪声抑制库,通过机器学习模型有效减少环境噪音ANS(基于神经网络)在复杂的噪声环境中效果非常好,特别适合高噪声背景下的语音通信,高效且低延迟,可以根据不同场景进行模型的训练和微调只支持噪声抑制,训练模型难度,平台支持有限RNNoise地址

总结

  • WebRTC Audio Processing:功能全面,适合复杂的实时音频通信应用,但复杂且资源占用较大。
  • SpeexDSP:轻量、简单,适合嵌入式和低功耗设备,但功能较为基础。
  • PulseAudio AEC:适合 Linux 桌面应用,集成简单,但功能相对较少。
  • RNNoise:神经网络噪声抑制效果好,适合高噪声环境,但需要与其他库结合使用。

总结

本篇文章是先对音频3A的概念和一些常用的开源算法的介绍,后面博主会结合实际一一对3A中的算法进行介绍,实际上个人也是从事音视频开发工作后才慢慢了解到这些知识,为了梳理和避免遗忘才坚持在写博客,如果有些不足的地方还希望读者能够指点出来。

如果对您有所帮助,请帮忙点个赞吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/148486.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

2. 程序结构

在本章中,我们将开始做一些真正称得上编程的事情。我们将扩展对 JavaScript 语言的掌握,不再局限于目前所见的名词和句子片段,而是能够表达有意义的散文。 表达式和语句 在第 1 章中,我们创建了值,并应用运算符来获取…

CSS的背景属性

background-colcor属性 设置背景颜色 width: 200px;height: 200px;background-color: aqua; background-image属性 设置元素的背景图像 元素的背景是元素的总大小,包括填充和边界(不包括外边距)默认情况下background-image属性放置在元素的…

Seata学习笔记

目录 Seata的三大角色 角色 相关流程 相关事务模式 AT 模式(默认模式) 概述 整体机制 分析 XA 模式 概述 机制 分析 TCC 模式 概述 机制 分析 SAGA 模式 概述 机制 分析 参考: Seata的三大角色 角色 TC (Transaction Co…

STC89C52定时器与中断 详细介绍 0基础入门

STC89C52定时器与中断 前言定时器/计数器定时器/计数器 功能选择定时器/计数器 模式选择使用寄存器进行功能选择与模式选择 中断使用寄存器进行中断配置中断执行操作 总结完整程序 前言 对于定时器与中断,这是两个完全不同的概念,在单片机中它们也对应着…

C++的哲学思想

C的哲学思想 文章目录 C的哲学思想💡前言💡C的哲学思想☁️C底层不应该基于任何其他语言(汇编语言除外)☁️只为使用的东西付费(不需要为没有使用到的语言特性付费)☁️以低成本提供高级抽象(更…

WebAssembly进阶,vue3 使用 WebAssembly,及 WebAssembly vs JavaScript 的性能对比

目录 核心使用步骤 .c文件.cpp文件编译 使用 Emscripten 转译文件 页面中引入.wasm文件中的函数 WebAssembly vs JavaScript 的性能对比 性能对比关键点: 具体场景 实际案例分析 如果对WebAssembly不熟悉可以前往:WebAssembly最详教程,进行WebAssembly基础学习 Web…

【有啥问啥】Stackelberg博弈方法:概念、原理及其在AI中的应用

Stackelberg博弈方法:概念、原理及其在AI中的应用 1. 什么是Stackelberg博弈? Stackelberg博弈(Stackelberg Competition)是一种不对称的领导者-追随者(Leader-Follower)博弈模型,由德国经济学…

【LVIO-SLAM】 激光slam理论与实践

【LVIO-SLAM】 激光slam理论与实践 1. 激光slam理论与实践1.1 2D激光SLAM1.2 3D激光SLAM 2. 激光雷达运动畸变去除2.1 Lidar数学模型与点云去畸变2.2 运动畸变 3. 激光slam的前端配准3.1 帧间匹配3.2 3.2 ICP (Iterative Closest Point)3.3 PI-ICP (Point-to-Line Iterative Cl…

ubuntu22 解决docker无法下载镜像问题

参考在 Ubuntu 中安装 Docker_ubuntu安装docker-CSDN博客 安装docker完成后,运行如下命令验证 Docker 服务是否在运行: systemctl status docker 运行(sudo docker run hello-world)例子报错: 问题:Docker…

Vue 内存泄漏分析:如何避免开发过程中导致的内存泄漏问题

一. 引言 Vue 作为一款流行的前端框架,已经在许多项目中得到广泛应用。然而,随着我们在 Vue 中构建更大规模的应用程序,我们可能会遇到一个严重的问题,那就是内存泄漏。内存泄漏是指应用程序在使用内存资源时未正确释放&#xff…

iPhone 16 还剩一个月,微软开源新技术让手机以 6 倍速度提前跑上大模型

作者 | 微软亚洲研究院 责编 | 王启隆 出品 | AI 科技大本营(ID:rgznai100) 随着人工智能技术的飞速发展,将大语言模型(LLMs)部署到边缘设备上已成为当前 AI 领域的一个热门趋势。这一趋势不仅体现在微软 Windows 11 AI PC 等产品…

【Qualcomm】高通SNPE框架简介、下载与使用

说明:基础内容!不建议订阅!不建议订阅!不建议订阅! 目录 一 高通SNPE框架 1 SNPE简介 2 QNN与SNPE 3 Capabilities 4 工作流程 二 SNPE的安装与使用 1 下载 2 Setup 3 SNPE的使用概述 一 高通SNPE框架 1 SNP…

Axure精选各类组件案例集锦:设计灵感与实战技巧

在设计大屏页面时,设计师们面临着如何构建丰富、直观且用户友好的界面的挑战。幸运的是,Axure等强大的原型设计工具提供了丰富的可视化组件库,为设计师们提供了无限的设计灵感和实战技巧。本文将通过精选的各类组件案例,探讨大屏设…

综合题第二题(路由器的配置)

题目 如何计算子网掩码 我们可以观察到上图的IP地址后面有“/26”、“30”。我们都知道子网掩码是由多个连续“1”和多个连续“0”组成的,“、26”表示子网掩码的二进制表达中有26个1。 例如:156.95.9.128/26 1111 1111.1111 1111.1111 1111.1100 0000…

摒弃“流量思维”,以精准流量驱动企业发展——基于开源 AI 智能名片、链动 2+1 模式及 O2O 商城小程序的思考

摘要:本文深入探讨在当前竞争激烈的营销环境下,摒弃“流量思维”的紧迫性与必要性。强调做内容营销不能仅仅局限于发文案,而应摆脱一味追求阅读量、推荐量和粉丝数的误区,聚焦于获取精准流量。结合开源 AI 智能名片、链动 21 模式…

??实验——完全使用Ansible部署多台服务器的服务

文章目录 需求两台Web服务器部署同一Web应用WeCenter,且两台服务器的用户上传的数据目录挂载到共享存储服务器中,总数据保存在一台数据库服务器中使用sersync简单实现两台共享存储服务器之间的Web应用共享数据目录的数据同步每天定时将两台Web服务器的We…

中国中车在线测评考的啥?大易题库如何通过|附真题型国企题库通关秘籍和攻略

言语理解题目:这类题目主要考察你的语言理解和表达能力,例如,给你一个段落,让你根据段落内容选择最合适的答案。要点是快速捕捉文段中的关键信息,理解作者的意图和观点 逻辑推理题目:这类题目需要你从一组…

盘点那些功能强大的思维导图在线工具,你用过几个

如果我们日常遇到比较繁杂的信息需要梳理,那我比较推荐使用思维导图在线工具进行梳理。这些工具可以通过图形化的方式展示各种信息之间的关系。这篇文章我将要介绍几款好用的思维导图工具帮我们更好的组织思维。 1.福晰思维导图 链接一下:https://www.…

RAG技术全面解析:Langchain4j如何实现智能问答的跨越式进化?

LLM 的知识仅限于其训练数据。如希望使 LLM 了解特定领域的知识或专有数据,可: 使用本节介绍的 RAG使用你的数据对 LLM 进行微调结合使用 RAG 和微调 1 啥是 RAG? RAG 是一种在将提示词发送给 LLM 之前,从你的数据中找到并注入…

记录:ubuntu20.04的安装和必要的开发准备

记录ubuntu20.04的安装和必要的开发准备 准备1. 安装ubuntu20.04时的Tips2. 屏幕亮度调节问题3. 解决 "No Wi-Fi Adapter Found"4. Nvidia Driver && cuda5. 修改安装源6. ssh 远程开发 准备 没有装双系统,只有 ubuntu20.04,记录安装之…