ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

AI语音前端处理模组AU-60:降噪、回声消除与AGC实战解析

AI语音前端处理模组AU-60:降噪、回声消除与AGC实战解析 做音频的朋友应该都有同感真正难的不是把声音放出去而是把声音收干净。无论是给客户做对讲产品还是调视频会议终端只要环境一吵、距离一远人声就淹没在噪声里再贵的喇叭也白搭。最近我拿到一块AU-60全功能AI语音处理模组属于典型的AI语音前端方案。简单说它把降噪、回声消除、去混响、自动增益这些原本要靠一堆DSP代码才能实现的功能集成到一个带NPU的模组里麦克风拾音后先过它这一层再给后级编码或功放输出的人声干净、稳定几乎不需要再在主机端做额外处理。如果你正被底噪、回声、声音忽大忽小这些问题折腾或者在做音频方案选型这篇文应该能帮你省几天时间。1. 需求拆解为什么音频处理模组成了刚需1.1 从听得到到听得清语音链路的痛点在哪如果你做过语音产品一定遇到过这种场景在客户演示的时候风扇、空调、人来人往的脚步声全被麦克风收进去对方在电话那头不停说你那边好吵。很多时候硬件设计没有问题喇叭、麦克风、编解码器都是高规格的但整体听感就是差。问题往往出在语音前端——麦克风采集到的原始信号里人声和噪声是混在一起的如果没有在信号进入编码器之前做处理后面再用什么AGC、EQ都救不回来。尤其是这几类场景最典型一远场拾音。会议室里说话人离麦克风两三米直达声衰减严重反射声和混响占比变大听起来就像蒙着一层纱。二多设备同时出声。视频会议里的对方声音从喇叭播放出来又被本地麦克风二次采集形成回声对方听到自己的声音像在山谷里绕圈。三非平稳噪声比如键盘声、关门声、盘子碰撞声这些用传统频谱减法很难滤干净因为它们的频谱特性一直在变。四不同说话人音量差很多有人在五米外喊有人凑在嘴边轻声说输出忽大忽小听众只能不停调音量。这些痛点存在很多年传统DSP也在做但调参调到怀疑人生。我之前在项目里用自适应滤波器和谱减法做降噪滤波器长度、步进因子、噪声更新速率全都手调调好一个会议室场景换个工厂环境又不行了。AU-60这类AI模组为什么流行本质上就是它把很多原来靠手工调的参数换成了数据驱动训练出来的模型泛化能力好得多。不管是智能音箱唤醒、远程会议通话还是门禁对讲大家需要的不再是能响而是听得清。这正是AU-60这类模组存在的意义。1.2 通用DSP方案与AI方案怎么选并不是说传统DSP落后在强实时、低功耗、固定场景下它依然有优势。但如果你做的是需要快速落地、场景又不固定的产品AI方案能省大量调优时间。AU-60比较有意思的是它没有完全偏向AI而是把AEC回声消除、AGC自动增益控制这些经典算法用DSP核实现把神经网络推理交给NPU核两条腿走路。这样既能保证低延迟又能处理复杂噪声。我做了一张对比表方便你按自己项目情况判断对比项传统DSP方案AU-60这类AI方案部署难度需要自己调滤波器参数、噪声门、压缩器固件内置算法AT指令切换场景噪声适应性稳态噪声较好非稳态噪声容易误伤语音数据驱动能处理键盘声、狗叫、金属摩擦等复杂噪声回声消除效果线性AEC后残留回声较多神经网络后处理进一步消除残差延迟通常较低可到2-3ms16kHz模式约10-20ms仍满足通话要求人力成本调参周期长换场景要重新调训练一次模型可覆盖多场景适合中小团队选型时建议先算账你的产品是室内固定位置还是移动场景麦克风数量是单麦还是阵列功耗和成本是否敏感如果只是简单对讲机传统DSP可能就够了如果是会议终端、智能音箱、直播声卡这类对音质要求高的AI语音处理模组会平滑很多。AU-60我们上手第一感觉是它把所有算法打包进了一个固件包不用自己拼算法开发量主要花在调参和测试上而不是从零写算法。对团队规模不大的项目来说这点非常关键。2. 核心功能拆解AU-60具体做了哪些事2.1 AI降噪不是简单的频谱减法很多人一听到降噪觉得就是给信号做个高通滤波把低频嗡嗡声滤掉或者做个频谱减法把噪声频段的能量减掉。其实对于语音来说真正的难点在于区分哪部分是噪声哪部分是人声。AI降噪的核心是训练一个模型建立从带噪频谱到干净频谱的映射关系。AU-60用的模型结构据我知道的是基于RNN和卷积混合能够在低算力下完成实时推理一块0.5TOPS的NPU跑16kHz双麦输入单帧处理延迟在10ms以内。我用它做了个实验把手机放在旁边播放厨房综艺节目人站在一米外说话AU-60输出的人声依然清晰背景的锅碗瓢盆声基本被压掉。而传统谱减法把轻微底噪去掉的同时人声有明显音乐噪声也就是那种水声。AU-60的输出非常干净人声呼吸和齿音保留得很好不像有些降噪把人声削成机器人这也是AI降噪和传统算法最大的听感区别——你会觉得声音依然自然只是背景安静了。另外AU-60支持多麦克风阵列输入可以做波束成形。所谓波束成形通俗理解就是在空间上找方向——哪边有说话人就把麦克风的听的灵敏度往那边集中同时抑制其他方向的声音。双麦克风阵列配合es8311这类编解码器是经典组合AU-60可以直接吃PDM或I2S信号不需要额外接模拟前端。当然如果你用的是模拟麦克风也可以先通过Codec转成I2S再接进去不过要注意模拟走线尽量短避免引入新的噪声。2.2 回声消除与去混响解决自己听到自己和声音发空回声消除是另一个关键功能。做视频会议的朋友都遇到过自己这边喇叭放出来的远端声音被近端麦克风收进来再传回去对方就听到自己的回声。传统AEC用自适应滤波器估计从参考信号到麦克风信号的回声路径然后减掉。但实际中扬声器会有非线性失真、反射路径复杂线性滤波器效果有限。AU-60的方法是在线性AEC之后又加了一个神经网络后处理专门去残差回声效果堪比把喇叭音量调低一半。去混响相对小众但同样影响听感。你在空荡的会议室开会声音发空、有山洞声这就是混响。混响时间RT60过长会导致语音清晰度下降尤其对语音识别引擎来说混响会让特征提取混乱识别率直线下降。AU-60的去混响模块会估计混响尾音把它从直达声中分离掉。实测下来在一个玻璃墙的会议室里原本嗡嗡感很重的人声处理后变得干爽、贴近和在小房间录音差不多。这里有一个非常重要的细节回声消除必须有高质量的参考信号而且参考信号要从功放或喇叭之前取不能从功放输出之后取否则功放的失真和频响会影响AEC路径。AU-60的评估板上专门留了参考信号输入脚我一开始偷懒直接从喇叭端并联取结果AEC残响特别重后来改成在功放前取立刻干净了。这个坑必须写出来很多人调试时忽略了参考信号的位置导致AEC效果差还以为是算法不行。2.3 动态增益与均衡让音量始终稳定第三个核心功能是动态增益控制AGC。语音信号有一个特点就是动态范围特别大——大声时能到90dB SPL小声时可能只有40dB SPL。如果直接送到后级要么小声听不清要么大声爆音。AGC的作用是自动调整增益让输出电平维持在一个合理范围内。AU-60的AGC做得比较聪明它不是一刀切地压而是分快慢两种模式快模式应对突发的爆音慢模式平滑地跟随长时音量变化。除了AGC它还有个语音EQ模块。人声的有效频段大概在300Hz到3.4kHz但很多时候麦克风会拾取到它之外的噪声。AU-60会把输出的人声频段做适当的预加重和去加重让中频更突出低频轰鸣和高频齿音都被压掉。同时内置了限制器和噪声门在无人说话时能把底噪直接关掉静音状态干净得像没开麦克风。我测试时把输出接到电脑声卡用实时频谱仪看理想语音频谱基本集中在300-3400Hz。跟原始信号对比降噪后底噪功率掉得非常明显而这只是模组默认参数。如果按实际场景调AGC目标和压缩比说话距离两三米和贴脸说都能保持大致一致的响度省了后级调音台很多功夫。如果你做安防门禁或者户外对讲这个功能特别实用因为环境音量变化大没有AGC的话远一点的声音根本没人听清近一点的又震耳朵。3. 实操体验把AU-60接入真实音频链路3.1 硬件接口与典型连接方式先说说AU-60的硬件接口。以我手头这块样板为例它预留了两路I2S、一路PDM麦克风输入、一路模拟输入输出还有UART和SPI作为控制接口。供电范围是3.3V到5V板上自带LDO实测用USB的5V供电问题不大但如果你后级有大功率功放还是建议独立供电避免地环路引入噪声。典型连接方式有两种第一种是数字音频链路——麦克风阵列先接到AU-60的PDM/I2S口处理后从I2S输出到后级音频Codec比如es8311或直接到MCU。第二种是模拟链路——模拟麦克风先过前置放大器和Codec转成I2SAU-60处理完再通过内置DAC输出模拟信号后级接tda2030这类功放推喇叭。两种我都试过数字链路底噪控制明显更好因为少了模拟长走线的干扰。接线时要注意PDM麦克风的时钟线和数据线是高速信号尽量和其他走线保持距离用屏蔽地线包住。如果是双麦阵列两个麦克风的CLK可以共用但DATA要分开接并在板上预留位置放匹配电容防止时序漂移。下面是最基础的I2S连接对应表方便排查AU-60引脚对接设备说明BCLKCodec BCLK位时钟AU-60做主设备时由它输出LRCLKCodec LRCLK左右声道时钟DINCodec DOUTAU-60接收Codec的数据DOUTCodec DINAU-60输出处理后的数据AEC_REF功放前级参考信号必须从功放之前取用于回声消除UART_TX/RXMCU串口发送AT指令读取状态功率方面AU-60最高支持48kHz采样率内部跑16kHz处理模型时NPU负载大约60%整板功耗约0.3W。如果做电池供电设备可以进入低功耗模式AI处理期间才唤醒平均功耗还能再降。我实际拿万用表测过纯待机状态整板电流不到30mA对便携设备来说已经算比较友好。3.2 参数配置与模型选择AU-60的固件带有场景预设可以在串口工具里发AT指令切换。常见的有近讲、远场、音乐、会议几种模式。近讲模式适合耳机麦克风、领夹麦降噪强度中等对人声保留最多远场模式适合会议音箱波束成形开启AGC目标电平更高音乐模式关闭降噪和EQ保留最原始的音频信号会议模式则算法全开所有降噪、去混响、回声消除都会生效。参数主要通过类似AT指令集的命令配置。比如设置AGC目标电平可以写成ATAGC3设置降噪强度ATNR2。我们一般先把场景设为自动然后用音频分析仪测输出电平再逐步微调。有个小技巧每个参数都支持实时写入和保存到flash调试时有条件就开个计数器记录当前帧噪声电平看着数据调参数比盲听靠谱得多。很多时候耳听觉得好像还有一点底噪但通过数据显示其实是把音量开太大了和降噪没关系。另外AU-60支持用户自定义模型。官方提供训练工具链可以录一段自己的噪声数据在PC上训练一个专用降噪模型再烧录进模组。我尝试用办公室的人群噪声和键盘声训练了一个模型烧进去之后效果比默认的会议模式更贴合键盘的敲击声几乎完全消失。不过需要说明的是训练过程要准备足够多样本我录了两个小时音频才勉强覆盖几个人声重叠的场景否则容易出现过拟合换一个房间效果反而变差。3.3 实测数据与听感对比我在办公室里做了组简单测试拿AU-60的输出和原始麦克风信号对比用RTA软件记录三分钟平均值得到下面这份仅作参考的数据测试环境输入SNRdB输出SNRdB主观听感安静办公室2528干净底噪不可闻空调风扇1222底噪明显降低人声自然键盘敲击人声818键盘声几乎消失呼吸声保留室外街道615车流声被压掉人声清晰注意这个输出SNR是用语音活动检测划分片段算的和专业的PESQ、MOS分还不一样但趋势很明显越嘈杂的环境AU-60带来的提升越大。我更关注的是听感因为有些算法SNR数据好看但人声发闷、有金属声。AU-60默认的16kHz输出下齿音保留得不错没有明显电音感。48kHz输出下细节更多适合录音场景。我还专门做了个延迟测试用两个声卡同时录原始信号和处理后的信号对比同一个触发声音的起点。结果16kHz模式下从输入到输出约15ms48kHz模式下约20ms跟官方标注基本一致。对通话来说单程20ms以内的算法延迟完全没有问题但对直播唱歌这种需要歌手监听自己声音的场景延迟还是有点明显需要配合直接监听不能完全依赖处理后的信号。4. 常见问题与排查技巧实录4.1 底噪、电流声、杂音怎么定位音频项目里最磨人的不是AEC而是莫名其妙的底噪和电流声。按我以前的经验一旦出现滋滋声先用排除法第一断开后级功放直接戴耳机监听AU-60输出如果还是有交流声说明问题在模组或其前端如果交流声消失问题在功放或供电。第二检查电源纹波。AU-60对3.3V/5V纹波比较敏感有条件用示波器看纹波超过50mV就要考虑加大电容或换低纹波电源。我遇到过用手机充电器供电时输出电压纹波偏大整个系统都带着嗡嗡声换线性电源后立刻解决。地环路是另一个高频问题。当AU-60和电脑通过USB共地同时又和后级功放接同一组电源地线容易形成环路。实测的地环路噪声表现为连上音频线后背景里有嗡嗡声。解决方法是尽量采用单点接地或加隔离器。如果必须在USB音频和模拟输出之间共用参考地可以在信号链路上加隔离变压器。这块我们在做评估板测试时踩过好几次最后都是通过单独供电或加电源隔离解决的。4.2 驱动、格式与音频链路不兼容的坑把AU-60接到电脑时容易踩驱动和格式的坑。最常见的是Windows下声卡设备设置问题。有次我把AU-60的USB音频桥接作为默认设备结果播放TrueHD格式片源时提示音频暂时无法播放后来才发现是播放器音频输出格式和USB设备不匹配需把输出改成PCM。这个和DirectX报错是类似逻辑Windows播放音频需要驱动支持相应的音频格式如果设备只支持16bit/48kHz而播放器设置了24bit/192kHz就会出现无法播放。当前音频无法播放。DirectX驱动程序未正确安装或音像设备被禁用这样的提示。实际上排查步骤很简单先看设备管理器里有没有黄标设备有就重新装对应版本的高清晰音频管理器驱动再看播放设备默认格式调成16bit 48000Hz最后检查播放器输出设置推荐在Windows 11下也把声道改成立体声避免TrueHD让不支持的设备直接卡死。很多人遇到TrueHD播放问题往往忽略了HDMI或USB声卡带宽并非软件解码器有问题。另外在Linux环境下也会遇到电流声这个大多不是内核问题而是ALSA默认输出采样率与模组不匹配。可以在asound.conf里设置固定采样率或者在PulseAudio配置里把默认sample rate改到48000。我之前在树莓派上跑AU-60时只要一在浏览器里放视频浏览器声音和系统声音同时输出就会毛刺也是因为两个流采样率不一致。统一之后就好了。如果你用的是开发板还要注意把默认音频通道切到I2S设备不然ALSA会把信号送到板载HDMI口。4.3 与外部功放/编解码器搭配的注意事项AU-60经常要配合es8311、max98357a、tda2030这些外部芯片使用。这些芯片我们都测过踩过的坑可以列成一张速查表搭配芯片常见问题建议es8311I2C地址冲突、左右声道配置错误检查地址跳线确认寄存器配置max98357a增益过高导致削波、噪声功放输入增益调到和AU-60输出电平匹配避免超过1Vrmstda2030电源纹波大导致嗡嗡声加强电源滤波注意散热接地还有一个容易被忽略的点AU-60的AEC参考信号必须在功放之前取出而且要保证参考信号与功放输出之间的延迟一致。如果后级是非线性放大器参考信号没有取到功放输出AEC的残差就会增大。建议用固定增益的Class D功放并用AU-60的参考输入引脚监控真实输出。调试时可以在参考信号通路串一个几kΩ的电阻到地避免幅值过大削波。另外如果你用max98357a直连喇叭要注意其调制下的噪声抑制效果。max98357a的SD模式可以关断但留着会产生白噪声。实测下来把AU-60的静音脚和max98357a的SD脚联动没声音时强制关断功放系统底噪会低很多。这个联动逻辑很简单但很多开发板没有预留这个引脚导致待机时喇叭嘶嘶响只能拔电体验很差。5. 从通话到创作AU-60还能用在哪些地方5.1 远程会议与在线教育远程会议终端是AU-60最典型的应用场景。一个全向麦克风阵列加上AU-60就能做出一个带AI降噪的会议麦效果比传统DSP方案好很多。在线教育场景里老师一侧用AU-60拾音学生听到的人声更清晰学生端用AU-60做回声消除声音不会通过麦克风传回课堂。这个场景对延迟要求高AU-60的算法链整体延迟约20ms16kHz模式下配合网络传输不会造成明显卡顿。我试过用AU-60让两个异地会议室互通一端播放另一端的声音另一端的MIC不会收到对方说话的声音因为AEC把它消掉了。这在以前的方案里是要反复调AEC参数的现在模组自动完成。对于做Zoom、Teams、腾讯会议的外设厂商来说这就是一个标准参考设计能大幅缩短开发周期。关键是AU-60支持多通道输出可以同时输出处理后的语音和原始语音方便做录音质检或会议纪要这个设计很贴心。5.2 直播、播客与内容创作直播和播客对音质要求比通话高。AU-60的音乐模式可以直通原始音频但大多数人会用降噪模式录人声再进剪辑软件做后期。这种情况下AU-60输出的干净人声会让后期工作轻松很多。比如我用ComfyUI跑音频人声工作流时输入源如果带着大量噪声分离出来的人声会有破音但经过AU-60预处理后人声分离的效果明显更干净。可以说AU-60是后端AI音频工具链的理想前端。做播客时双麦访谈是最烦的两个麦克风互相拾取对方人声。AU-60的波束成形加回声消除可以大幅降低串扰让每个声道都只保留离它最近的说话人。实测下来两个麦克风距离1.5米互相串扰降低到可以忽略。这个功能对独立播客创作者非常友好不用买贵价的阵列麦克风两个普通麦克风加一块AU-60就能实现接近专业采访麦的效果。5.3 智能硬件与机器人交互最后是智能硬件。智能音箱、门禁对讲、服务机器人核心诉求都是远场语音唤醒和识别。AU-60扮演的是语音前端处理器的角色在信号进入唤醒引擎之前先把远场噪声、混响、回声都处理掉提高识别准确率。现在很多离线语音识别模块扛不住唤醒原因就在麦克风信号太脏。加一个AU-60前级识别率提升立竿见影。我朋友做了一套小区门禁对讲方案原来用的是普通DSP露天环境下环境风声导致对方听不清。换用AU-60之后风噪和路边车流声基本都能压掉通话清晰度一下子上了档次。当然这类产品还要注意防水和长线缆干扰AU-60更适合集成在室内或靠近麦克风的位置长距离传输建议用数字音频格式。如果你做的是机器人还可以用AU-60的波束成形定位说话人方向辅助机器人转向这会比纯视觉方案更省算力。最后再分享一个我自己的习惯设计音频链路时永远把源头的信号质量放在第一位不要指望后期修。AU-60这样的AI语音处理模组最大的价值是把过去只能在后期做的处理放到最前端省掉大量定位和调参的时间。如果你准备上手我建议用一块带噪声的麦克风板直接怼到评估板上听听降噪前后对比比看任何参数表都直观。音频这种东西耳朵不会骗人。
返回列表