26、音频策略与Wearable:穿戴设备音频路由限制、低功耗音频路由策略、蓝牙耳机优先策略

穿戴设备,说白了就是手表、手环、智能眼镜这些小家伙。它们跟手机最大的区别是什么?电池小,体积小,但功能一个不能少。我在做穿戴设备音频系统的时候,第一个感受就是:这玩意儿比手机难搞多了。

为什么?因为手机没电了你可以随时充,手表没电了用户可能直接就不戴了。所以穿戴设备的音频策略,核心就三个字:省、稳、快。省电、稳定、快速响应。今天我就把这块的经验掰开揉碎了讲给你听。

穿戴设备的音频路由限制

穿戴设备的硬件资源非常有限。我见过不少方案,音频DSP、Codec、PA都是集成在SoC里的,外挂的独立音频芯片很少。这就带来了几个硬性限制:

  • 音频通道数量少:通常只有1-2条I2S或PCM总线,不像手机可以同时挂多个音频设备
  • 采样率支持有限:很多穿戴设备只支持16kHz/48kHz,不支持高采样率
  • 输出功率受限:为了省电,功放输出功率通常只有几十毫瓦
  • 物理接口单一:大部分穿戴设备只有蓝牙输出,没有3.5mm耳机孔

核心限制:穿戴设备的音频路由,本质上是在「有限的硬件资源」和「多样的使用场景」之间做取舍。你不能像手机那样随意切换路由,必须提前规划好优先级。

我记得有一次做智能手表项目,产品经理说「我们要支持手表外放、蓝牙耳机、还有通话降噪」。我一看硬件框图,只有一个I2S总线。这就意味着外放和蓝牙耳机不能同时工作,必须做时分复用。嗯,这就是典型的硬件限制带来的路由约束。

低功耗音频路由策略

低功耗是穿戴设备的命门。音频路由策略如果不考虑功耗,那产品续航肯定崩。我总结了一套「三级功耗路由策略」,你可以参考:

第一级:硬件直通模式

这是最省电的模式。音频数据不经过AP(应用处理器),直接在蓝牙芯片和Codec之间走硬件通路。比如播放音乐时,蓝牙芯片直接解码并输出到Codec,AP全程休眠。这种模式下,功耗可以控制在10mW以内。

// 硬件直通模式配置示例
struct audio_route hw_direct_route = {
    .source = AUDIO_SOURCE_BT_CHIP,
    .sink = AUDIO_SINK_CODEC,
    .path_type = AUDIO_PATH_HARDWARE,
    .ap_involve = false,  // AP不参与
    .power_mode = POWER_MODE_ULTRA_LOW
};

第二级:AP透传模式

当需要做简单的音频处理(比如音量调节、EQ)时,AP会参与,但只做透传,不做复杂编解码。这种模式功耗比硬件直通高一些,大概20-30mW,但比完全由AP处理要省电得多。

第三级:AP全处理模式

只有通话降噪、语音识别等场景才用。AP全功率运行,功耗最高,但功能也最强。我建议这个模式的使用时间不要超过总使用时长的5%。

我的经验:在项目中,我通常会把80%的音频场景设计为硬件直通模式。用户日常的听歌、通知提醒、闹钟,其实都不需要AP参与。只有通话和语音助手才需要AP介入。这样设计下来,整机音频功耗能降低60%以上。

蓝牙耳机优先策略

穿戴设备上,蓝牙耳机几乎是唯一的音频输出设备。但这里有个问题:当蓝牙耳机连接时,手表的外放要不要关?什么时候切回外放?

我建议的蓝牙耳机优先策略是这样的:

  1. 连接即切换:蓝牙耳机连接成功后,音频路由自动切换到蓝牙。这个切换要在100ms内完成,否则用户会感觉到延迟。
  2. 断开即回退:蓝牙耳机断开时,自动回退到外放或静音。这里要注意,不要直接切到外放,万一用户在开会呢?我建议先静音,然后给用户一个通知。
  3. 优先级固化:蓝牙耳机的优先级高于外放,但低于通话。也就是说,如果正在用蓝牙耳机听歌,突然来电话了,路由要自动切到通话通道。

注意:蓝牙耳机优先策略有一个坑——蓝牙连接不稳定。我曾经遇到过一个情况:蓝牙耳机在口袋里,信号时断时续,导致音频路由在蓝牙和外放之间频繁切换。用户反馈说「手表疯了」。后来我们加了一个防抖机制:蓝牙断开后,等待500ms再切换,如果期间重新连接了,就不做切换。

知识体系:穿戴设备音频路由核心逻辑

下面这张图是我画的穿戴设备音频路由决策流程,你可以看到从音频事件发生到最终路由确定的完整链路:

穿戴设备音频路由决策流程 音频事件触发 蓝牙耳机是否已连接? 路由到蓝牙耳机 判断使用场景 防抖检查(500ms) 通话/音乐/通知? 外放/静音(按场景) 保持蓝牙路由 低功耗路径 防抖处理 高功耗路径

实际项目中的避坑指南

做穿戴设备音频,有几个坑我踩过,你一定要注意:

我曾经...在一个智能手表项目里,没有做蓝牙断连的防抖处理。结果用户戴着手表跑步,蓝牙耳机在口袋里被身体遮挡,信号频繁断连。音频路由在蓝牙和外放之间疯狂切换,功耗飙升,续航直接砍半。后来加了500ms的防抖窗口,问题才解决。

另外,还有一个容易被忽略的点:穿戴设备的音频路由策略,一定要跟功耗管理模块联动。比如,当系统进入低功耗模式时,音频路由要自动切换到硬件直通模式,并且关闭所有不必要的音频通路。我建议你在设计阶段就把功耗状态机画出来,跟音频路由状态机做映射。

系统功耗状态 音频路由模式 典型场景 功耗预估
Active AP全处理 通话、语音助手 50-100mW
Idle AP透传 音乐播放、通知 20-30mW
Sleep 硬件直通 待机、闹钟 <10mW

说白了,穿戴设备的音频策略,就是在「功能」和「功耗」之间找平衡。你不可能既要马儿跑,又要马儿不吃草。我的建议是:先定功耗预算,再定功能,最后设计路由策略。顺序不能乱。

我个人习惯:在项目初期,我会先跟硬件团队确认好音频总线的数量和功耗预算。然后根据这个预算,倒推哪些场景可以做,哪些场景必须砍掉。这样后期就不会出现「功能做完了才发现功耗超标」的尴尬局面。

好了,关于穿戴设备的音频策略,核心就是这些。你想想看,其实跟手机音频策略相比,穿戴设备更像是在「戴着镣铐跳舞」。但正是这些限制,才逼着我们做出更优雅的设计。

公众号:蓝海资料掘金营,微信deep3321