whisperX - WhisperX:単語レベルのタイムスタンプによる自動音声認識。

(WhisperX: Automatic Speech Recognition with Word-level Timestamps.)

Created at: 2022-12-09 10:34:23
Language: Python
License: BSD-4-Clause

ささやきX

GitHub の星 GitHub の問題 GitHub ライセンス 囀る

それは何ですかセットアップ使用法多言語Python貢献その他の例

マックス・ベイン製 • 🌐 https://www.maxbain.com

ウィスペルクスアーチ

ウィスパーベースの自動音声認識 (ASR) により、強制アライメントを使用してタイムスタンプの精度が向上しました。

それはなんですか 🔎

このリポジトリは、多言語のユースケースである音素ベースのASRモデル(wav2vec2.0など)との強制的なアライメントを介して、openAIのウィスパーモデルのタイムスタンプを改良します。

Whisperは、OpenAIによって開発されたASRモデルであり、多様なオーディオの大規模なデータセットでトレーニングされています。非常に正確な文字起こしが生成されますが、対応するタイムスタンプは単語ごとではなく発話レベルであり、数秒不正確になる可能性があります。

音素ベースの ASRある単語を別の単語と区別する最小の音声単位を認識するように微調整された一連のモデル(「タップ」の要素pなど)。人気のあるサンプルモデルはwav2vec2.0です。

強制アライメントとは、正書法の文字起こしをオーディオ録音に合わせて、電話レベルのセグメンテーションを自動的に生成するプロセスを指します。

セットアップ ⚙️

このパッケージのインストール方法:

pip install git+https://github.com/m-bain/whisperx.git

また、ffmpeg、錆などをインストールする必要があるかもしれません。https://github.com/openai/whisper#setup こちらのopenAIの指示に従ってください

使用方法 💬 (コマンド ライン)

英語

サンプルセグメントでウィスパーを実行します(デフォルトのパラメータを使用)

whisperx examples/sample01.wav

タイムスタンプの精度を高めるには、GPU memを高くする代わりに、より大きなモデルを使用します。

whisperx examples/sample01.wav --model large.en --align_model WAV2VEC2_ASR_LARGE_LV60K_960H

whisperX を wav2vec2.0 に強制的にアライメントして使用した結果:

https://user-images.githubusercontent.com/36994049/208253969-7e35fe2a-7541-434a-ae91-8e919540555d.mp4

これを、多くの文字起こしが同期していない元のささやきと比較してください。

https://user-images.githubusercontent.com/36994049/207743923-b4f0d537-29ae-4be2-b404-bb941db73652.mov

その他の言語

音素ASRアライメントモデルは言語固有であり、テストされた言語の場合、これらのモデルはトーチオーディオパイプラインまたはハギングフェイスから自動的に選択されます。 コードを渡して、ささやき声を使うだけです。

--language
--model large

現在、デフォルト・モデルは に提供されています。検出された言語がこの一覧にない場合は、huggingface モデル ハブから音素ベースの ASR モデルを見つけて、データでテストする必要があります。

{en, fr, de, es, it, ja, zh, nl}

例:ドイツ語

whisperx --model large --language de examples/sample_de_01.wav

https://user-images.githubusercontent.com/36994049/208298811-e36002ba-3698-4731-97d4-0aebd07e0eb3.mov

パイソンの使用法 🐍

import whisperx

device = "cuda" 
audio_file = "audio.mp3"

# transcribe with original whisper
model = whisperx.load_model("large", device)
result = model.transcribe(audio_file)

# load alignment model and metadata
model_a, metadata = whisperx.load_align_model(language_code=result["language"], device=device)

# align whisper output
result_aligned = whisperx.align(result["segments"], model_a, metadata, audio_file, device)

print(result["segments"]) # before alignment

print(result_aligned["segments"]) # after alignment
print(result_aligned["word_segments"]) # after alignment

制限 ⚠️

  • 徹底的にテストされていない、特に英語以外の場合、結果は異なる場合があります-問題を投稿して、データの結果をお知らせください
  • ウィスパーは、話し言葉を正規化します(例:「57」からアラビア数字「57」)。音素を整列できるように、整列後にこの正規化を実行する必要があります。現在、数字を無視します。
  • 最初のウィスパータイムスタンプがある程度正確であることを前提としています(2秒以内に、必要に応じて調整します-マージンが大きいほどアライメントエラーが発生しやすくなります)
  • これを非常に迅速にハッキングしました、いくつかのエラーがあるかもしれません、あなたが何かに遭遇したら問題を提起してください。

貢献する 🧑 🏫

多言語の場合、このプロジェクトに貢献できる主な方法は、ハギングフェイスで音素モデルを見つけて(または自分でトレーニングして)、ターゲット言語の音声でテストすることです。結果に問題がない場合は、マージ要求とその成功を示すいくつかの例を送信します。

私たちが取り組んでいる次のメジャーアップグレードは、スピーカーのダイアライゼーションでささやくことですので、これについての経験があれば共有してください。

もうすぐです 🗓

[x]多言語初期化完了

[x]字幕.ass出力が完了しました

[x]言語検出に基づく自動整列モデル選択

[x] パイソンの使用が完了しました

[ ] 単語レベルの話者ダイアライゼーションの組み込み

[ ] バッチ処理による推論の高速化

接触 📇

お問い合わせ maxbain[at]robots[dot]ox[dot]ac[dot]uk ビジネス上の事柄については。

確認 🙏

もちろん、これはほとんどopenAIのささやきに対する単なる変更です。 強制アライメントに関するこのPyTorchチュートリアルへの認定と同様に

引用

これを研究に使用する場合は、リポジトリを引用してください。
@misc{bain2022whisperx,
  author = {Bain, Max},
  title = {WhisperX},
  year = {2022},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/m-bain/whisperX}},
}

ささやき紙だけでなく、

@article{radford2022robust,
  title={Robust speech recognition via large-scale weak supervision},
  author={Radford, Alec and Kim, Jong Wook and Xu, Tao and Brockman, Greg and McLeavey, Christine and Sutskever, Ilya},
  journal={arXiv preprint arXiv:2212.04356},
  year={2022}
}

および使用される任意のアライメントモデル(例:WAV2VEC2.0)。

@article{baevski2020wav2vec,
  title={wav2vec 2.0: A framework for self-supervised learning of speech representations},
  author={Baevski, Alexei and Zhou, Yuhao and Mohamed, Abdelrahman and Auli, Michael},
  journal={Advances in Neural Information Processing Systems},
  volume={33},
  pages={12449--12460},
  year={2020}
}