🚀 🎹说话人分割 2.5
本项目是一个说话人分割模型,基于pyannote/speaker-diarization-3.0
修改而来。它使用pyannote/segmentation-3.0
进行说话人分段,并结合了特定的说话人嵌入模型,能有效检测说话人数量,在多种数据集上有良好表现。
🚀 快速开始
如果你在生产环境中使用这个开源模型,考虑切换到 pyannoteAI 以获取更好更快的选择。
本模型是基于 pyannote/speaker-diarization-3.0
修改而来。
此管道使用 pyannote/segmentation-3.0
进行说话人分段,但使用了说话人嵌入:来自 pyannote/speaker-diarization@2.1
的 speechbrain/spkrec-ecapa-voxceleb
。
在一些测试中,来自 speechbrain/spkrec-ecapa-voxceleb
的嵌入似乎更能有效检测说话人的自动数量。
✨ 主要特性
- 基于开源模型修改,可在生产环境使用。
- 结合特定说话人嵌入模型,能更好检测说话人数量。
- 处理过程全自动,无需手动语音活动检测、指定说话人数量或微调模型及超参数。
📦 安装指南
- 使用
pip install pyannote.audio
安装版本为 3.0
的 pyannote.audio
。
- 接受
pyannote/segmentation-3.0
的用户使用条件。
- 在
hf.co/settings/tokens
创建访问令牌。
💻 使用示例
基础用法
from pyannote.audio import Pipeline
pipeline = Pipeline.from_pretrained(
"Willy030125/speaker-diarization-2.5",
use_auth_token="HUGGINGFACE_ACCESS_TOKEN_GOES_HERE")
diarization = pipeline("audio.wav")
with open("audio.rttm", "w") as rttm:
diarization.write_rttm(rttm)
高级用法
在GPU上处理
pyannote.audio
管道默认在CPU上运行。你可以使用以下代码将其发送到GPU:
import torch
pipeline.to(torch.device("cuda"))
使用一块英伟达特斯拉V100 SXM2 GPU(用于神经推理部分)和一块英特尔至强可扩展处理器6248 CPU(用于聚类部分)时,实时因子约为2.5%。
换句话说,处理一小时的对话大约需要1.5分钟。
从内存中处理
将音频文件预加载到内存中可能会加快处理速度:
import torchaudio
waveform, sample_rate = torchaudio.load("audio.wav")
diarization = pipeline({"waveform": waveform, "sample_rate": sample_rate})
监控进度
可以使用钩子来监控管道的进度:
from pyannote.audio.pipelines.utils.hook import ProgressHook
with ProgressHook() as hook:
diarization = pipeline("audio.wav", hook=hook)
控制说话人数量
如果事先知道说话人的数量,可以使用 num_speakers
选项:
diarization = pipeline("audio.wav", num_speakers=2)
也可以使用 min_speakers
和 max_speakers
选项提供说话人数量的下限和/或上限:
diarization = pipeline("audio.wav", min_speakers=2, max_speakers=5)
📚 详细文档
此管道已在大量数据集上进行了基准测试。
处理过程完全自动化:
- 无需手动进行语音活动检测(文献中有时会有这种情况)
- 无需手动指定说话人数量(尽管可以向管道提供该信息)
- 无需对内部模型进行微调,也无需针对每个数据集调整管道的超参数
... 采用最严格的说话人分割错误率(DER)设置(在 本文 中称为 "Full"):
📄 许可证
本项目使用MIT许可证。
收集的信息将有助于更好地了解pyannote.audio的用户群体,并帮助其维护者进一步改进它。尽管此管道使用MIT许可证,并且将始终保持开源,但我们偶尔会通过电子邮件向您介绍有关pyannote的高级管道和付费服务。
🔧 引用信息
@inproceedings{Plaquet23,
author={Alexis Plaquet and Hervé Bredin},
title={{Powerset multi-class cross entropy loss for neural speaker diarization}},
year=2023,
booktitle={Proc. INTERSPEECH 2023},
}
@inproceedings{Bredin23,
author={Hervé Bredin},
title={{pyannote.audio 2.1 speaker diarization pipeline: principle, benchmark, and recipe}},
year=2023,
booktitle={Proc. INTERSPEECH 2023},
}