pyannote.audio 说话人日志完整教程:版本对比、安装与落地实践
【免费下载链接】pyannote-audioNeural building blocks for speaker diarization: speech activity detection, speaker change detection, overlapped speech detection, speaker embedding项目地址: https://gitcode.com/GitHub_Trending/py/pyannote-audio
pyannote.audio 是基于 Python 的说话人日志(speaker diarization)工具,把一段音频切分为"谁在什么时间说话"的时间段。会议转写、播客整理、音频分析这类任务都适用。
哪个版本更适合你?
先给结论:本地有 GPU,选 community-1 社区版;精度要求更高、不介意上云,选 precision-2 专业版。
两者输出结构一致,差别在精度与运行位置。community-1 是开源模型,在本机推理;precision-2 由 pyannoteAI 的云端服务器执行。
| 测试集 | community-1 错误率 | precision-2 错误率 | 误差降低 |
|---|---|---|---|
| AMI 会议录音 | 17.0% | 12.9% | 24% |
| DIHARD 3 | 20.2% | 14.7% | 27% |
| VoxConverse | 11.2% | 8.5% | 24% |
表中是说话人日志错误率(Diarization Error Rate),越低越好。三个数据集上,专业版的误差比社区版低 24%~27%。
安装 pyannote.audio 并获取 Hugging Face 授权
按顺序做四步:
- 确认 Python 不低于 3.10。创建虚拟环境(
python3 -m venv pyannote-env并激活),然后pip install pyannote.audio。 - 安装 ffmpeg。音频解码依赖它,可用
ffmpeg -version验证是否可用。 - 在 Hugging Face 的 pyannote/speaker-diarization-community-1 模型页面接受用户条款,再到账户设置里创建一个访问令牌。
- 获取模型文件。首次调用
Pipeline.from_pretrained会自动下载;也可在模型仓库的 Files and versions 页面手动拿到pytorch_model.bin。
跑通第一条音频
import torch from pyannote.audio import Pipeline from pyannote.audio.pipelines.utils.hook import ProgressHook pipeline = Pipeline.from_pretrained( "pyannote/speaker-diarization-community-1", token="HUGGINGFACE_ACCESS_TOKEN") pipeline.to(torch.device("cuda" if torch.cuda.is_available() else "cpu")) with ProgressHook() as hook: output = pipeline("audio.wav", hook=hook) for turn, speaker in output.speaker_diarization: print(f"{turn.start:.1f}s-{turn.end:.1f}s {speaker}")输出每行是一个说话段:起始时间、结束时间,以及一个说话人标签,如 SPEAKER_00、SPEAKER_01。同一标签出现在不相邻的段落里,代表是同一个人先后开口。结果是一个带时间戳的标注结构,可以直接遍历、过滤或导出。
批量处理与参数怎么调
批量处理只需把调用放进循环,逐条得到结果:
for path in audio_files: output = pipeline(path) # 结果存为 RTTM 或 JSON调参看管道仓库根目录的 config.yaml,它记录了说话人数约束、聚类等超参数。单跑一个文件时想临时覆盖某个值,直接在调用里传参即可,例如pipeline("audio.wav", min_speakers=2, max_speakers=4)。
precision-2 走的是另一条路:不需要本地 GPU,音频在 pyannoteAI 服务器执行后返回结果。只把仓库名和密钥换掉即可切换:
pipeline = Pipeline.from_pretrained( "pyannote/speaker-diarization-precision-2", token="PYANNOTEAI_API_KEY") output = pipeline("audio.wav") # 在 pyannoteAI 服务器上执行结果怎么落地
分段结果适合直接喂给标注工具。下图是 pyannote.audio 与 Prodigy 的集成界面:波形与说话人分段同屏显示,SPEAKER_00、SPEAKER_01 等标签可管理,每个时间戳都能编辑、确认或拒绝,改模型错判并沉淀标注数据的成本很低。
典型落地场景有三个:
- 会议记录自动化:把分段与 ASR 文本对齐,得到带发言人、带时间戳的逐句纪要。
- 播客结构化:按说话人切分节目,再分角色做摘要或章节归纳。
- 音频取证:对比多个录音里同一说话人的出现位置,辅助交叉验证采访内容。
更多用法可参考官方教程。
安装失败或跑得慢,怎么解决?
安装失败怎么排查
- 检查 Python 版本:
python --version需显示 3.10 及以上,3.9 及以下会直接装不上。 - 确认装进了当前虚拟环境:
pip show pyannote.audio能看到版本才说明导入来源正确。 - 首次下载模型走 Hugging Face 网络,公司内网可能需要配置代理。
运行速度慢怎么优化
- 确认模型已放到 GPU 上:示例里
pipeline.to(torch.device(...))这行会自动选择设备,CPU 环境不会报错但会明显变慢。 - 检查 torch 是否为 CUDA 构建:
torch.cuda.is_available()返回 True 才算真正启用 GPU。 - 长音频量大时,改走 precision-2 云端执行,省去本地推理开销。
找一段自己的录音,把audio.wav换成它,把上面的代码原样跑一遍。看到分段结果后,再回头调 config.yaml 里的说话人数约束。
【免费下载链接】pyannote-audioNeural building blocks for speaker diarization: speech activity detection, speaker change detection, overlapped speech detection, speaker embedding项目地址: https://gitcode.com/GitHub_Trending/py/pyannote-audio
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考