🚀 🎹說話人分割 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},
}