この記事は2024-12-29 19:34に更新されました。内容の一部は時間的制約があります!
はじめに
BetterWhisperXは、効率的で正確な自動音声認識(ASR)サービスを提供することに焦点を当てたWhisperXプロジェクトの最適化バージョンです。BetterWhisperXは、音素レベルでの強制アライメント、音声アクティビティに基づくバッチ処理、話者分離など、多くの先進技術を統合しています。このツールは、高速テープ起こし(large-v2モデルを使用した場合、最大70倍のリアルタイム速度)をサポートするだけでなく、正確な単語レベルのタイムスタンプと複数話者の認識も提供します。また、バックエンドにfaster-whisperを採用しており、大規模なモデルでも少ないGPUメモリで処理できるため、非常に高い性能/効率比を実現しています。
機能一覧
- クイックスピーチからテキストへ70倍速リアルタイム転写に対応した大型モデルlarge-v2を使用。
- 単語レベルのタイムスタンプ: wav2vec2アライメントにより、正確な単語レベルのタイムスタンプを提供。
- マルチスピーカー認識pyannote-audioによるスピーカーの分離とラベリング。
- 音声アクティビティ検出誤認識の低減とバッチ処理によるエラー率の大幅な上昇はない。
- 一括推論バッチ処理に対応し、処理効率を向上。
- 互換性: PyTorch 2.0とPython 3.10をサポートし、幅広い環境に対応。
ヘルプの使用
詳しい操作手順
- オーディオファイルの準備オーディオファイルのフォーマットがWAVまたはMP3であることと、音質がクリアであることを確認してください。
- 積載モデル要件に応じて適切なモデル(例えばlarge-v2)を選択し、メモリにロードする。
- トランスクリプションの実行transcribe関数を呼び出すと、音声からテキストへの変換処理が実行され、仮の変換結果が得られます。
- 整列タイムスタンプ正確なタイムスタンプを保証するために、align関数を使用して転写結果の単語レベルのタイムスタンプのアライメントを行う。
- スピーカー分離複数話者認識のためにdiarize関数を呼び出して、各話者のラベルと対応する音声断片を取得します。
- 結果出力最終結果をテキストファイルまたはJSON形式で保存し、その後の処理や分析に利用できます。
1.環境準備
- システム要件
- Python 3.10環境(仮想環境を作るにはmambaかcondaを推奨します。)
- CUDAおよびcuDNNのサポート(GPUアクセラレーションに必要)
- FFmpegツールキット
- インストールの手順
# Python環境を作る
mamba create -n whisperx python=3.10
mamba whisperx を起動
# CUDAとcuDNNをインストールする
mamba install cuda cudnn
# BetterWhisperX をインストールします。
pip install git+https://github.com/federicotorrielli/BetterWhisperX.git
2.基本的な使い方
- コマンドラインの使用法:
# 基本トランスクリプション(英語)
whisperxオーディオ.wav
# 大きなモデルと高い精度を使う
whisperx audio.wav --model large-v2 --align_model WAV2VEC2_ASR_LARGE_LV60K_960H --batch_size 4
# スピーカーセパレーションを有効にする
whisperx audio.wav --model large-v2 --diarise --highlight_words True
# CPU モード(Mac OS X 用)
whisperx audio.wav --compute_type int8
- Pythonのコード呼び出し:
インポート
インポート gc
デバイス = "cuda"
audio_file = "audio.mp3"
batch_size = 16 # メモリが少ない場合は GPU を下げることができる。
compute_type = "float16" # メモリ不足の場合は "int8 "を使用。
# 1. モデルのロードと書き起こし
model = whisperx.load_model("large-v2", device, compute_type=compute_type)
audio = whisperx.load_audio(audio_file)
結果 = model.transcribe(audio, batch_size=batch_size)
# 2. 音素アライメント
model_a, metadata = whisperx.load_align_model(language_code=result["language"], device=device)
result = whisperx.align(result["segments"], model_a, metadata, audio, device)
# 3. スピーカーの分離(Hugging Face トークンが必要)
diarize_model = whisperx.DiarisationPipeline(use_auth_token=YOUR_HF_TOKEN, device=device)
diarize_segments = diarize_model(audio)
result = whisperx.assign_word_speakers(diarize_segments, result)
3.パフォーマンス最適化の推奨
- GPUメモリの最適化:
- バッチサイズを小さくする (batch_size)
- 小型モデルの使用(例:大型ではなくベース)
- 軽量計算タイプを選択(int8)
- 多言語サポート:
- デフォルト対応言語:英語、フランス語、ドイツ語、スペイン語、イタリア語、日本語、中国語、オランダ語、ウクライナ語、ポルトガル語
- 使用する言語を指定する:
--言語
(ドイツ語の例)
4.注意事項
- タイムスタンプは、特殊文字(数字や通貨記号など)に対して十分な精度が得られない場合がある。
- 複数の人が同時に話しているシーンの認識は効果的でない場合がある。
- スピーカーのセパレーションは現在も最適化中
- スピーカー分離機能を使用するには、ハギング・フェイスのアクセストークンが必要です。
- GPUドライバとCUDAバージョンの互換性の確保