🚀 🎹 話者分離 3.0
このパイプラインは、Séverin Baroudiによって、pyannote.audio 3.0.0
を使用し、AISHELL、AliMeeting、AMI、AVA - AVD、DIHARD、Ego4D、MSDWild、REPERE、およびVoxConverseのトレーニングセットを組み合わせてトレーニングされました。16kHzでサンプリングされたモノラルオーディオを入力として受け取り、話者分離結果をAnnotation
インスタンスとして出力します。
🚀 クイックスタート
このオープンソースモデルを本番環境で使用していますか?
より良く、より高速なオプションを求めるなら、pyannoteAIへの切り替えを検討してください。
✨ 主な機能
- 16kHzのモノラルオーディオを入力として受け取り、話者分離を行います。
- ステレオまたはマルチチャンネルのオーディオファイルは自動的にモノラルにダウンミックスされます。
- 異なるサンプリングレートのオーディオファイルは読み込み時に自動的に16kHzにリサンプリングされます。
📦 インストール
pip install pyannote.audio
を使用して、pyannote.audio
3.0
をインストールします。
pyannote/segmentation-3.0
のユーザー条件を受け入れます。
pyannote/speaker-diarization-3.0
のユーザー条件を受け入れます。
hf.co/settings/tokens
でアクセストークンを作成します。
💻 使用例
基本的な使用法
from pyannote.audio import Pipeline
pipeline = Pipeline.from_pretrained(
"pyannote/speaker-diarization-3.0",
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"))
1つのNvidia Tesla V100 SXM2 GPU(ニューラル推論部分)と1つのIntel Cascade Lake 6248 CPU(クラスタリング部分)を使用すると、リアルタイム係数は約2.5%です。言い換えると、1時間の会話を処理するのに約1.5分かかります。
メモリからの処理
オーディオファイルをメモリに事前にロードすると、処理が高速化される場合があります。
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" と呼ばれています)で評価されています。
ベンチマーク |
DER% |
FA% |
Miss% |
Conf% |
期待される出力 |
ファイルレベルの評価 |
AISHELL - 4 |
12.3 |
3.8 |
4.4 |
4.1 |
RTTM |
eval |
AliMeeting (チャンネル1) |
24.3 |
4.4 |
10.0 |
9.9 |
RTTM |
eval |
AMI (ヘッドセットミックス, [単語のみ)](https://github.com/BUTSpeechFIT/AMI - diarization - setup) |
19.0 |
3.6 |
9.5 |
5.9 |
RTTM |
eval |
AMI (アレイ1、チャンネル1, [単語のみ)](https://github.com/BUTSpeechFIT/AMI - diarization - setup) |
22.2 |
3.8 |
11.2 |
7.3 |
[RTTM](https://huggingface.co/pyannote/speaker-diarization-3.0.0/blob/main/reproducible_research/AMI - SDM.SpeakerDiarization.Benchmark.test.rttm) |
[eval](https://huggingface.co/pyannote/speaker-diarization-3.0.0/blob/main/reproducible_research/AMI - SDM.SpeakerDiarization.Benchmark.test.eval) |
AVA - AVD |
49.1 |
10.8 |
15.7 |
22.5 |
[RTTM](https://huggingface.co/pyannote/speaker-diarization-3.0.0/blob/main/reproducible_research/AVA - AVD.SpeakerDiarization.Benchmark.test.rttm) |
[eval](https://huggingface.co/pyannote/speaker-diarization-3.0.0/blob/main/reproducible_research/AVA - AVD.SpeakerDiarization.Benchmark.test.eval) |
DIHARD 3 (Full) |
21.7 |
6.2 |
8.1 |
7.3 |
RTTM |
eval |
[MSDWild](https://x - lance.github.io/MSDWILD/) |
24.6 |
5.8 |
8.0 |
10.7 |
RTTM |
eval |
[REPERE (フェーズ2)](https://islrn.org/resources/360 - 758 - 359 - 485 - 0/) |
7.8 |
1.8 |
2.6 |
3.5 |
RTTM |
eval |
VoxConverse (v0.3) |
11.3 |
4.1 |
3.4 |
3.8 |
RTTM |
eval |
🔧 技術詳細
このパイプラインは、pyannote.audio
3.0.0
を使用してトレーニングされています。入力として16kHzのモノラルオーディオを受け取り、話者分離結果をAnnotation
インスタンスとして出力します。
📄 ライセンス
このプロジェクトは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},
}