谁说了什么:转录文本中的说话人分离
这是关于转录最常见的问题,答案却最不让人满意:单个混音文件转出来是一条文本流,没有说话人标签。好消息是,大多数真实场景下你仍然能拿到区分——通常靠改变录音方式,而不是转录方式。
API 能做什么、不能做什么
先把话说直,免得在错误的假设上盖楼:转录接口返回文本和带时间轴的分段。它不返回说话人标签,也没有任何参数能打开这个功能。
说话人分离——判断有几个人在说话、每句话出自谁口——和识别是两个独立的任务。在抢话、相似嗓音和嘈杂房间里它确实很难,做这件事的是另外的模型。
所以实际的问题不是「怎么打开它」,而是「怎么安排事情让自己不需要它」。
方案一:每个说话人单独录音
遥遥领先的最佳方案,也最便宜——成本只是录音前做一个决定。
- 视频会议。Zoom 可以把每位参会者录成独立音频文件。腾讯会议和 Teams 不行,但参会者自己的设备可以。
- 线下访谈。两部手机,一人一部,同时开录。
- 电话系统。多数平台能把通话双方分开录制——这是配置项,不是限制。
各个文件单独转录,就得到完美的区分。按时间戳交错合并,还原整场对话:
rows = []
for name, path in [("主持人", "a.mp3"), ("嘉宾", "b.mp3")]:
with open(path, "rb") as f:
r = client.audio.transcriptions.create(
model="whisper-1", file=f, response_format="verbose_json")
rows += [(s.start, name, s.text.strip()) for s in r.segments]
for start, name, text in sorted(rows):
print(f"[{int(start)//60:02d}:{int(start)%60:02d}] {name}: {text}")方案二:拆分立体声声道
如果录音是立体声、一人一个声道——电话系统和部分录音笔很常见——区分早就藏在文件里了:
ffmpeg -i call.wav -map_channel 0.0.0 left.wav -map_channel 0.0.1 right.wav
然后分别转录两个文件,按上面的方式交错。先确认声道确实是分开的——放进播放器分别听一下左右声道。两个声道都混着两个人声音的立体声文件,拆了也没有收获。
方案三:转录之后人工标注
两个人的对话,发言轮次交替得很有规律,角色通常从内容就能看出来——一个提问,另一个回答。通读一小时的转录文本并标上名字,只要几分钟。
语言模型可以从文字起草标注,但把结果当草稿看:它靠措辞推断,两人观点一致的段落它会自信地标错。发布之前对着时间轴抽查。
方案四:独立的说话人分离模型
如果确实需要在混音音频上自动打标——研究语料、合规档案、你控制不了的会议——路径是跑一个专门的分离模型,产出带时间的说话人轮次,再与转录分段对齐。
现实的代价:多维护一个模型、在转录之外多花 GPU 时间,而且恰恰在你最需要的地方——抢话和短插话上——准确率最差。这是一个真正的项目,不是一个参数。
动手之前,先确认方案一到三覆盖不了你的情况。实践中它们覆盖了大多数。
哪种方案适合哪种场景
| 场景 | 最佳做法 |
|---|---|
| 你来安排的访谈 | 两台录音设备,一人一台 |
| 销售或客服通话 | 电话平台按通话方分轨录制 |
| 你主持的视频会议 | 每位参会者单独的音频文件 |
| 一人一声道的立体声录音 | 用 ffmpeg 拆分声道 |
| 两人对话、只有混音文件 | 转录后人工标注 |
| 无法重录的大型档案 | 专门的说话人分离模型 |
投入之前还值得确认一件事:说话人标签实际被用到的频率有多高?会议纪要和通话质检里,决定本身远比谁说的重要——不少分离系统是为一个没人真正需要的需求建的。
用你自己的录音试一试。 注册只需一分钟,免费额度足够判断识别质量。
免费获取 API 密钥常见问题
API 能自动标出说话人吗?
不能。它返回文本和带时间的分段;说话人标注是独立的任务,没有参数能打开。实际的答案是把参与者分开录音。
拿到区分最简单的办法是什么?
把每个说话人录到单独的文件或声道。各自转录就得到精确的区分,成本只是安排一下录音方式。
分开的音轨怎么合回一场对话?
每条音轨请求 verbose_json,给每个分段标上说话人名字,然后把所有分段按开始时间排序。
语言模型能猜出谁说了什么吗?
它能从措辞起草一份标注,但那是推断不是事实——两人说相似内容的段落会被标错。当草稿用,对着音频抽查。
值得跑一个独立的分离模型吗?
只对无法重录的档案值得——研究语料或合规材料。代价是多一个模型、更多 GPU 时间,而且在抢话上准确率最弱。
相关阅读
- 如何把会议录音转成可用的会议纪要 — 把 Zoom、Teams 和 Google Meet 的录音变成可检索的文字和结构化纪要:文件在哪里、如何转录、如何提取决议和待办事项。
- 如何把通话录音转成文字 — 分步教程:几分钟内通过 API 把电话录音转成文字,包含 Python 和 C# 代码示例、响应格式说明,以及常见错误的处理办法。
- 如何提高语音识别准确率:八个实用方法 — 真正能改善转录质量的八件事:音频预处理、指定语种、prompt 词表、切分策略、响应格式,以及如何测量字错率。