直接回答
音频路由变化不是简单更新耳机图标,而是输入管线中的一次事件。应用应观察音频设备连接变化,检查当前录音状态,再执行明确策略:只有确认采集路径仍有效且格式契约没有变化时才继续;否则停止或使受影响的当前分段失效,保留已经完成的分段,向用户显示中断,并让用户决定是否恢复。Android 提供设备连接与断开的回调,但回调本身不能证明活动 AudioRecord 已透明切换到合适输入,也不能证明样本仍符合预期属性。应用必须验证自己依赖的具体行为。 语音管线经常会把 PCM 切成若干段,再顺序送入推理。当前 Cove Voice 的 TranscriptionPipeline 会通过共享推理引擎顺序处理 PCM 分段、合并非空结果,并为失败分段保留可见占位。这是明确表达失败的有用行为,但它并不能证明所有蓝牙设备、录音格式或设备组合都适用。因此,应把路由变化纳入管线状态,避免把互不连续或格式未知的输入伪装成一段完整录音。 可以使用一张状态表记录路由身份、采集状态、格式、分段序号、部分转写和中断原因。路由改变时,不要悄悄给音频来源换标签,也不要假设系统已经完成采样率转换。要确认所用录音 API 是否会报告当前会话的路由变化、录音器是否仍在工作,以及应用怎样观察实际选择的设备。如果平台或 API 没提供足够证据,就说明这个限制,并采取安全失败策略,而不是宣称录音连续。麦克风权限、适用的前台采集说明以及用户停止按钮,也必须在所有转换后仍然有效。 测试应包含设备接入和移除、安静片段中变化、正在写入音频时变化、两个分段之间变化,以及用户同时取消。每个用例记录路由事件、录音器结果、样本格式、完成与失败的分段标识、界面转写状态、资源清理情况,以及下一次录音能否开始。使用已获许可且不敏感的音频夹具。没有原始记录支撑时,不要发布延迟、转写准确率或耳机支持列表。目标是状态可靠、恢复行为让人理解,而不是保证所有附件都通用。 路由测试尤其需要把事件顺序留下来:例如设备拔出、录音器返回异常、当前分段超时和用户按下停止,哪一个先发生。若只记录最终错误,难以判断是应用状态机、系统录音器还是推理阶段先触发。诊断日志应留下阶段码和分段序号等非内容元数据,避免保存原始录音、转写文本或可识别的文件路径。这样既能帮助复现竞态,也不会把排障便利误解为收集用户内容的理由。 恢复界面要让用户知道哪些句子已经成功保留,哪个分段还不确定,并把继续录音、重录当前段和结束保存区分开。重录之前确认旧会话已释放,否则会出现两个麦克风任务并行或旧回调污染新会话。若应用无法确认新路由的状态,宁可暂停并请求用户选择,也不要静默从另一只麦克风继续。发布说明只能描述已测试配置和处理策略;一次通过不等于蓝牙设备族认证。
离线语音笔记中途断开蓝牙耳机
用户正在录制一条私密语音笔记,已有若干音频分段处理完毕,当前分段仍在录制。Android 报告外接音频设备被移除。应用既要保住已完成文本,也不能假装当前录音没有中断。
决策
根据经过测试的 API 行为把路由变化作为状态转换;停止或使不确定的活动分段失效,保留已完成段,并在切换到其他输入前向用户说明。
预期结果
笔记能清楚标出中断,保留确定完成的转写,并提供有控制的恢复或结束操作,而不承诺所有路由都等价。
需要收集的证据
只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:
- ANDROID-AUDIO-01:Android 官方媒体文档说明平台录音 API;应用仍需负责权限、生命周期和音频格式边界。
- COVE-ASR-02:Cove Voice 逐段顺序处理 PCM,合并非空结果,并为失败段保留可见占位。
发布结论只对所记录的配置和验收集有效;扩大适用范围需要更多记录。
实施流程
- 定义采集契约. 记录录音 API、预期采样格式、声道数、分段策略和可观察到的路由信息。请求的格式不等于设备实际交付的格式;在可用时记录 API 返回值和相关设备身份。
- 注册设备变化并核对会话. 录音期间监听设备接入和移除回调,并将事件与当前录音会话核对,而不是只根据界面图标推断路由。由明确的生命周期所有者注销回调,避免 Activity 销毁后仍被持有。
- 定义分段级中断语义. 测试前决定活动分段是丢弃、标记未完成,还是仅在 API 确保数据有效时才结束。已完成分段应保留;对不确定内容显示缺口或占位,不要把变化前后的音频静默拼起来。
- 覆盖路由事件边界. 分别测试录音中接入或断开、分段间变化、推理期间变化和同时取消。记录事件顺序、分段标识、路由证据、录音状态、部分结果和清理过程;结论只对应实际观察的设备。
- 验证恢复与隐私控制. 中断后显示当前麦克风来源及录音状态;在适当情况下要求用户明确恢复,并始终提供清晰停止操作。检查临时音频与转写的保留行为符合产品说明,诊断日志不包含原始内容。
让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。
验收标准
- 设备接入或断开被表示为明确的录音状态变化,不会静默等同为音频连续。
- 已完成分段与路由变化时正在录制的分段可以区分;未知音频不会无提示地合并。
- 用户能看到录音是否停止、可执行的恢复动作以及停止方式。
- 每种测试配置都记录实际路由与格式行为,不把单个样本外推为通用耳机兼容结论。
决策对照表
| 维度 | 选择或证据 | 解读方式 |
|---|---|---|
| 继续采集 | 仅在活动会话与格式仍有证据支持时 | 证据充分时保持体验;否则可能掩盖输入不连续。 |
| 停止当前分段 | 标记中断并保留已完成分段 | 显式暴露不确定性,为用户提供可靠的恢复点。 |
| 自动切换并重启 | 除非路由选择与重启行为都测试并告知,否则避免 | 竞态可能从意外麦克风采集,或重复录到同一段内容。 |
需要避免的失败模式
- 把音频设备连接回调当成活动录音已无缝切换的证据。
- 跨路由变化把未确认的样本或转写片段静默拼接。
还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。
最小复现记录
| 层级 | 记录内容 |
|---|---|
| 设备 | 厂商、型号、芯片、内存档位、操作系统版本 |
| 软件 | 应用版本和 Git 提交号 |
| 模型 | 系列、变体、版本、格式、文件长度、摘要、量化方式 |
| 运行时 | 名称、版本、请求后端及实际后端证据 |
| 工作负载 | 样例版本、输入摘要、提示词摘要、输出策略 |
| 结果 | 完成、失败、取消、回退及保护隐私的诊断信息 |
发布检查表
- ☐ 主要搜索问题已回答,且没有未经支持的数字。
- ☐ 所有模型文件和运行时版本均已固定。
- ☐ 代表性任务和失败处理策略均有说明。
- ☐ 生命周期、取消、清理和回退均已测试。
- ☐ 用户内容与网络边界均有说明。
- ☐ 结论只适用于被记录的配置。
- ☐ 新增测试结果时链接到原始方法或证据。
来源与相关证据
中文部署与排错专题见。奇连 AI 端侧专题。
常见问题
Android 会自动将正在进行的录音切换到新耳机吗?
不要这样假设。设备回调只报告连接变化;应用还要测试自己采用的采集 API 和活动会话实际如何表现。记录观察到的路由,无法确认连续性时应安全暂停。
路由变化后要删除所有已转写内容吗?
不一定。保留已确认完成的分段,将不确定的活动分段单独标记,再按测试过的规则决定重试或恢复。不要跨越缺口静默拼接文本。
用一副蓝牙耳机测试通过,能证明普遍兼容吗?
不能。它只说明特定附件、设备、系统、录音配置和路径下观察到的行为。更宽泛的兼容表述需要覆盖相应配置的证据;结论应限于本次测试。