EN

说话人分离:实现指南

识别并分离音频中的多个说话人

返回教程列表🌐 Read in English
进阶9 分钟

说话人分离:实现指南

识别并分离音频中的多个说话人

说话人分离(Diarization)实现指南(2026):判断“谁在何时说话”,pyannote.audio 真实代码。与 ASR 按时间戳合并得“谁说了什么”,准确率取决于音质——用分轨/避免过度降噪/提供说话人数。

说话人分离:实现指南(2026)

说话人分离回答“谁在何时说话”——按说话人分割音频,使转录变成“说话人A:… / 说话人B:…”。这对于会议记录、通话分析以及任何多方参与的音频至关重要。最常用的开源工具包是 pyannote.audio

说话人分离的功能(及其限制)

说话人分离会标记说话人的轮次(说话人1、2……),但不会识别他们的姓名,也不会进行转录。完整的“谁说了什么”流程是:说话人分离 + ASR,然后按时间戳对齐两者。

python

pip install pyannote.audio (门控模型:在 Hugging Face 上接受条款)

from pyannote.audio import Pipeline pipe = Pipeline.from_pretrained("pyannote/speaker-diarization-3.1", use_auth_token=HF_TOKEN) diary = pipe("meeting.wav") for turn, _, speaker in diary.itertracks(yield_label=True): print(f"{turn.start:.1f}-{turn.end:.1f} {speaker}")

与转录结合

使用 Whisper 获取文字,使用 pyannote 获取说话人,然后根据重叠的时间戳合并,将每个转录片段归属于一个说话人。参见多语言 ASROpenAI Whisper API。托管替代方案集成了说话人分离——参见Whisper vs Deepgram,对于会议场景,参见会议智能转录

准确率因素

  • 音频质量占主导。 重叠语音、远场麦克风和严重噪声对说话人分离影响最大。
  • 不要过度降噪——激进的降噪会模糊说话人分离所依赖的语音特征(参见音频预处理)。
  • 已知说话人数(如果可以提供)会改善聚类。
  • 分离通道(每个说话人的音轨)使说话人分离变得简单——尽可能使用它们。
  • 常见问题

    说话人分离能识别说话人姓名吗? 不能——它标记为说话人1/2/……;映射到姓名需要注册或手动标记。 它能转录吗? 不能——需要与 ASR 配对并按时间戳合并。 为什么结果很差? 通常是重叠语音或噪声/远场音频。 有托管选项吗? Deepgram 和其他 ASR API 提供内置的说话人分离。

    总结

    说话人分离按说话人分割音频;与 ASR 结合(按时间戳合并)得到“谁说了什么”。pyannote.audio 是开源标准。质量取决于干净、分离良好的音频——尽可能使用每个说话人的通道,并避免过度降噪。


    *最后更新:2026年6月。请根据 pyannote.audio 文档验证 API。*

    相关工具

    openaipython
    所属主题:OpenAI 开发实战