🚀 🎹 話者分割 3.1
このパイプラインは音声処理用のオープンソースツールで、主に話者分割問題、つまり音声中の異なる話者の発言区間を識別することを解決します。以前のバージョンでの onnxruntime
の使用問題を改善し、純粋な PyTorch で実行するため、デプロイが容易になり、推論速度が向上する可能性があります。
🚀 クイックスタート
このオープンソースパイプラインを本番環境で使用する場合は、当社のコンサルティングサービスをご利用いただけます。
✨ 主な機能
- このパイプラインは
pyannote/speaker-diarization-3.0
と基本的に同じですが、onnxruntime
の問題のある使用を削除しています。現在、話者分割と埋め込みはすべて純粋な PyTorch で実行されるため、デプロイが簡素化され、推論速度が向上する可能性があります。
pyannote.audio
バージョン 3.1 以上が必要です。
- サンプリングレートが 16kHz のモノラル音声を受け取り、話者分割結果を
Annotation
インスタンスとして出力します。
- ステレオまたはマルチチャンネルの音声ファイルは、チャンネルの平均値を取ることで自動的にモノラルにダウンミックスされます。
- サンプリングレートが異なる音声ファイルは、読み込み時に自動的に 16kHz に再サンプリングされます。
📦 インストール
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"))
メモリからの処理
音声ファイルを事前にメモリに読み込むことで、処理速度を向上させることができます。
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" と呼ばれています)を採用しています。
- 許容誤差範囲はありません。
- 重複する音声も評価します。
ベンチマークデータセット |
DER% |
FA% |
Miss% |
Conf% |
予想される出力 |
ファイルレベルの評価 |
AISHELL - 4 |
12.2 |
3.8 |
4.4 |
4.0 |
RTTM |
評価 |
AliMeeting (チャンネル 1) |
24.4 |
4.4 |
10.0 |
10.0 |
RTTM |
評価 |
AMI (ヘッドマイクミックス, [単語のみ)](https://github.com/BUTSpeechFIT/AMI - diarization - setup) |
18.8 |
3.6 |
9.5 |
5.7 |
RTTM |
評価 |
AMI (アレイ 1、チャンネル 1, [単語のみ)](https://github.com/BUTSpeechFIT/AMI - diarization - setup) |
22.4 |
3.8 |
11.2 |
7.5 |
[RTTM](https://huggingface.co/pyannote/speaker-diarization-3.1/blob/main/reproducible_research/AMI - SDM.SpeakerDiarization.Benchmark.test.rttm) |
[評価](https://huggingface.co/pyannote/speaker-diarization-3.1/blob/main/reproducible_research/AMI - SDM.SpeakerDiarization.Benchmark.test.eval) |
AVA - AVD |
50.0 |
10.8 |
15.7 |
23.4 |
[RTTM](https://huggingface.co/pyannote/speaker-diarization-3.1/blob/main/reproducible_research/AVA - AVD.SpeakerDiarization.Benchmark.test.rttm) |
[評価](https://huggingface.co/pyannote/speaker-diarization-3.1/blob/main/reproducible_research/AVA - AVD.SpeakerDiarization.Benchmark.test.eval) |
DIHARD 3 (完全版) |
21.7 |
6.2 |
8.1 |
7.3 |
RTTM |
評価 |
[MSDWild](https://x - lance.github.io/MSDWILD/) |
25.3 |
5.8 |
8.0 |
11.5 |
RTTM |
評価 |
[REPERE (フェーズ 2)](https://islrn.org/resources/360 - 758 - 359 - 485 - 0/) |
7.8 |
1.8 |
2.6 |
3.5 |
RTTM |
評価 |
VoxConverse (v0.3) |
11.3 |
4.1 |
3.4 |
3.8 |
RTTM |
評価 |
📄 ライセンス
このプロジェクトは 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},
}