Cleer Arc5的开放式佩戴检测:当骨传导遇上AI,耳机竟懂你何时“摘下”
你有没有过这样的经历?戴着开放式耳机散步,风一吹、头一晃,音乐突然暂停——明明还好好戴着呢!😤
或者运动到一半,耳机轻微移位,系统却误判为“已摘下”,激情BGM戛然而止……这哪是智能,简直是添乱。
而最近火出圈的 Cleer Arc5 ,偏偏把这件“小事”做到了极致。它没有用常见的红外传感器,也没有塞进耳道,却能在你抬手取下的瞬间精准识别,真正做到“摘下即停、戴上续播”。🎧✨
它是怎么做到的?难道耳机真的长了“眼睛”?
其实不然。Arc5 的秘密武器,是一套融合了 骨传导物理感知 + 双耳惯性同步分析 + 边缘端机器学习 的多模态智能检测系统。听起来复杂?别急,咱们一步步拆开看。
想象一下:你的头骨就像一根天然的“导线”。当你把 Arc5 戴上颞部时,耳机内部会悄悄发出一种人耳完全听不到的微弱机械脉冲(约 8kHz,力度比蚂蚁爬还轻)。这个信号不是为了传声,而是用来“试探”——它沿着颅骨传导,看看对面那只耳机能不能收到回波。
如果收到了,说明什么?👉 耳机正稳稳贴在你脸上,形成了一条完整的“骨传导链路”。
这就是它的第一重判断依据: 有接触才有通路,无接触则无声息 。
但问题来了:万一我把它随手挂在脖子上,两边也挨着皮肤呢?会不会被误认为“正在佩戴”?
聪明的是,Cleer 并不只靠这一招。它还给左右耳都装上了高精度三轴加速度计(比如 Bosch BMI270),实时捕捉双耳的运动轨迹。
重点来了:我们头部是一个刚体结构。当你正常佩戴并移动头部时,左右耳的运动会高度同步——相关系数通常能超过 0.85。但如果只是随便挂着、随风摇摆,两边的动作就是“各自为政”,毫无规律可言。
所以第二重验证来了: 只有当两个动作高度一致 + 没有剧烈抖动 (排除跑步颠簸干扰),才被认为是真正的佩戴状态。
🤔 举个例子:
就像两个人手拉手走路,步伐自然协调;但如果只是肩并肩站着不动,突然一人跳起来,那显然不是“同行者”。
于是,最终决策逻辑变成了一个“与”关系:
✅ 骨传导链路建立 ✔️
✅ 双耳运动一致 ✔️
➡️ 才判定为“已佩戴”
任何一个条件不满足,都不算数。这种双重保险机制,直接把误触发率压到了 <1.2% —— 相比传统红外方案的 6%+,简直是降维打击。
更狠的是,这套系统还会“越用越聪明”。
你有没有发现,有些人戴得紧,有些人偏松;冬天衣服厚,夏天出汗滑?这些变量都会影响传感器数据。如果用固定阈值去判断,迟早翻车。
Cleer Arc5 的应对策略是: 本地自适应 + 在线学习 。
具体来说,它内置了一个轻量级的 SVM 分类器(模型压缩后不到 4KB),跑在耳机主控芯片上,不需要联网也能工作。每 200ms 它就会提取一组特征:均值、方差、频谱重心、峰值数量……打包成一个 8 维向量,送入模型进行推理。
同时,系统还悄悄记住了你的习惯。比如某天你摘下耳机时手动点了暂停,但自动检测没反应?好,这条记录就被标记为“漏检样本”,加入训练集,下周固件更新时悄悄优化模型参数。
🧠 换句话说: 它不仅知道“大家怎么戴”,更懂“你怎么戴” 。
而且所有数据都在本地处理,绝不上传云端——隐私安全这块拿捏得死死的🔒。
下面这段代码,就是这套机制的核心逻辑简化版(运行在 Cortex-M 系列 MCU 上):
#define BONE_CONDUCT_THRESHOLD_DBV (-45)
#define ACC_CORRELATION_THRESHOLD (0.85)
typedef struct {
int16_t left_acc[3];
int16_t right_acc[3];
int32_t bone_rssi;
} sensor_data_t;
float calculate_correlation(const int16_t *a, const int16_t *b, uint8_t len) {
float sum_a = 0, sum_b = 0, sum_ab = 0, sum_a2 = 0, sum_b2 = 0;
for (int i = 0; i < len; i++) {
sum_a += a[i]; sum_b += b[i];
sum_ab += a[i] * b[i];
sum_a2 += a[i] * a[i]; sum_b2 += b[i] * b[i];
}
float n = len;
float numerator = n * sum_ab - sum_a * sum_b;
float denominator = sqrt((n * sum_a2 - sum_a*sum_a) * (n * sum_b2 - sum_b*sum_b));
return (denominator == 0) ? 0 : numerator / denominator;
}
bool is_wearing_detected(const sensor_data_t *data) {
// 条件1:骨传导信号够强
if (data->bone_rssi < BONE_CONDUCT_THRESHOLD_DBV) return false;
// 条件2:双耳运动高度相关
float corr = calculate_correlation(data->left_acc, data->right_acc, 3);
if (corr < ACC_CORRELATION_THRESHOLD) return false;
// 条件3:排除剧烈震动(如跳跃)
float left_rms = sqrtf(dot_product(data->left_acc, data->left_acc, 3));
float right_rms = sqrtf(dot_product(data->right_acc, data->right_acc, 3));
if (left_rms > 2000 || right_rms > 2000) return false;
return true;
}
是不是很简洁?但它背后藏着工程团队对功耗、响应速度和鲁棒性的精细权衡:
- 骨传导模块采用 5% 占空比脉冲工作 ,平均功耗仅 0.8mW;
- 加速度计平时休眠,只在播放音频时以 25Hz 低速率采样;
- AI 模型支持 OTA 更新,未来还能持续进化。
实际体验中,这套系统解决了不少“痛点场景”:
| 场景 | 问题 | 解法 |
|---|---|---|
| 戴帽子/眼镜 | 压力变化导致松动 | 自适应调节接收灵敏度 + 动态提升发射功率最多 +3dB |
| 骑行迎风 | 风噪引发振动误判 | RMS 限幅 + 时间连续性约束(需连续3次失败才触发) |
| 冷热交替 | 材料膨胀影响耦合 | 温度补偿算法动态调整基准值 |
| 用户偏好差异 | 有人爱紧戴,有人喜宽松 | 个性化模型在线增量训练 |
甚至连低电量模式都有预案:自动切换为纯加速度检测,牺牲一点准确率保续航,堪称细节控狂喜 😍。
整个系统的架构可以这样理解:
graph LR
A[骨传导发射] --> B{颅骨传导}
B --> C[骨传导接收]
C --> D[信号强度计算]
E[左耳加速度计] --> F[运动数据采集]
G[右耳加速度计] --> F
D --> H[融合决策模块]
F --> H
H --> I[SVM分类器 + 自适应滤波]
I --> J[最终佩戴判断]
K[用户行为记忆库] --> I
L[OTA模型更新] --> I
所有模块集成在一颗定制 SoC 内,通过 I²C/SPI 与传感器通信,MCU 用低优先级任务轮询状态,兼顾实时性与省电。
当然,这样的设计也不是没有代价。比如:
- 骨传导单元必须紧贴颧弓区域才能有效耦合,结构布局受限;
- 加速度计要避开铰链等易共振部位,否则噪声干扰大;
- 初期需要 1–2 天学习周期才能达到最佳匹配度。
但相比带来的体验跃升,这些都可以接受。
说到底,Cleer Arc5 的这套佩戴检测机制,不只是“用了什么传感器”的问题,更是 如何让硬件与算法协同思考 的艺术。
它没有盲目堆料,而是针对开放式耳机的物理特性,重新定义了“什么是佩戴”。
不再依赖光学反射、不再迷信单一信号源,而是从 人体生物力学特征出发 ,构建了一个多层次、可进化的感知闭环。
这才是真正的“智能”:不是冷冰冰的规则匹配,而是懂得观察、学习、适应的贴心伙伴。🤖❤️
也许几年后回头看,我们会发现:正是像 Arc5 这样的产品,推动了耳机从“音频工具”向“可穿戴智能终端”的转变。
下一次,当你轻轻摘下耳机、音乐恰好停止的那一刻,不妨笑一笑——因为你知道,有一群工程师为了让这一刻刚刚好,折腾了好几年呢。😉🎶
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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



