powerset_calibrationを使って話者ダイアライゼーションを行う

初めに

powerset_calibrationを使って音声内の話者ダイアライゼーションを行ってみます。論文によりデータセットには日本語が含まれていないため、日本語の音声に使う場合は自分で学習を行う必要がありそうです

github.com

以下で動かしたリポジトリを公開しています

github.com

開発環境

セットアップ

環境を作っていきます

uv venv -p 3.9
.venv\Scripts\activate

ライブラリをインストールします。リポジトリpyproject.toml が提供されているので、そのまま使っていきます

uv sync

torchがcpu版になっているので、GPU版をインストールします

uv pip install torch==2.5.1 --index-url https://download.pytorch.org/whl/cu121 --force-reinstall

話者ダイアライゼーションを実行

from pyannote.audio import Pipeline

# プリトレーニング済みモデルのロード
pipeline = Pipeline.from_pretrained("pyannote/speaker-diarization")

# 音声ファイルのパス(ご自身のファイルパスに変更してください)
AUDIO_FILE = "test.mp3"

# ダイアリゼーションの実行
diarization = pipeline(AUDIO_FILE)

# 結果の表示
for turn, _, speaker in diarization.itertracks(yield_label=True):
    print(f"start={turn.start:.1f}s stop={turn.end:.1f}s speaker_{speaker}")

上記のコードで実行をします

結果は以下のようになります

start=0.0s stop=5.0s speaker_SPEAKER_00