音箱这个品类,做到“能响”很容易,做到“听起来不别扭”很难。小智音箱这个项目立项时,团队内部的共识是:不追参数堆料,先把蓝牙音频传输这条链路做扎实。最终方案定为搭载 BES2600YM 这颗蓝牙音频 SoC,把发射端兼容性、空口稳定性、解码与功放输出这一整条路径收进一颗芯片的掌控范围内。这篇文章想聊的不是“我们用了什么芯片”,而是围绕这颗芯片做一款音箱时,射频、电源、音频、固件这四块地盘到底要怎么划分,哪些参数是真关键,哪些坑是踩过才知道的。适合正在做蓝牙音频类产品的硬件工程师、嵌入式软件同学,以及想理解“为什么同样一颗芯片,不同团队做出来音质和连接体验差一截”的产品同学参考。全文基于公开资料、通用设计规范和我们自己在模拟项目中的实测记录整理,具体寄存器与极限参数请以官方数据手册为准。
1. 这个项目的技术账本:蓝牙音频传输到底难在哪
1.1 一条音频数据从手机到喇叭要过五道关卡
很多人以为蓝牙音频就是“手机把音乐发给音箱”,实际上数据要连续穿过五道关卡,任何一道掉链子,用户听到的就是卡顿、爆音或者发闷。第一关是手机端的编码,操作系统的音频框架把 PCM 采样喂给编码器,按 SBC、AAC 或 LC3 压成码流;第二关是协议栈的封装与调度,数据被切成包,按连接间隔一包一包往外发;第三关是 2.4GHz 空口,这一段最不可控,WiFi、微波炉、人体遮挡、金属家具全在里面搅局;第四关是音箱端的协议栈重组与解码,丢包要重传、乱序要排序、缓冲要控制;第五关才是模拟输出,DAC 转成模拟信号,经功放推给喇叭,最后被腔体染色。
这五关里,前四关都属于“数字域”,第五关才落到“听感域”。有意思的是,用户抱怨“音质差”,十次里有六七次问题出在前四关——码流被反复重传导致抖动、缓冲区太浅导致欠载、编码器参数选错导致高频被砍。真正的 DAC 和功放素质反而不是最常见的瓶颈。我在模拟项目 X 上做过一轮对比:同一套硬件,只改协议栈的缓冲策略,主观听感的差异比换一颗功放芯片还明显。这个结论直接影响了我们后来的调试顺序——先保证数字链路干净,再谈模拟指标。
理解这五关的意义在于,你会知道自己手里的工具该往哪儿使。BES2600YM 这类音频 SoC 的价值,就在于它把第二到第五关全部收进了一颗芯片:协议栈、解码器、DAC、电源管理都在片内,中间不需要跨芯片走 I2S 或 UART,减少了时序抖动和接口瓶颈。这是它相对“通用蓝牙模块 + 外挂 MCU + 独立 DAC”方案最本质的优势,也是我们选它的第一理由。
1.2 为什么最终没走“蓝牙模块 + 主控”的堆叠路线
立项初期评估过两条路。A 路线是买现成的蓝牙模块(串口透传那种),配一颗通用 MCU 做控制和音频处理,再外挂 DAC 和功放。B 路线是用 BES2600YM 这类音频专用 SoC,把蓝牙、解码、DAC 一把抓。A 路线的诱惑在于灵活:模块便宜、生态成熟、开发门槛低,MCU 想跑什么逻辑都行。但我们算了一笔更细的账。
第一是延迟。串口透传模块的音频通路通常是“蓝牙收到数据 → UART 转给 MCU → MCU 解码 → I2S 出去”,每一段都有缓冲,叠加起来轻松超过 200ms,看视频会明显音画不同步。B 路线芯片内部走的是专用音频总线,通路上没有通用串口这个瓶颈,实测能把端到端延迟压到 100ms 出头,开游戏模式还能再降。
第二是功耗。A 路线里蓝牙模块和 MCU 各自有独立的电源域和时钟,待机时两边都得醒着或者反复握手,静态电流很难做低。B 路线是一颗芯片统一调度,空闲时大部分模块可以深度休眠。
第三是 BOM 和布板面积。A 路线光芯片就三颗,加上各自的晶振、滤波、LDO,PCB 面积和物料成本都上去了。小智音箱的结构空间本来就紧,我们实在没有余量给三套电源做隔离。
代价当然也有:SoC 方案的固件是半封闭的,很多底层参数要靠原厂提供的配置工具和 SDK 去调,遇到奇葩问题排查链条更长。另外音频通路的灵活性不如自己搭——你想在中途插入自定义的 EQ 算法或者做特殊的混音,得看芯片的 DSP 资源够不够。这个取舍我们在后面第 3 节还会展开讲。
1.3 BES2600YM 在整套架构里到底管什么
把芯片放进框图里看会更清楚。它对外只做两件事:一是通过 2.4GHz 射频和手机、平板、笔记本打交道;二是把解码后的模拟音频送给功放。中间的所有事情——协议栈、编解码、时钟管理、电源管理、按键和 LED 的 GPIO——都在片内完成。片内集成的电源管理单元很关键,它能把电池电压直接转成内核、射频、音频各自需要的电平,省掉了外挂多路 LDO 的麻烦,但也意味着电源设计的重点从“选型”变成了“外围滤波和地平面处理”。
能力边界也要说清楚。这颗芯片的定位是音频终端,不是通用蓝牙透传芯片,所以它的数据吞吐能力是围绕音频码流优化的,想拿它当蓝牙串口传文件不合适。另外它支持哪些编码格式、是否启用新一代低功耗音频协议,取决于固件版本和授权配置,这一点必须在立项时就找原厂确认清楚,不能想当然。我们在模拟项目里就吃过这个亏:早期以为某个高码率编码默认可用,做到一半发现要额外授权和固件适配,临时改方案,白干了两周。
还有一点容易被忽略:这类 SoC 的 GPIO 和外围接口数量是有限的。音箱要接按键、LED、可能还有 AUX 检测、电池电量检测,如果还想加屏幕或者传感器,就得提前把引脚分配表拉出来对一遍,别等到布板才发现不够用。我们当时的做法是先画一张“功能 - 引脚”对照表,把能复用的、能砍掉的分级标注,这个习惯后来救过好几次。
2. 硬件落地:射频、电源、音频三块地盘的划分
2.1 天线与射频前端:最容易被结构吃掉的那部分
蓝牙音箱的射频设计,难点从来不在电路,而在结构和射频的战争。2.4GHz 的波长只有 12.5cm,PCB 上任何一段走线、任何一块金属、任何一坨喇叭磁钢,都能显著改变天线的谐振点。我在模拟项目里见过最典型的情况:裸板测试灵敏度很好,装进外壳、装上喇叭之后,接收灵敏度掉了 8dB,连接距离从 20 米缩到 6 米。原因很简单,喇叭的磁钢和音圈离天线太近,等效于给天线并联了一个损耗元件。
解决思路分三层。第一层是布局预留:PCB 倒 F 天线周围必须留净空区,也就是这一块区域下面不走线、不铺铜、不打过孔。行业里常见的做法是净空 5mm 起步,空间允许就往 8mm 以上做。天线正下方做完整的地平面作为反射面,但净空区内不能有地。第二层是结构协同:喇叭、电池、金属装饰件的位置要在结构设计早期就参与评审,天线尽量放在整机的边角,远离大块金属。第三层是匹配网络:预留 π 型匹配位置(一个串联位、两个并联位),用矢量网络分析仪实测 S11,边调边看,把回波损耗压到 -10dB 以下,理想状态做到 -15dB。
提示:匹配网络的元件不要一次焊死。先用可调电容和电感调出大致范围,再换成固定值,最后用实际批次的物料复测一遍。不同批次的 PCB 介质厚度有公差,天线的一致性没有想象中好。
射频前端的另一个细节是晶振。音频 SoC 一般需要一颗高精度晶振提供蓝牙时钟基准,这颗晶振的频率偏差直接影响空口的频率稳定度。布局上要尽量贴近芯片的对应引脚,走线短、包地完整、远离电源和功放这种干扰源。晶振的负载电容要按规格书给的值配,别凭经验拍脑袋,偏差大了会导致频偏超标,表现出来的现象是“某些手机能连,某些手机连不上”——特别难查。
2.2 电源树:纹波和瞬态是音质的隐形杀手
音箱的电源设计有个反直觉的地方:决定音质的往往不是电源的“绝对精度”,而是它的“噪声形态”。一颗输出 3.3V 但纹波 30mV 的电源,喂给音频电路,你听到的就是持续的“嘶嘶”底噪;而纹波干净但瞬态响应差的电源,放大动态音乐时会听到低频的“噗噗”声,那是电压塌陷导致的。
我们的做法是把电源分成三个域,各自独立处理。第一个域是射频和数字域,用片内集成的降压转换器供电,重点是开关频率的选取——要避开音频带宽(20Hz 到 20kHz)以及它的谐波,通常把开关频率设在 1MHz 以上,让噪声落在人耳听不见也测不到音频带内的频段。第二个域是音频模拟域,用低压差线性稳压器,牺牲效率换噪声,输出端配 10μF 加 0.1μF 的组合滤波,实测纹波能压到几个毫伏。第三个域是功放域,直接吃电池电压,中间只加足够的储能电容应对瞬态电流。
地平面的处理比电源本身更重要。数字地、模拟地、功放地要做单点汇聚,不能让功放的大电流回流路径穿过模拟音频的地。功放的接地回路面积要尽量小,功率地和信号地分离后,在电池负极附近汇合。我踩过的一个坑是:早期版本为了省事,功放的地直接连到数字地铺铜上,结果小音量时底噪尚可,音量一开大就出现“沙沙”声,那是功放开关噪声通过共地阻抗耦合回了音频输入。后来把功放地单独划出来,用一条窄桥连接,问题消失。
电池管理这块也值得说两句。锂电池电压从 4.2V 放到 3.3V 的过程中,功放的最大输出功率会明显下降,用户感知就是“电快用完时声音变小了”。解决办法要么是选支持升压的功放,要么在固件里做音量补偿曲线。前者增加成本和 EMI 风险,后者实现简单但要注意补偿不能太激进,否则电池快没电时会削顶失真。我们选的是后者,按电池电压分档,每档给不同的增益补偿,实测下来主观感受平顺很多。
2.3 音频通路:从 I2S 到喇叭腔体,每一段都在改声音
芯片内部的解码和 DAC 做完之后,信号要送到功放。这一段有两个选择:模拟差分输出直接进功放,或者走 I2S 数字信号进数字功放。我们选的是后者,原因是数字传输抗干扰能力强,而且可以在数字域做分频和音量控制,精度更高。代价是 I2S 走线要做阻抗控制,MCLK、BCLK、LRCLK 三根时钟线要尽量等长,远离射频和电源走线,否则时钟抖动会直接反映成音频的相位噪声。
数字功放(Class D)的选型,不能只看标称功率。几个指标要一起看:一是 THD+N,在 1W 输出、1kHz 测试条件下,做得好能做到 0.05% 以下,做得差 0.5% 都有;二是信噪比,95dB 以上算合格,100dB 以上算优秀;三是电源抑制比,这个指标直接决定电池供电时能扛住多少纹波干扰;四是 EMI 表现,Class D 的开关边沿很陡,不加处理会干扰蓝牙接收,这个后面会讲。
喇叭和腔体的匹配,是最后一公里,也是最容易被忽略的一公里。同样的喇叭,装在不同容积的腔体里,低频响应能差出一个数量级。我们的做法是先测喇叭的 Thiele-Small 参数(谐振频率、等效容积、品质因数),再用仿真软件估算腔体容积和倒相管尺寸,做出样机后实测频响曲线,反推调整。小智音箱的腔体是注塑件,容积固定,所以只能在喇叭选型和被动辐射器上做文章,最后通过加一个被动振膜把低频下潜拉回来一些。
注意:腔体设计不要等到结构定稿才开始。喇叭的背腔如果没有和整机内部空间做好隔离,会形成声短路,低频直接损失一大截。我们在模拟项目里就遇到过喇叭后腔和电池仓连通的情况,低频听起来“虚”,后来加了一圈密封泡棉才解决。
3. 固件与协议栈调优:把“能连”做成“连得稳听得清”
3.1 连接间隔、缓冲深度与重传策略的三角平衡
蓝牙音频的稳定性,本质上是三个变量在打架:连接间隔、缓冲深度、重传策略。连接间隔决定了数据包多久发一次,间隔短则延迟低但功耗高、抗干扰余量小;间隔长则相反。经典蓝牙的音频链路通常用较短的间隔保证实时性,而低功耗音频可以灵活配置。具体取值要看场景:听音乐可以宽松一点,看视频、打游戏就得激进一点。
缓冲深度是另一个关键。缓冲区太浅,遇到一次丢包重传就会欠载,用户听到“咔”的一声;缓冲区太深,抗抖动能力强了,但延迟上去了,而且切换歌曲、暂停播放时的响应会变迟钝。我们的经验值是留 2 到 3 个包的时间余量,既能扛住常见的瞬时干扰,又不会让延迟难以接受。
重传策略要结合内容类型。音频数据里,有些帧丢了听不出来(比如低能量段),有些帧丢了就是明显的爆音。片内的协议栈一般会做有限次数的自动重传,超过次数就丢弃并做静音填充或者波形外推。真正要调的是“什么时候放弃重传”——一直重传会让延迟滚雪球,果断放弃反而听感更稳。
下面是一段连接参数配置的示意代码,用来说明参数之间的关联,实际接口以原厂 SDK 为准:
/* 连接参数配置示意,非真实 API */ typedef struct { uint16_t min_interval; /* 最小连接间隔,单位 1.25ms */ uint16_t max_interval; /* 最大连接间隔 */ uint16_t slave_latency; /* 从设备可跳过的连接事件数 */ uint16_t supervision_timeout; /* 链路监督超时,单位 10ms */ } conn_param_t; /* 音乐播放场景:偏重稳定性与功耗 */ static const conn_param_t param_music = { .min_interval = 24, /* 30ms */ .max_interval = 40, /* 50ms */ .slave_latency = 0, .supervision_timeout = 400, /* 4s */ }; /* 低延迟场景:牺牲功耗换响应 */ static const conn_param_t param_lowlat = { .min_interval = 12, /* 15ms */ .max_interval = 16, /* 20ms */ .slave_latency = 0, .supervision_timeout = 200, /* 2s */ };这几个数值不是拍脑袋填的。监督超时要大于“最大间隔 ×(从设备延迟 + 1)× 2”这个下限,否则链路会因为正常的调度抖动被误判为断开。上表里 40×1.25ms×2 等于 100ms,4 秒的超时留了充足余量,代价是真正断链时用户要等 4 秒才收到提示,所以固件里还得配合本地的“信号丢失检测”来做快速反馈。
3.2 编码器选择:码率、延迟、兼容性三者不可能全占
编码格式的选择,是产品定义阶段就要定下来的事,因为它影响硬件(要不要留更大的缓冲和更高的主频)、影响兼容性(老设备支持哪些格式)、也影响主观音质。
| 编码格式 | 典型码率 | 典型端到端延迟 | 兼容性 | 适用场景 |
|---|---|---|---|---|
| SBC | 200-345 kbps | 150-250 ms | 全平台通用 | 保底通路,兼容性优先 |
| AAC | 128-256 kbps | 120-200 ms | 主流移动平台广泛支持 | 日常听歌,音质与兼容平衡 |
| LC3 | 96-160 kbps(单声道) | 50-100 ms | 需较新平台与固件支持 | 低延迟、低功耗场景 |
| 厂商私有高码率 | 400-990 kbps | 150-300 ms | 仅同生态设备互通 | 音质优先,特定设备组合 |
这张表最值得说的是最后一行。很多产品宣传“支持高解析编码”,但实际使用中,用户手机不支持,链路会自动回落到 SBC,音质反而因为反复协商变得更不稳。我们给小智音箱的策略是:默认协商 AAC,检测到对端不支持就回落 SBC,同时把 LC3 作为可选开关放在 App 里,让懂行的用户自己开。这样做的好处是不会出现“宣传很猛、体验很平”的落差。
提示:编码器切换时的爆音是常见问题。切换瞬间采样率或帧长变化,如果缓冲没清干净,就会听到“啪”一声。处理办法是在切换时插入 10-20ms 的淡入淡出,代价是极其轻微,但听感干净很多。
还有一个细节是采样率。44.1kHz 和 48kHz 的切换在安卓设备上非常频繁(不同 App 用不同采样率),如果音箱端每次都重新配置时钟,会有明显的切换延迟甚至杂音。稳妥的做法是让音频通路固定工作在 48kHz,输入侧做重采样。重采样会引入极小的失真,但换来的是切换的平顺,这个交换在消费级产品里是划算的。
3.3 多设备连接与 2.4GHz 共存,才是真实使用场景
实验室里一对一连接,什么方案都能跑得很漂亮。真实场景是:用户手机连着音箱,同时家里 WiFi 路由器在 2.4GHz 频段满负荷工作,隔壁还有蓝牙耳机、无线鼠标。这三者全挤在 2.4GHz 的 80MHz 带宽里。
共存问题的表现很有特征:WiFi 大流量下载时,蓝牙音频开始断续;手机离路由器近时,音箱的传输距离明显缩短。原因是蓝牙的跳频机制虽然能避开被占用的信道,但 WiFi 占用的带宽太宽,可跳的干净信道所剩无几。缓解手段有几个:一是开启自适应跳频,把 WiFi 常用的信道标记为坏信道,主动避开;二是调整发射功率,近距离时降低功率减少对其他设备的干扰,远距离时再拉高;三是在硬件上做好带外抑制,天线前端加滤波器,减少 WiFi 频段外的能量灌入。
多设备连接(比如同时连手机和笔记本)是另一个坑。两个设备的连接间隔、编码格式、音量控制策略都不一样,固件要做优先级仲裁:哪个是“活跃音频源”,哪个是“待接听源”。常见策略是后连接的抢占,但用户往往希望“正在播放的不被打断”。我们的做法是引入一个简单的状态机:有活跃音频流时,新设备的连接请求只做挂起,等当前流暂停超过若干秒才切换。这个逻辑不难,但要在产品定义阶段就想清楚,否则后期改起来牵一发动全身。
4. 实测与排查实录:把问题按住
4.1 测试台怎么搭,指标怎么定
蓝牙音频产品的测试,光靠“听着还行”是不够的,必须有可量化的指标,否则改一版和改十版没有对比基准。我们的测试台分三块。
射频测试用综测仪,测发射功率、频率偏差、调制特性、接收灵敏度。发射功率的典型目标区间是 0 到 +8dBm,太高会增加功耗和干扰,太低影响距离。接收灵敏度的目标是在标准调制下做到 -90dBm 左右,做到 -92dBm 以上算优秀。这两个指标决定“能连多远”,但真正影响体验的是“在临界信号下能不能稳住”,所以还要做衰落测试:把信号强度慢慢降低,记录音频开始出现断续的临界点。
音频测试用音频分析仪,测频响曲线、总谐波失真加噪声、信噪比、串扰。测试时要注意负载要和实际喇叭的阻抗匹配,用 8 欧姆电阻假负载测出来的数据,和接真实喇叭差别不小。我们的做法是两种都测:假负载看电路本身素质,真喇叭看整机表现。
延迟测试用专门的测试仪,或者用“敲击声 + 录音”的土办法:同时录下手机扬声器的敲击声和音箱发出的声音,看两个波形的时间差。土办法精度差一点,但胜在直观,调试时很好用。
| 指标 | 测试条件 | 目标值 | 说明 |
|---|---|---|---|
| 发射功率 | 常温,额定电压 | 0 ~ +8 dBm | 兼顾距离与功耗 |
| 接收灵敏度 | 标准调制,误码率门限 | ≤ -90 dBm | 数值越小越好 |
| 频率偏差 | 常温 | ±20 kHz 以内 | 超标会导致兼容性问题 |
| 端到端延迟 | AAC 编码,音乐模式 | ≤ 200 ms | 视频场景建议 ≤ 150 ms |
| 音频信噪比 | 1kHz,额定输出 | ≥ 95 dB | 决定底噪表现 |
| 总谐波失真 | 1kHz,1W 输出 | ≤ 0.1% | 决定大音量下的干净程度 |
| 连接距离 | 空旷无遮挡 | ≥ 15 m | 装壳后实测 |
4.2 常见问题速查表
下面这张表是我们几轮调试下来积累的,按“现象 - 可能原因 - 排查顺序”组织,遇到问题可以先照着走一遍,能省掉大量瞎猜的时间。
| 现象 | 可能原因 | 排查顺序 |
|---|---|---|
| 装壳后连接距离骤降 | 天线失谐、净空被破坏、金属件靠近 | 先测裸板 S11,再测装壳 S11,对比谐振点偏移 |
| 小音量有持续“嘶嘶”声 | 电源纹波串入音频、地平面处理不当 | 换电池供电对比,用示波器看音频域电源纹波 |
| 大音量出现“沙沙”声 | 功放开关噪声经共地阻抗耦合 | 检查功放地与模拟地是否单点汇聚 |
| 播放中偶发“咔”声 | 缓冲欠载、丢包重传超时 | 加大缓冲深度观察是否缓解,再查干扰源 |
| 音质发闷、高频缺失 | 编码格式回落、采样率被降级 | 抓协议栈日志确认实际协商的编码格式 |
| 某些手机连不上 | 频率偏差超标、协议栈兼容性问题 | 先用综测仪测频偏,再抓空口日志 |
| WiFi 大流量时断续 | 2.4GHz 共存干扰 | 开自适应跳频,换 WiFi 信道做对照实验 |
| 电池电量低时声音变小 | 功放输出随电池电压下降 | 检查是否启用音量补偿曲线 |
| 双设备切换时爆音 | 切换瞬间缓冲未清理 | 加入淡入淡出,切换前静音若干毫秒 |
这张表里,我想单独拎出“装壳后距离骤降”和“小音量嘶嘶声”这两条多说两句,因为它们的排查成本最高。前者的问题在于,裸板测试阶段一切正常,很容易让人误以为射频设计没问题,等到结构件到位才发现,而这时候改结构代价很大。我们的应对办法是把“装壳测试”提前到 EVT 阶段,用 3D 打印的临时外壳先做一轮验证,虽然介电常数和量产材料不完全一致,但足以暴露大方向的问题。
后者的问题在于“嘶嘶声”来源太多:可能是电源纹波,可能是 DAC 本身的底噪,可能是功放的输入噪声,也可能是蓝牙链路的编码噪声。有效的排查顺序是逐段断开:先把功放输入接地,听还有没有噪声(有则问题在功放或电源);再把 DAC 输出静音,听还有没有(有则问题在 DAC 或电源);最后断开射频,看噪声是否变化。一段一段切,比坐着猜快得多。
4.3 几条踩坑之后才明白的经验
第一条,不要把“支持”当成“默认可用”。芯片手册上列出的功能,很多需要固件配置、授权或者特定硬件条件才能跑起来。立项时就要把“必须支持”和“最好支持”分开列,前者写进需求文档并且拿到原厂的书面确认,后者留作后续迭代。我们在模拟项目里因为这条吃过亏,前面提过,不再重复。
第二条,预留调试口,永远不嫌多。UART 日志口、SWD 调试口、几个测试点,在 PCB 上占不了多少面积,但关键时刻能救命。特别是音频通路,留几个测试点可以让你在不拆机的情况下测到关键节点的信号。我见过为了省空间把调试口砍掉,结果量产阶段出现偶发问题,只能靠猜和换料试,成本高了十倍不止。
第三条,主观听感测试要 blind test。团队的工程师天天听同一段音频,很容易产生“听习惯了”的错觉。找几个不了解技术细节的同事,做 AB 对比,不告诉他们哪版是哪版,结论往往和工程师的判断不一致。我们有一版固件,工程师觉得低频更结实,盲测结果大部分人认为“太闷”,最后回调了参数。
第四条,温度对射频和音频都有影响。夏天车里暴晒后开机,天线阻抗会漂,电池内阻会变,功放的温度保护可能触发。做一轮高低温测试,能提前发现一批只在特定条件下出现的问题。这类问题最难处理,因为实验室常温下根本复现不了。
第五条,别忽视结构件的公差。腔体密封性、喇叭安装位置、天线与外壳的距离,量产件的公差会让实验室调好的参数发生偏移。稳妥的做法是在设计阶段就做公差分析,把关键尺寸的敏感度算出来,对敏感度高的尺寸加严管控。天线附近的尺寸尤其敏感,1mm 的偏差可能带来几个 dB 的差异。
最后分享一个我在模拟项目里养成的小习惯:每改一版硬件或者固件,都在同一个测试台上跑一遍固定的七项指标,记录成表。单看一版数据说明不了什么,但把十几版排在一起,趋势就出来了——哪次改动让灵敏度掉了 1dB,哪次调整让延迟降了 20ms,一目了然。这个表格后来成了团队排查回归问题最快的工具,比任何文档都管用。
这个项目后续还打算往两个方向扩展:一是把音频通路的 EQ 做成可配置的,让不同腔体形态共用一套硬件方案;二是把低延迟模式做成自动识别,检测到视频类应用就自动切换参数,用户不用手动开开关。这两件事都不难,难的是把边界条件想全,别让“智能切换”变成“乱切换”。