直接回答
不要因为模型被描述为“支持语音”就自动降混。先确认准确的下游制品和运行时输入契约是否要求单声道;如果它能接受录制到的立体声格式,保留两个声道可能才是正确策略。只有当单声道契约明确时,才把立体声转单声道当作有版本、可验证的采样变换,并将输入顺序、系数、数值范围和输出格式与采集、重采样、WAV 封装及识别质量分开检查。 Android AudioFormat 描述帧中的声道掩码和 PCM 编码。对于 AudioRecord 输入,Android 文档规定可使用单声道或立体声掩码,并保证单声道可用;这是录音格式能力,不代表某个模型需要什么输入。双声道帧包含两个按顺序排列的独立样本。应在变换边界记录掩码和真实字节布局,不能仅从文件扩展名或请求的录音器配置推断左右顺序、采样率或交错方式。 Media3 提供 ChannelMixingMatrix:行表示输入声道,列表示输出声道;系数为非负值,并按行优先排列。ChannelMixingAudioProcessor 会按输入声道数保存矩阵,文档规定它的输入和输出为 16-bit PCM。该处理器标注为 UnstableApi,因此测试前应固定实际解析到的 Media3 版本。文档中的 [0.5, 0.5] 立体声转单声道例子只是一个映射示例,不是普遍最佳值、ASR 输入要求,也不证明 Cove 使用 Media3。矩阵不接受负系数;应把反相位当成可能在求和时相消的输入夹具,而不是把负增益设置进矩阵。 执行前定义 y = aL + bR,并在五个主测试中固定使用非对称矩阵 [0.75,0.25]:左侧单声道 [12000,0] -> 9000;右侧 [0,12000] -> 3000;同相 [8000,8000] -> 8000;反相 [8000,-8000] -> 4000;不等幅近满量程 [30000,20000] -> 27500。先冻结输入、矩阵顺序和固定转换路径的容差。非对称权重可以通过左右单侧样本发现声道交换;对称矩阵不能。另设两个独立控制:[0.5,0.5] 配 [8000,-8000] 的量化前和为 0;[1,1] 配 [30000,30000] 的剪裁前和为 60000。记录后者的实际处理器输出,不假设通用饱和行为。Android 与 Media3 文档不保证所有处理路径具有相同舍入或剪裁规则。 把矩阵校验与录音配置分开。若输入契约合适,可请求 AudioRecord 使用单声道掩码,但这并不证明立体声文件已正确混音;反过来,用已知立体声 buffer 做矩阵测试,也不能证明某台设备上的麦克风路由能产出立体声。若处理后再封装为 WAV,需独立检查头部声道数和 PCM 元数据是否与转换后的载荷一致。容器元数据是另一条边界,并不等同于混音本身。 只有变换后的样本符合声明契约后,才评估下游推理。记录固定 PCM 夹具 ID 或摘要、帧数和字节数、输入与输出声道数、系数、处理器/运行时版本,以及准确传给模型的 PCM 或容器。识别行为作为独立的任务检查;这不是 WER 研究,也不是模型普遍需要单声道的证据。Cove 当前 ASR 事实卡记录 PCM 到 WAV 的交接,但不证明 Cove 支持立体声采集、模型要求单声道或集成了 Media3。
立体声夹具降混后丢失了唯一清晰的人声声道
Android 流水线收到交错立体声 PCM。左声道包含较轻的合成语音,右声道含更强且相位相反的信号。下游适配器要求单声道,但团队没有记录矩阵,也未在送入模型前检查输出。
决策
确认准确的下游声道契约,固定显式矩阵,并在归因给识别器之前,用预先定义的小型夹具比较转换样本。
预期结果
报告说明此受测格式下,变换保留、加权、重排或相消了哪些声道内容;不声称所有音频模型都要 mono,也不声称一组系数最佳。
需要收集的证据
只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:
- 下游模型声道契约与矩阵版本
- 单侧、同相、反相与不等幅 PCM 夹具
- 矩阵结果、剪裁行为和模型交接边界
任务质量需要有版本记录的语料和验收规则;流畅的单条样例不等于准确度结果。
实施流程
- 确认下游声道契约. 记录准确制品/运行时要求,并确认接受 mono、stereo 还是其他声明格式。将采样率转换、WAV 元数据和声道混音分成独立步骤;若允许立体声,先验证保留原格式,而不是强行混音。
- 固定输入顺序和矩阵形状. 记录 PCM 编码、声道掩码/布局、字节序、交错方式、输入与输出声道数、矩阵行列顺序。使用 Media3 时记录解析到的 media3-common 版本和 UnstableApi 状态;其 ChannelMixingAudioProcessor 文档仅规定 16-bit PCM,并非所有 PCM 编码。
- 在同一非对称矩阵下预设五个夹具. 对 16-bit PCM 的所有主样本固定用 [0.75,0.25],并预先写明高精度输出:左侧 [12000,0] -> 9000;右侧 [0,12000] -> 3000;同相 [8000,8000] -> 8000;反相 [8000,-8000] -> 4000;不等幅近满量程 [30000,20000] -> 27500。按固定转换路径预设容差。非对称权重让左右单侧样本能检测顺序交换。
- 将相消和剪裁控制分开测试. 五个主样本中不要换矩阵。另用 [0.5,0.5] 配 [8000,-8000] 检查量化前和为 0;用 [1,1] 配 [30000,30000] 检查剪裁前和为 60000。记录实际 PCM16 输出;不假定有通用饱和保证,也不用对称矩阵检测声道顺序。
- 验证转换后的 buffer 边界. 分别检查输出声道数、帧数、字节长度、交错方式和 WAV 头(若有)。确认送入下游的准确 buffer 或容器并保留夹具摘要;头部有效不证明声道样本正确。
- 单独评估推理结果. 仅当契约可用时,才在矩阵检查通过后将同一夹具送入准确下游路径。把空转写或变化与矩阵算术分开记录,不将小型夹具集包装成 WER、模型质量或设备兼容证据。
让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。
验收标准
- 只有所选模型/运行时契约明确要求单声道时才混音;不推导普遍的单声道要求。
- 五个主夹具始终使用同一个非对称矩阵,执行前记录预期输出和容差;左右单侧输入可检测顺序交换,对称矩阵做不到。
- 相消与超范围剪裁控制使用独立矩阵和独立运行;记录实现的剪裁结果而不作保证。
- 矩阵通过不被说成转写准确率或 Cove 功能;记录准确传给下游的 PCM/容器。
决策对照表
| 维度 | 选择或证据 | 解读方式 |
|---|---|---|
| 保留立体声 | 下游契约接受时保留两个声道 | 避免有损求和,但仍需验证样本顺序和容器元数据。 |
| 请求单声道录音 | 录音路径与模型契约都匹配时请求 mono | Android 保证单声道输入掩码可用;不能替代立体声文件的降混测试。 |
| 立体声转单声道矩阵 | 只有明确需要 mono 时使用显式测试矩阵 | 让声道贡献和可能的相消可以复核;系数不代表通用质量设置。 |
| 只检查格式元数据 | 记录采样率、掩码、编码和 WAV 头 | 描述数据表示,但不能单独证明变换保留了预期音频内容。 |
需要避免的失败模式
- 声道数为二就自动混成单声道
- 把 0.5/0.5 示例说成通用最佳值
- 把矩阵测试结果称为 WER 或模型质量
还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。
最小复现记录
| 层级 | 记录内容 |
|---|---|
| 设备 | 厂商、型号、芯片、内存档位、操作系统版本 |
| 软件 | 应用版本和 Git 提交号 |
| 模型 | 系列、变体、版本、格式、文件长度、摘要、量化方式 |
| 运行时 | 名称、版本、请求后端及实际后端证据 |
| 工作负载 | 样例版本、输入摘要、提示词摘要、输出策略 |
| 结果 | 完成、失败、取消、回退及保护隐私的诊断信息 |
发布检查表
- ☐ 主要搜索问题已回答,且没有未经支持的数字。
- ☐ 所有模型文件和运行时版本均已固定。
- ☐ 代表性任务和失败处理策略均有说明。
- ☐ 生命周期、取消、清理和回退均已测试。
- ☐ 用户内容与网络边界均有说明。
- ☐ 结论只适用于被记录的配置。
- ☐ 新增测试结果时链接到原始方法或证据。
来源与相关证据
- Cove Travel 语音翻译实现
- Cove 基准测试方法
- AndroidX Media3 — ChannelMixingMatrix
- AndroidX Media3 — ChannelMixingAudioProcessor
- Android API — AudioFormat 声道掩码与 PCM 帧
- Android API — AudioFormat.Builder 输入掩码
- Android Developers — 音频采集概览
中文部署与排错专题见。奇连 AI 端侧专题。
常见问题
所有本地语音模型都要求单声道 PCM 吗?
不要求。检查准确制品和运行时输入契约。支持立体声的路径可以保留两个声道;只有选定使用方明确需要或受控对照支持时才混成 mono。
0.5/0.5 是立体声转单声道的最佳默认值吗?
不是。Media3 文档将其作为示例,并非普遍建议。主测试应使用一个固定的非对称矩阵;把 0.5/0.5 相消用例作为独立控制。
对称混音能发现左右声道交换吗?
不能。两个输入系数相等时,交换 L/R 不改变单声道计算结果。左右单侧夹具应使用固定非对称矩阵,并将其他系数方案分开测试。
ChannelMixingAudioProcessor 能处理任意 PCM 格式吗?
不能。文档规定输入和输出为 16-bit PCM,API 还标为 UnstableApi。不能假定 PCM float、24-bit 或其他解析版本相同;应显式转换或标记该路径未支持。
剪裁夹具能证明 ASR 准确率吗?
剪裁夹具能说明固定处理器在预定输入下的数值边界,但不能代表 ASR 准确率;转写评估需另用审核语料和独立判分。