Cleer Arc5耳机深度学习去混响实现

你有没有遇到过这种情况:戴着耳机在客厅走动时给朋友打电话,对方却说你“像在桶里说话”?或者在地铁站喊“嘿 Siri”,结果助手压根没反应?🤯

问题的根源,往往不是麦克风不够多,而是 声音在空气中“撞来撞去”产生的混响 。墙壁、天花板、地板……每一次反射都在语音上叠加一层“回音拖尾”,让原本清晰的人声变得模糊不清。传统降噪算法对此束手无策——它们擅长对付风噪、车流声这类“背景音”,但对混响这种和语音融为一体的时间拉伸效应,几乎无解。

直到现在。

Cleer Arc5 耳机跳出了传统信号处理的框架,用一个藏在芯片里的 微型神经网络 ,实时“听懂”并抹去那些多余的反射声。它不靠复杂的物理建模,也不需要手动调参,而是像人脑一样,从成千上万种房间、距离、噪声组合中学会了“什么是干净的语音”。

这背后,是一场嵌入式AI与声学工程的精密共舞。


我们先来看看它是怎么“听见世界”的。Cleer Arc5 每只耳机配备了三颗高信噪比 MEMS 麦克风,整副耳机形成一个 6 麦阵列。这个布局可不是随便放的:

  • 两颗组成差分结构,专门用来做波束成形,像聚光灯一样锁定你嘴部方向;
  • 第三颗则朝向外部环境,捕捉“纯噪声样本”,为后续处理提供参考。

信号进来后第一步,是同步对齐和增益均衡——毕竟不同位置的麦克风收到的声音有微小延迟,得先“对齐时间”。接着,系统通过短时傅里叶变换(STFT)把时域信号转成频域表示,得到幅度谱和相位谱。这一步很关键,因为神经网络更擅长在频域“看图说话”。

import torch
import torchaudio

def stft_transform(audio, n_fft=512, hop_length=256):
    """
    输入:时域音频张量 (B, T)
    输出:复数频谱 (B, F, T')
    """
    spec = torch.stft(
        audio,
        n_fft=n_fft,
        hop_length=hop_length,
        window=torch.hann_window(n_fft),
        return_complex=True
    )
    return spec

# 幅度谱与相位谱分离
magnitude = spec.abs()
phase = spec.angle()

当然,这段代码只是训练阶段的模拟写法。真正在耳机里跑的时候,这些 FFT 运算都是由硬件加速器完成的,功耗低到可以忽略不计 💡。

接下来才是重头戏:那个能在 20ms 内完成推理的轻量级神经网络。

Cleer 采用的是 CRN-LSTM 混合架构 ——听起来很高大上,其实思路很直观:先用卷积层“扫描”频谱图上的局部模式(比如某个频率突然变强是不是语音爆发),再用 LSTM 捕捉时间轴上的动态变化(比如一个音节如何随时间展开)。整个模型像个编码器-解码器结构,最终输出一个“频谱掩码”,告诉系统哪些部分该保留、哪些是混响该削弱。

import torch.nn as nn

