小米开源 CocktailASR-1:用参考语音直接识别目标说话人
不靠语音分离,直接听清“你想听的人”
在嘈杂的会议室里,你只想记录某位同事的发言;在家庭聚会时,智能音箱只该响应你的指令——这些场景背后都需要一种特殊能力:从多人同时说话的音频中,准确识别出特定说话人的内容。传统做法通常分两步:先用语音分离技术把不同人的声音拆开,再对每一路单独做语音识别。但这种级联方案容易累积误差,且计算复杂。
小米最近开源的 Xiaomi-CocktailASR-1 模型换了个思路:跳过分离步骤,直接用一段目标说话人的参考语音作为“提示”,让模型在识别过程中自动聚焦于这个人的声音。结果不仅简化了流程,还在多个公开测试集上刷新了性能纪录。
一个模型,三种能力
CocktailASR-1 的核心设计目标是统一处理三类任务:
- 多人混音中的目标说话人识别(比如会议录音)
- 常规单人语音识别(比如手机录音)
- 目标不在场时的拒识(避免胡乱转写)
这听起来简单,实则挑战不小。多数 ASR 模型在多人场景下表现糟糕,而专门做目标说话人识别的系统往往无法兼顾单人场景的精度。更麻烦的是,当目标说话人根本没出现在音频里时,很多模型仍会强行输出一段“合理”的文字,造成误触发。
CocktailASR-1 通过巧妙的训练策略和架构设计,把这三种能力整合进同一个模型。用户只需提供一段目标说话人的参考音频(哪怕只有几秒),再给一段待识别的混合或单人音频,模型就能返回对应的转录文本——如果目标没出现,就直接返回空字符串。
架构:参考语音当“声纹提示”
模型整体采用端到端结构,由三部分组成:
- 音频编码器:基于 Data2Vec2 改进的 0.6B 参数网络,负责将原始音频转换为帧级特征。
- 轻量 Adapter:将音频特征映射到大语言模型的隐空间。
- LLM 骨干:使用 Qwen3-8B 作为解码器,生成最终文本。
关键创新在于输入方式:把参考语音、1 秒静音、混合语音按顺序拼接成一个长音频输入。编码器在处理这段组合信号时,会利用 Data2Vec2 的自监督机制,同时学习语义内容和说话人特征。由于参考语音在前,模型在提取后续混合语音特征时,会自然地“记住”目标说话人的声学特性,并抑制其他干扰源。
这种方式省去了独立的声纹编码器或语音分离模块,从源头避免了级联系统的误差传递问题。
训练:百万小时数据平衡多种能力
为了让模型同时掌握目标提取、单人识别、拒识和可解释推理,团队设计了多阶段训练策略,总共用了约 100 万小时 的语音数据:
- 40 万小时多说话人数据:用于训练模型从混音中提取目标说话人。
- 60 万小时同说话人配对数据:即参考语音和目标语音来自同一人,防止模型在单人场景下过度抑制自身语音。
- 1 万小时错配负样本:参考语音和混合音频中无目标说话人,让模型学会“沉默”。
- 额外 CoT 数据:教模型先输出推理链(如说话人数、性别、相似度),再给出最终答案。
这种配比确保模型不会在某一任务上过拟合,而是在各种场景下保持稳健表现。
实测:多人场景大幅领先
在多个主流多说话人基准测试中,CocktailASR-1 显著优于现有方法:
- AliMeeting Far-field(远场会议场景):词错误率(WER)降至 20.63%,此前 SOTA 为 27.5%。
- LibriMix 2-speaker mix:WER 仅 4.11%,而通用 ASR 模型如 Qwen3-ASR 在此任务上高达 68.75%。
在单人场景下,它的表现也毫不逊色:
- LibriSpeech test-clean WER 为 1.73%(Qwen3-ASR 为 1.87%)
- CommonVoice 中文测试集 WER 为 4.95%(Qwen3-ASR 为 5.39%)
更关键的是拒识能力:在 LibriSpeech 构造的负样本测试中,CocktailASR-1 的拒识率达到 79.59%,而 Qwen3-ASR 和 StepAudio 等模型拒识率为 0——意味着它们总会输出一段文字,哪怕目标根本没说话。
可解释性:不只是黑箱输出
除了标准模式,模型还支持 思维链(CoT)。开启后,输出会包含 <think> 标签内的推理过程,例如:
<think>
检测到2位说话人,性别分别为男和女。参考语音与混合音频中第一位说话人声纹相似度为0.87,判定为目标。
</think>
<answer>
今天的会议重点讨论预算分配问题。
</answer>这种设计不仅让用户知道“为什么这么识别”,还能小幅降低 WER——因为模型在生成答案前先理清了上下文。
使用:一行代码搞定
模型已通过 HuggingFace 开源,使用门槛很低:
import torch
from transformers import AutoModel
model = AutoModel.from_pretrained(
"Ease3/Xiaomi-CocktailASR-1",
trust_remote_code=True,
torch_dtype="bfloat16"
).cuda().eval()

# 单条推理
text = model("meeting_mix.wav", "target_speaker_ref.wav")
print(text) # 若目标未出现,返回空字符串
# 启用思维链
result = model("mix.wav", "ref.wav", cot=True)音频需为 16kHz 单声道,非标准采样率会自动重采样。批量处理可通过 TSV 文件配合脚本完成,项目仓库提供了完整示例和正负样本 Demo。
应用场景不止会议转写
虽然论文以会议场景为例,但这类技术的实际用途更广:
- 智能家居:电视开着、孩子在吵闹时,音箱只响应机主的“关灯”指令。
- 车载语音:副驾乘客聊天不影响驾驶员对导航系统的语音操作。
- 客服质检:从客户与坐席的通话中自动提取坐席话术,用于合规审查。
- 无障碍设备:听障人士在餐厅聚会中,设备实时转写特定朋友的发言。
这些场景的共同点是:环境中有多个声源,但用户只关心其中一个。传统 ASR 很难应对,而 CocktailASR-1 正是为此而生。
开源协议与获取方式
模型采用 Apache 2.0 协议 开源,允许商用。代码、权重和论文均已公开:
- GitHub 仓库:https://github.com/xiaomi-research/xiaomi-cocktailasr-1
- HuggingFace 模型:https://huggingface.co/Ease3/Xiaomi-CocktailASR-1
- 技术论文:https://arxiv.org/pdf/2609.11274
对于需要处理真实世界复杂语音的应用开发者来说,这或许是一个值得尝试的新工具——毕竟,有时候我们不需要听清所有人,只需要听清那个重要的人。