Cleer蓝牙耳机ANC技术的演进与核心实现
你有没有试过在地铁里戴上耳机,却发现引擎嗡鸣像钻头一样往耳朵里扎?或者骑车时风噪“呼呼”作响,降噪功能仿佛失灵了一样?这些看似简单的使用场景背后,其实藏着一套极其复杂的声学对抗系统。而Cleer,正是把这套系统做到了接近物理极限的一家公司。
主动降噪(ANC)不是魔法,它是一场精密到微秒级的“声音对冲战”。它的本质是利用 声波干涉原理 ——当两个振幅相同、相位相反的声波相遇时,它们会相互抵消。Cleer做的,就是让耳机里的扬声器实时生成一个与外界噪声完全反相的声音,精准地“吃掉”那些烦人的背景音。
但这说起来容易,做起来难。现实中的噪声千变万化:有持续低沉的飞机引擎(稳态),也有突然响起的汽车喇叭(瞬态);有人声交谈这种中高频干扰,还有地铁轨道共振带来的低频震动。更别提用户佩戴松紧不同、耳道形状各异,甚至一阵风吹过都会让整个系统乱套。
所以,高端ANC耳机之间的较量,早已不再是“有没有降噪”,而是“在多复杂环境下还能稳定工作”。
从单点突破到全链路协同:Cleer ANC系统的底层架构
很多人以为ANC就是一个算法跑在芯片上,其实不然。它是一个由 声学传感 + 数字信号处理 + 反馈控制 构成的闭环系统,任何一个环节出问题,整体性能就会断崖式下跌。
Cleer的高明之处,在于它没有把这三部分割裂开来看待,而是用一种“端到端优化”的思路去设计。就像一支足球队,前锋、中场、后卫必须协同作战,才能赢得比赛。
我们先来看看这张表,它概括了不同类型ANC的技术特点:
| ANC类型 | 优势频段 | 延迟敏感性 | 典型应用场景 |
|---|---|---|---|
| 前馈式 | 中高频(>500Hz) | 低 | 办公室人声、街道噪音 |
| 反馈式 | 低频(<300Hz) | 高 | 地铁、飞机引擎嗡鸣 |
| 混合式 | 全频段覆盖 | 中 | 多场景智能切换 |
你看,前馈和反馈各有优劣。前馈能提前“看到”噪声,但对低频不敏感;反馈虽然反应慢一点,但在低频段特别准。于是Cleer选择了混合式架构—— 双管齐下,哪里需要补哪里 。
这就像是一个狙击手+侦察兵的组合:
-
外部麦克风是侦察兵
,负责第一时间发现敌情(环境噪声);
-
内部麦克风是狙击手助手
,盯着目标残余动静,随时校正弹道偏差。
两者配合,才有可能实现真正意义上的“宽频段降噪”。
麦克风怎么摆?这不是随便钻个孔的事!
你以为在耳机外壳上打个洞装个麦克风就行了吗?错!这个小孔的位置、方向、结构,都经过了无数次仿真和实测验证。
外部麦克风:不只是听,更要“看得清”
外部麦克风的任务是尽可能真实地采集外部噪声。但它面临一个大麻烦—— 风噪 。
想象一下你在跑步,风吹过麦克风孔的时候会产生湍流,形成一种类似白噪声的干扰信号,频率集中在200–1000Hz之间,正好落在人声范围内。如果系统误把它当成真实噪声来抵消,反而会在耳内制造出奇怪的压迫感,用户体验直接崩盘。
怎么办?
Cleer的做法很聪明: 不用一个麦克风,而是用两个 ,组成一个小阵列。
这两个麦克风间距约6–8mm,靠得足够近,可以认为远场声波(比如远处车流)几乎是同时到达两者的。但由于风噪是近场扰动,会在两个麦克风之间产生明显的压差。
于是就有了这样一个判断逻辑:
P_diff(t) = |p₁(t) - p₂(t)|
if P_diff > τ ⇒ 判定为风噪
一旦触发风噪标志,系统立刻降低前馈通道增益,并启用预设的抑制策略。
不仅如此,硬件上还加了多重防护:
-
金属防风网
:孔径小于0.3mm,过滤大颗粒气流;
-
迷宫式导音通道
:让空气走“S形”路径,削弱涡流强度;
-
亥姆霍兹共振腔设计
:通过调节空腔体积和颈长,使共振峰落在1.2–1.8kHz区间,恰好衰减最强的风噪频段。
这一套组合拳下来,实测风噪引起的误激活率下降了73%。👏
内部麦克风:耳朵里的“质检员”
如果说外部麦克风是“预测”,那内部麦克风就是“复盘”。它位于耳塞内部,靠近扬声器,专门监听耳道里还剩下多少没被抵消掉的噪声。
它的任务公式很简单:
e(n) = s(n) + y’(n)
其中
s(n)
是原始噪声,
y'(n)
是耳机发出的反向声波。理想情况下,两者叠加后结果为零——也就是完全抵消。
为了达到这个目标,Cleer选用了超高灵敏度的微型驻极体麦克风,尺寸不到2.0mm³,却能在200–1000Hz保持≥-42dBV/Pa的响应能力。即使是非常微弱的残余波动,也能被捕捉到。
而且这套系统具备自学习能力。当你摘下耳机再戴上,耳道密封性变了,声学路径也跟着变。传统系统可能需要十几秒重新适应,但Cleer能在 1.2秒内将误差降低25dB以上 ,快得几乎无感。
DSP是怎么“算”出那个反向声波的?
有了数据输入,接下来就要靠大脑——数字信号处理器(DSP)来决策了。
Cleer用的是业内公认的黄金算法: FXLMS(Filtered-X Least Mean Squares) 。这个名字听起来很学术,但它干的事其实很直观:不断调整滤波器参数,让输出的反向声波越来越接近理想的“镜像噪声”。
FXLMS的核心思想:梯度下降 + 物理补偿
标准LMS算法的问题在于,它假设参考信号可以直接驱动扬声器,但实际上中间还有一个“黑箱”——从扬声器到耳道的传播路径(称为次级路径 S(z))。如果不考虑这个路径的影响,滤波器更新的方向就会偏移,导致收敛失败甚至振荡。
FXLMS的精髓就在于引入了一个估计模型 Ŝ(z),先把参考信号过一遍这个模型,得到“滤波X”项:
w̄(n+1) = w̄(n) + μ·e(n)·Ŝ(z)x(n)
这样就能确保权重更新是在真实的物理条件下进行的。
Cleer在出厂前会对每副耳机做一次脉冲响应测量,获取初始的 Ŝ(z) 模型。首次开机时还会运行一段短暂的校准程序,播放伪随机噪声序列(PN码),在线拟合当前佩戴状态下的真实路径。
整个过程只需200–300ms,完成后系统就进入了高性能运行模式。
下面是简化版的次级路径辨识代码:
void secondary_path_identify(float *pn_input, float *err_output, float *s_model, int len) {
float mu = 0.01f; // 学习率
for (int n = 0; n < len; n++) {
float y_est = 0.0f;
for (int k = 0; k < FILTER_LEN; k++) {
if (n >= k) y_est += s_model[k] * pn_input[n - k];
}
float error = err_output[n] - y_est;
for (int k = 0; k < FILTER_LEN; k++) {
if (n >= k) {
s_model[k] += mu * error * pn_input[n - k];
}
}
}
}
别看只有几行,这就是让ANC系统“学会适应你”的关键一步。
实时性有多重要?延迟超过20μs就可能啸叫!
你知道吗?从麦克风采集信号,到DSP计算完成,再到DAC输出反向声波,整个环路必须在 20微秒以内完成 ,否则就会因为相位错位引发啸叫或振荡。
这相当于什么概念?
- 人类眨眼一次大约需要100毫秒 → 也就是10万微秒;
- 而ANC系统的处理时间,连眨眼时间的1/5000都不到!
为了保证这一点,Cleer采用了专用ANC SoC芯片,里面集成了独立的DSP核,专门跑降噪算法。主控MCU负责蓝牙连接、触控识别等任务,两者分工明确,互不干扰。
典型的中断服务流程如下:
__attribute__((interrupt)) void audio_frame_isr(void) {
float x_ref = read_external_mic();
float e_err = read_internal_mic();
static float x_filt[FILTER_LEN];
filter_with_S_model(&x_ref, x_filt);
float y_out = dot_product(weights, x_filt, FILTER_LEN);
apply_to_dac(y_out);
float mu = adaptive_step_size(e_err);
update_weights(weights, x_filt, e_err, mu, FILTER_LEN);
clear_interrupt_flag();
}
这个函数每10ms触发一次,全程占用不超过22μs,稳如老狗。💪
而且它还支持动态步长调节:刚开始收敛快一点(μ调大),快到位了就放慢速度(μ调小),既快又稳。
怎么应对不同的噪声类型?不能一把尺子量天下
噪声不是单一的,所以降噪也不能一成不变。
对付空调声:找它的“节奏”
很多室内噪声其实是周期性的,比如冰箱压缩机、空调风机。它们的特点是有固定的基频和一系列谐波。
Cleer的做法是用STFT分析频谱,找出能量集中的一组峰值。例如检测到60Hz、120Hz、180Hz都有强峰,那就推断存在一个60Hz的机械振动源。
这时候就可以加载对应的陷波滤波器模板,加速收敛。
Python示例代码:
def detect_periodic_noise(spectrum, fs):
peaks, _ = find_peaks(spectrum, height=0.5)
freqs = [i*fs/len(spectrum) for i in peaks]
harmonics = group_harmonic_series(freqs)
for base_f, members in harmonics.items():
if len(members) >= 3:
return base_f
return None
识别出来之后,系统可以提前“布防”,而不是被动追赶。
应对人声交谈:既要降噪,也要留耳朵
最难搞的是人声。它突发性强、频谱宽、方向多变,而且你还不能完全屏蔽——万一有人喊你名字呢?
Cleer的策略是“智能平衡”:
- 启用快速响应模式:提高FXLMS步长,缩短分析窗口;
- 结合语音活动检测(VAD):判断是否处于对话环境中;
- 必要时自动减弱降噪强度,保留部分环境音,提升安全性。
有些用户反馈:“我戴着耳机也能清楚听到同事叫我。” 这不是降噪失效,而是系统在保护你的社交感知能力。🧠
硬件布局也很讲究:扬声器相位必须对齐!
再好的算法,遇到烂硬件也是白搭。
Cleer采用的是10mm复合振膜动圈单元,出厂前每一只都要经过激光多普勒测振仪扫描,剔除有局部谐振异常的个体。
为什么要这么严格?
因为ANC依赖的是精确的相位关系。如果扬声器本身在某个频率下出现分割振动(即振膜不同区域运动不同步),就会导致声波扭曲,破坏抵消效果。
测试结果显示:
- 在500Hz以下,整体活塞运动良好,相位差<5°;
- 到1.2kHz附近开始出现弯曲模态,局部相位突变达40°;
- 超过3kHz后分割振动加剧,不再适合用于主动降噪。
因此,Cleer将ANC有效范围限定在20–1800Hz,超出部分交给被动隔音材料处理。
更重要的是,每个扬声器单元都有自己的“身份证”——一份出厂校准表(Trim Table),记录了它的群延迟曲线。每次开机,DSP都会加载这份数据,做预补偿滤波。
MATLAB生成补偿滤波器的脚本示例:
fs = 48e3;
fvec = logspace(log10(20), log10(1800), 100);
measured_group_delay = read_from_eeprom('delay_profile');
[compensator, ~] = invfreqz(...
exp(-1i*2*pi*fvec/fs .* measured_group_delay), ...
fvec, 64, 64, 'weighting', ones(size(fvec)));
coeff_c = sprintf("const float phase_comp[%d] = {%s};", ...
length(compensator), strjoin(num2str(compensator, "%.6f"), ", "));
这样一来,哪怕生产公差导致单元差异,最终表现依然一致。
功耗怎么控?不能让降噪变成“电量杀手”
TWS耳机电池容量有限,通常单耳只有30–60mAh。如果ANC一直满负荷运行,续航直接腰斩。
Cleer的解决方案是: 动态调频 + 分级调度 。
系统每隔500ms检测一次环境噪声强度,然后决定该用多大的算力:
| 环境类型 | SPL范围(dB) | DSP频率 | 采样率 | 功耗估算 |
|---|---|---|---|---|
| 安静室内 | <45 | 64 MHz | 24 ksps | 8.2 mW |
| 办公室交谈 | 45–60 | 128 MHz | 48 ksps | 14.7 mW |
| 地铁车厢 | >60 | 192 MHz | 96 ksps | 23.1 mW |
安静时用低阶FIR滤波器(8阶),嘈杂时切到64阶,既能省电又能保性能。
固件基于FreeRTOS构建,任务优先级设置极为合理:
| 任务名称 | 优先级 | 关键性 |
|---|---|---|
| ANC_ISR_Handler | 7 | 极高 |
| BT_Audio_Stream | 6 | 高 |
| Touch_Detect_Task | 4 | 中 |
| Battery_Monitor | 2 | 低 |
ANC中断永远最高优先级,确保不会被蓝牙音频或触控打断。
另外还用了双缓冲机制 + 轻量级通知唤醒,进一步减少上下文切换开销。
真实用起来怎么样?数据说话!
实验室指标好看没用,关键是真实场景的表现。
交通工具场景实测
| 噪声类型 | 频率范围 (Hz) | 开启前 (dB SPL) | 开启后 (dB SPL) | 衰减量 (dB) |
|---|---|---|---|---|
| 客机引擎 | 50–200 | 76.3 | 38.9 | 37.4 |
| 地铁轮轨 | 200–500 | 72.1 | 45.6 | 26.5 |
| 汽车胎噪 | 500–1000 | 68.7 | 52.3 | 16.4 |
可以看到,低频段压制非常猛,尤其是飞机舱内那种持续低频嗡鸣,基本被“削平”了。
有意思的是,地铁场景中启用反馈通路后,降噪效果提升了120%以上。这说明 混合式架构的价值在复杂工况下尤为突出 。
日常生活场景主观评价
| 使用场景 | 平均背景声压 (dB) | 主观听感评分(满分10分) | 抑制带宽 (Hz) |
|---|---|---|---|
| 开放式办公室 | 58 | 8.2 | 300–2000 |
| 城市步行街道 | 65 | 7.5 | 500–3000 |
| 大型购物中心 | 62 | 7.0 | 200–2500 |
| 家庭客厅 | 55 | 8.0 | 100–2000 |
中高频段受限于物理规律,确实难以完全消除人声穿透。但Cleer通过增强麦克风指向性和情境感知,做到了“够用且安全”。
个性化适配:你的耳朵,值得专属配置
每个人的耳道都不一样,同一副耳机戴在不同人头上,效果可能差一大截。
Cleer推出了APP端的“声学适配引导系统”:播放一段测试音,通过内部麦克风采集耳道响应,分析泄漏等级和共振特性,然后下发补偿参数。
伪代码示意:
def calculate_compensation_params(response_spectrum):
leakage_band = np.mean(response_spectrum[80:150])
resonance_peak = find_max_peak(response_spectrum, 150, 400)
if leakage_band > threshold:
compensation_gain = 6.0
phase_shift = adjust_phase_curve(leakage_band)
else:
compensation_gain = 0.0
phase_shift = 0.0
if resonance_peak > 3.0 dB:
apply_notch_filter(resonance_peak['freq'], q=2.5)
return { ... }
上线后用户反馈显示:低频降噪一致性提升41%,主观不适感下降67%。🎉
更激进的是,他们还在研发 自学习型ANC ——通过联邦学习收集匿名数据,训练轻量级神经网络,实现“越用越懂你”。
比如系统发现你每天早上8:30坐地铁,就会提前加载“通勤模式”;如果你多次手动关闭降噪来听婴儿哭声,未来就会自动减弱相关频段的抑制。
目前Beta测试准确率达89.3%,手动干预频率下降54%。
极端环境也不怕:风大雨大温差大,照样稳得住
强风误触发?加速度计来帮忙!
光靠麦克风很难区分风噪和真实噪声。Cleer加了个心眼: 融合三轴加速度计数据 。
原理很简单:
- 风吹 ≠ 设备移动;
- 跑步/跳跃 ⇒ 三轴加速度同步变化。
于是有了这张决策表:
| 加速度变化幅度 | 麦克风信号强度 | 判定结果 | 控制动作 |
|---|---|---|---|
| <0.2g | >70dB | 确认为风噪 | 降低前馈增益,暂停FXLMS更新 |
| >1.0g | >70dB | 运动相关噪声 | 维持正常ANC |
| <0.2g | <60dB | 无显著干扰 | 维持当前模式 |
每100ms判定一次,20ms内完成响应,比纯音频判断准确得多。
温湿度影响?传感器+动态补偿搞定
MEMS麦克风怕湿怕冷。湿度升高会导致膜片吸湿膨胀,灵敏度下降;低温则引起前置放大器漂移。
Cleer内置了Sensirion SHT40传感器,每10秒采样一次,运行补偿算法:
void compensate_mic_sensitivity(float temp_c, float rh_percent) {
float temp_factor = 1.0 + (temp_c - 25.0) * 0.003;
float hum_factor = 1.0 - (rh_percent - 50.0) * 0.008;
float overall_gain = temp_factor * hum_factor;
set_adc_gain(ADC_CHANNEL_FF_MIC, 1.0 / overall_gain);
update_dsp_input_scaling(1.0 / overall_gain);
}
结果是:在-10°C至50°C、10%–95% RH范围内,麦克风动态范围波动控制在±1.2dB以内,远超行业平均水平。
未来已来:深度学习 + 多模态感知正在重塑ANC
端到端DNN模型:直接从声音中学“怎么降噪”
传统FXLMS依赖线性建模,对非稳态噪声束手无策。Cleer的新一代方案是用 CRNN神经网络 直接从原始音频中学习映射关系:
class EndToEndANC(nn.Module):
def __init__(self):
super().__init__()
self.cnn = nn.Sequential(
nn.Conv1d(1, 64, 3, padding=1),
nn.ReLU(),
nn.MaxPool1d(2),
nn.Conv1d(64, 128, 3, padding=1),
nn.ReLU()
)
self.lstm = nn.LSTM(128, 256, bidirectional=True, batch_first=True)
self.fc = nn.Linear(512, 1)
def forward(self, x):
x = x.transpose(1, 2)
x = self.cnn(x)
x = x.permute(0, 2, 1)
x, _ = self.lstm(x)
return self.fc(x).squeeze(-1)
模型部署在NPU上,推理延迟<15ms,实测在复杂人声环境中比传统算法多降6–8dB。
而且支持OTA更新,越用越聪明。🚀
多模态融合:不只是听,还要“感知世界”
未来的ANC不再是孤立的降噪模块,而是情境感知系统的一部分。
| 传感器 | 作用 | 示例动作 |
|---|---|---|
| 加速度计 | 判断运动状态 | 跑步时自动启用风噪抑制 |
| 气压计 | 检测海拔变化 | 飞机起飞自动加载高空模式 |
| 光传感器 | 区分室内外 | 室外增强低频降噪 |
| 温湿度传感器 | 补偿麦克风漂移 | 自动调整ADC增益 |
| 接近传感器 | 检测佩戴状态 | 摘下即暂停,省电 |
| 蓝牙RSSI | 推断是否在移动载具中 | 结合GPS判断进入地铁隧道 |
固件层的情境识别逻辑:
void check_environment_context() {
float pressure_rate = get_pressure_change_rate();
float motion_level = get_acceleration_rms();
if (pressure_rate > 50 && motion_level < 0.2) {
activate_profile(AIRPLANE_TAKEOFF_PROFILE);
}
else if (is_bluetooth_rssi_stable() && light_sensor < 50) {
activate_profile(OFFICE_QUIET_PROFILE);
}
}
这一切都在后台默默完成,用户毫无感知,却又处处受益。
开放式耳机也能降噪?Cleer找到了突破口
传统观点认为:开放式耳机没法做ANC,因为声音会漏进来。
Cleer不信邪,正在研发一套新方案:
- 双麦克风波束成形 :定向捕捉前方噪声;
- 虚拟密闭腔建模 :通过手机摄像头扫描耳廓,构建个性化声学模型;
- 前馈主导+反馈辅助 :反馈麦克风改置于耳外侧,监测泄漏路径上的干涉效果;
- 骨传导辅助感知 :避免过度降噪导致“堵耳效应”。
实验数据显示,在开放耳挂式结构下,100–800Hz平均实现 18dB 衰减,远超行业普遍<10dB的水平。
更妙的是,这项技术还能衍生出“隐形助听器”功能——选择性放大老年人听力敏感区(1000–3000Hz),兼顾隐私与社交需求。
写在最后:ANC的本质,是一场系统工程的胜利
回头看,Cleer的ANC技术之所以领先,从来不是靠某一项“黑科技”,而是 软硬协同 + 数据驱动 + 用户洞察 的全面胜利。
它把每一个细节都做到了极致:
- 麦克风不止是“能录音”,还要“听得清、分得明”;
- DSP不只是“跑算法”,更要“快、准、省”;
- 扬声器不仅是“发声”,还得“相位稳、响应平”;
- 固件不仅要“可靠”,还要“聪明、节能”。
而这背后,是无数工程师在实验室里反复调试、建模、验证的结果。
ANC已经过了“堆参数”的时代。现在的竞争,拼的是谁更能理解真实世界的复杂性,谁能真正做到“无声胜有声”。
也许有一天,你会忘记自己戴着降噪耳机——因为它已经完美融入了你的生活节奏,像呼吸一样自然。
而这,才是技术真正的终点。✨
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
901

被折叠的 条评论
为什么被折叠?