class CRNDereverb(nn.Module):
    def __init__(self, in_channels=1, out_channels=1, hidden_dim=128):
        super().__init__()
        # 编码器:下采样卷积
        self.enc1 = nn.Conv2d(in_channels, 32, kernel_size=(3,3), stride=(2,2))
        self.enc2 = nn.Conv2d(32, 64, kernel_size=(3,3), stride=(2,2))

        # 序列建模:双向LSTM
        self.lstm = nn.LSTM(input_size=64*64, hidden_size=hidden_dim, bidirectional=True, batch_first=True)

        # 解码器:上采样反卷积
        self.dec1 = nn.ConvTranspose2d(2*hidden_dim//64, 32, kernel_size=(3,3), stride=(2,2))
        self.dec2 = nn.ConvTranspose2d(32, out_channels, kernel_size=(3,3), stride=(2,2))

        self.mask_activation = nn.Sigmoid()

    def forward(self, x):
        h = torch.relu(self.enc1(x))
        h = torch.relu(self.enc2(h))

        B, C, F, T = h.shape
        h = h.permute(0, 3, 1, 2).reshape(B, T, -1)

        h, _ = self.lstm(h)
        h = h.reshape(B, T, 2*hidden_dim//64, F).permute(0, 2, 3, 1)

        h = torch.relu(self.dec1(h))
        mask = self.mask_activation(self.dec2(h))

        return mask

别被这段代码吓到——真实部署的版本早已不是标准 PyTorch 模型了。它经过了 INT8 量化、通道剪枝、LayerNorm 替换等一系列优化,参数量压缩到 500KB 以内 ,内存占用控制在 768KB 以下,完全能在 DSP 上流畅运行。

说到性能,有几个数字特别值得提一提:

参数 数值
模型推理延迟 <20ms
频率响应范围 100Hz – 8kHz
AI协处理器功耗 <3mW
训练数据集 自建60小时多条件语音数据库

尤其是那个 <20ms 延迟 ,意味着从你开口到语音被净化完毕,还不到一帧视频的时间。ITU-T G.114 标准建议 VoIP 单向延迟不超过 150ms,而 Cleer 把核心处理环节压到了极致,给其他模块留足了余量。

那它是怎么做到“适应各种环境”的呢?

秘密在于两个字: 端到端 。传统方法需要先估计房间 RT60(混响时间),再调整滤波器参数,每换一个环境就得重新校准。而 Cleer 的模型直接以 SI-SNR 作为损失函数进行训练,目标非常明确——“让输出语音尽可能接近干净录音”。它的输入是带混响的频谱,输出就是去混响后的估计结果,中间所有决策都由网络自动完成。

更聪明的是,它内置了一个轻量级 RT60 估计算法,能实时感知当前环境的混响强度,并动态调节去混响力度。你在安静书房说话时,处理强度自动降低,避免过度处理导致语音失真;走进商场或地铁站,系统立刻加大抑制力度,确保语音特征不被扭曲。

而且,这套模型支持 OTA 更新!🎉
官方称之为“越用越聪明”的能力。耳机在本地匿名收集难样本(比如多次唤醒失败的片段),上传至云端用于再训练,新版本模型通过固件升级推送到设备。这意味着你买的不仅仅是一副耳机,更像是订阅了一项持续进化的语音服务。


再来看看整个系统的协作流程:

[麦克风阵列]
     ↓
[AFE前端模拟电路] → [ADC] 
     ↓
主控SoC(Apollo4 Blue Plus)
├── DSP Core(Cadence Tensilica HiFi 4)
│   ├── 波束成形引擎
│   └── 深度学习去混响模型(TensorFlow Lite Micro)
├── BLE & Audio Codec
└── AI Accelerator(Neural Processing Unit)

这套“双核协同”架构相当讲究。VAD(语音活动检测)先用一个极轻量 CNN 判断是否有语音,避免空转耗电;一旦触发,波束成形先粗略聚焦人声方向,然后才交给深度学习模型精细打磨。最后通过 iSTFT 和相位补偿还原成时域信号,送往蓝牙编码器或本地 ASR 引擎。

整个链条环环相扣,每一环都在为下一环减负。

实际体验上,几个典型场景的表现令人印象深刻:

场景 传统耳机痛点 Cleer Arc5解决方案
室内步行通话 墙壁反射严重,语音浑浊 实时去混响提升MOS评分0.8以上
地铁站唤醒助手 车辆进站回声强烈 结合去混响+关键词增强,唤醒率提升37%
视频会议免提模式 远讲失真 支持0.5米外拾音仍保持高清晰度
户外骑行 风噪+隧道混响叠加 多模态融合降噪链路联合处理

据 AV Access 等第三方测试,在标准会议室环境(RT60 ≈ 0.9s)下,Cleer Arc5 的去混响效果已接近 Shure MXA910 这类专业会议麦克风的水平。要知道,后者可是上千美元的设备。

当然,这一切的背后是大量工程取舍的结果。

比如模型轻量化方面,他们果断放弃了 BatchNorm——虽然训练稳定,但在嵌入式环境下内存开销太大,改用 LayerNorm 后显著降低了访存压力。又比如功耗控制,AI 模块只在 VAD 检测到语音时才启动,配合 DVFS(动态电压频率调节),实现了“高性能”与“长续航”的平衡。

隐私也考虑得很周全:所有语音数据均在本地处理,原始音频绝不上传云端。OTA 模型更新采用差分隐私加密签名验证,防止恶意注入。


回头看,Cleer Arc5 的真正突破,不只是加了个“AI去混响”功能标签,而是重新定义了 TWS 耳机的语音采集范式。

过去十年,我们见证了耳机从“听音乐工具”变成“智能交互入口”。但要真正胜任“个人语音代理终端”的角色,必须解决开放环境下的语音可懂度问题。Cleer 用一个精心裁剪的 CRN-LSTM 模型给出了答案: 在边缘侧实现高质量、低延迟、自适应的去混响处理,技术上已经可行。

未来几年,随着 NPU 算力进一步下放,类似方案会迅速普及。也许很快,“能不能听清我说话”,将不再是无线耳机的短板,反而成为区分高端与平庸的核心指标之一。

而这副小小的耳机里藏着的,不只是算法,更是一种趋势: 声音的理解,正从“规则驱动”走向“认知驱动” 。🎧✨

更多推荐