🚀 🎹 說話人分割 3.1
本管道與 pyannote/speaker-diarization-3.0
相同,只是它移除了對 onnxruntime
的 有問題的 使用。說話人分割和嵌入現在都完全在 PyTorch 中運行,這應該會簡化部署並可能加快推理速度。它需要 pyannote.audio 版本 3.1 或更高版本。
該管道接收採樣率為 16kHz 的單聲道音頻,並將說話人分割結果作為一個 Annotation
實例輸出:
- 立體聲或多聲道音頻文件會通過對各聲道求平均值自動下混為單聲道。
- 採樣率不同的音頻文件在加載時會自動重採樣為 16kHz。
使用此開源模型進行生產?考慮切換到 pyannoteAI 以獲得更好、更快的選擇。
🚀 快速開始
要求
- 使用
pip install pyannote.audio
安裝 pyannote.audio
3.1
版本。
- 接受
pyannote/segmentation-3.0
的用戶使用條件。
- 接受
pyannote/speaker-diarization-3.1
的用戶使用條件。
- 在
hf.co/settings/tokens
創建訪問令牌。
用法
from pyannote.audio import Pipeline
pipeline = Pipeline.from_pretrained(
"pyannote/speaker-diarization-3.1",
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"))
從內存中處理
將音頻文件預加載到內存中可能會加快處理速度:
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”):
📄 引用
@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},
}