pyannote.audio:开源说话人日志工具包
pyannote.audio 是一个基于 Python 的开源工具包,专注于说话人日志(Speaker Diarization)任务,即解决“who spoke when”的问题。它基于 PyTorch 框架开发,提供了最先进的预训练模型和流程,能够处理语音活动检测、说话人改变检测、重叠语音检测以及说话人嵌入等任务。以下是对该工具包的详细介绍。
https://github.com/pyannote/pyannote-audio https://pypi.org/project/pyannote.audio/ https://huggingface.co/pyannote
视频
https://www.bilibili.com/video/BV1cN411h7E9/ https://www.bilibili.com/video/BV1fXr7YREuP/ https://www.bilibili.com/video/BV1uACLYuELq/ https://www.bilibili.com/video/BV1Gg4y1p7dr/
1. 简介
pyannote.audio 是一个功能强大的开源工具包,用于处理多说话人的音频数据。它能够自动识别音频中不同说话人的语音片段,并将其分配给相应的说话人。该工具包的主要特点包括:
- 预训练模型:提供了多种预训练模型,可以直接应用于常见的说话人日志任务。
- 端到端流程:从语音活动检测到说话人嵌入提取,再到说话人聚类,
pyannote.audio提供了完整的处理流程。 - 高性能:在多个基准测试中表现出色,具有较高的准确率和效率。
- 可扩展性:支持对预训练模型进行微调,以适应特定的数据集或应用场景。
2. 安装与使用
安装
通过以下命令安装 pyannote.audio:
使用示例
以下是一个简单的使用示例,展示如何加载预训练模型并处理音频文件:
from pyannote.audio import Pipeline
pipeline = Pipeline.from_pretrained(
"pyannote/speaker-diarization-3.1",
use_auth_token="HUGGINGFACE_ACCESS_TOKEN_GOES_HERE")
# 将流程发送到 GPU(如果可用)
import torch
pipeline.to(torch.device("cuda"))
# 应用预训练流程
diarization = pipeline("audio.wav")
# 打印结果
for turn, _, speaker in diarization.itertracks(yield_label=True):
print(f"开始={turn.start:.1f}秒 结束={turn.end:.1f}秒 说话人_{speaker}")
3. 主要功能
3.1 语音活动检测(Voice Activity Detection, VAD)
语音活动检测用于识别音频中是否存在语音活动。pyannote.audio 提供了高效的 VAD 模型,能够准确地检测出语音片段。
3.2 说话人改变检测(Speaker Change Detection)
该功能用于检测音频中说话人何时发生改变。这对于多说话人的音频处理尤为重要,能够帮助系统更好地分割和识别不同的说话人。
3.3 重叠语音检测(Overlapped Speech Detection)
在多人对话场景中,可能存在多个说话人同时说话的情况。pyannote.audio 能够检测出这些重叠语音片段,为后续的处理提供支持。
3.4 说话人嵌入(Speaker Embedding)
说话人嵌入是说话人日志中的关键步骤。pyannote.audio 提供了强大的嵌入模型,能够将语音片段映射到嵌入空间,从而实现说话人的区分和聚类。
4. 性能与基准测试
pyannote.audio 在多个基准测试中表现出色,以下是一些关键指标:
| 基准测试 | v2.1 | v3.1 | pyannoteAI |
|---|---|---|---|
| AISHELL-4 | 14.1 | 12.2 | 11.9 |
| AliMeeting(通道1) | 27.4 | 24.4 | 22.5 |
| AMI(IHM) | 18.9 | 18.8 | 16.6 |
| AMI(SDM) | 27.1 | 22.4 | 20.9 |
| AVA-AVD | 66.3 | 50.0 | 39.8 |
| CALLHOME(第2部分) | 31.6 | 28.4 | 22.2 |
| DIHARD 3(完整版) | 26.9 | 21.7 | 17.2 |
| Earnings21 | 17.0 | 9.4 | 9.0 |
| Ego4D(开发版) | 61.5 | 51.2 | 43.8 |
| MSDWild | 32.8 | 25.3 | 19.8 |
| RAMC | 22.5 | 22.2 | 18.4 |
| REPERE(第2阶段) | 8.2 | 7.8 | 7.6 |
| VoxConverse(v0.3) | 11.2 | 11.3 | 9.4 |
5. 开发与贡献
pyannote.audio 提供了详细的开发文档和贡献指南,方便开发者进行模型的扩展和优化。开发者可以通过以下命令设置开发环境:
6. 相关资源
- GitHub 仓库:https://github.com/pyannote/pyannote-audio
- PyPI 页面:https://pypi.org/project/pyannote.audio/
- Hugging Face 模型中心:https://huggingface.co/pyannote
- 视频教程:
- 如何工程化一个语音开源项目:手把手带你实现开源声纹分割聚类项目 pyannote-audio 的工程化
- 根据人物角色分类声音 | 区分说话人 | 声纹识别 | 声音分类 | FunASR | 3D-Speaker | pyannote-audio
- 尝试一下3D-Speaker的说话人区分 | 通话录音区分说话人 | 说话人区分 | funasr | 3d-speaker | pyannote-audio
- whisper和pyannote-audio等开源库介绍
Ref
- https://github.com/pyannote/pyannote-audio
- https://pypi.org/project/pyannote.audio/
- https://huggingface.co/pyannote
- https://www.bilibili.com/video/BV1cN411h7E9/
- https://www.bilibili.com/video/BV1fXr7YREuP/
- https://www.bilibili.com/video/BV1uACLYuELq/
- https://www.bilibili.com/video/BV1Gg4y1p7dr/
- https://zhuanlan.zhihu.com/p/647250252
- http://blog.tubumu.com/2023/04/04/speech-speaker-identification-using-pyannote-audio/
- https://www.dongaigc.com/p/pyannote/pyannote-audio
https://zhuanlan.zhihu.com/p/647250252 http://blog.tubumu.com/2023/04/04/speech-speaker-identification-using-pyannote-audio/ https://www.dongaigc.com/p/pyannote/pyannote-audio https://blog.csdn.net/mr_lio/article/details/135959266 https://developer.baidu.com/article/details/3246745 https://cloud.tencent.com/developer/article/2419977