🚀 "Powerset" 说话人分割模型
本项目是一个用于说话人分割的开源模型,它能够对音频进行处理,输出说话人分割的结果。该模型在音频处理领域,特别是说话人分割、检测等任务上具有重要价值。
🚀 快速开始
安装要求
- 使用
pip install pyannote.audio
安装 pyannote.audio
3.0 版本。
- 接受
pyannote/segmentation-3.0
的用户使用条件。
- 在
hf.co/settings/tokens
创建访问令牌。
模型实例化
from pyannote.audio import Model
model = Model.from_pretrained(
"pyannote/segmentation-3.0",
use_auth_token="HUGGINGFACE_ACCESS_TOKEN_GOES_HERE")
✨ 主要特性
- 本模型接收 10 秒、采样率为 16kHz 的单声道音频,并将说话人分割结果输出为一个 (num_frames, num_classes) 矩阵。其中,7 个类别分别为 非语音、说话人 #1、说话人 #2、说话人 #3、说话人 #1 和 #2、说话人 #1 和 #3 以及 说话人 #2 和 #3。
- 模型背后的各种概念在 这篇论文 中有详细描述。
- 该模型由 Séverin Baroudi 使用 pyannote.audio 3.0.0 版本进行训练,训练数据结合了 AISHELL、AliMeeting、AMI、AVA - AVD、DIHARD、Ego4D、MSDWild、REPERE 和 VoxConverse 等数据集。
💻 使用示例
基础用法
duration, sample_rate, num_channels = 10, 16000, 1
waveform = torch.randn(batch_size, num_channels, duration * sample_rate)
powerset_encoding = model(waveform)
from pyannote.audio.utils.powerset import Powerset
max_speakers_per_chunk, max_speakers_per_frame = 3, 2
to_multilabel = Powerset(
max_speakers_per_chunk,
max_speakers_per_frame).to_multilabel
multilabel_encoding = to_multilabel(powerset_encoding)
说话人分割应用
本模型不能单独用于对完整录音进行说话人分割(它仅处理 10 秒的音频块)。可参考 pyannote/speaker - diarization - 3.0 管道,该管道使用额外的说话人嵌入模型来执行完整录音的说话人分割。
语音活动检测
from pyannote.audio.pipelines import VoiceActivityDetection
pipeline = VoiceActivityDetection(segmentation=model)
HYPER_PARAMETERS = {
"min_duration_on": 0.0,
"min_duration_off": 0.0
}
pipeline.instantiate(HYPER_PARAMETERS)
vad = pipeline("audio.wav")
重叠语音检测
from pyannote.audio.pipelines import OverlappedSpeechDetection
pipeline = OverlappedSpeechDetection(segmentation=model)
HYPER_PARAMETERS = {
"min_duration_on": 0.0,
"min_duration_off": 0.0
}
pipeline.instantiate(HYPER_PARAMETERS)
osd = pipeline("audio.wav")
📚 详细文档
本模型的详细原理和相关概念可参考 这篇论文。此外,Alexis Plaquet 的 配套仓库 也提供了如何在自己的数据上训练或微调该模型的说明。
📄 许可证
本项目采用 MIT 许可证。
📖 引用说明
@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},
}
⚠️ 重要提示
使用此开源模型进行生产时,考虑切换到 pyannoteAI 以获取更好、更快的选项。收集的信息将有助于更好地了解 pyannote.audio 的用户群体,并帮助其维护者进一步改进它。尽管此模型使用 MIT 许可证并将始终保持开源,但我们偶尔会通过电子邮件向您介绍有关 pyannote 的高级模型和付费服务。
💡 使用建议
在使用模型进行说话人分割时,若要处理完整录音,建议使用 pyannote/speaker - diarization - 3.0 管道。