それは何ですか • セットアップ • 使用法 • 多言語 • Python • 貢献 • その他の例
ウィスパーベースの自動音声認識 (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 に強制的にアライメントして使用した結果:
これを、多くの文字起こしが同期していない元のささやきと比較してください。
音素ASRアライメントモデルは言語固有であり、テストされた言語の場合、これらのモデルはトーチオーディオパイプラインまたはハギングフェイスから自動的に選択されます。 コードを渡して、ささやき声を使うだけです。
--language
--model large
現在、デフォルト・モデルは に提供されています。検出された言語がこの一覧にない場合は、huggingface モデル ハブから音素ベースの ASR モデルを見つけて、データでテストする必要があります。
{en, fr, de, es, it, ja, zh, nl}
whisperx --model large --language de examples/sample_de_01.wav
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
多言語の場合、このプロジェクトに貢献できる主な方法は、ハギングフェイスで音素モデルを見つけて(または自分でトレーニングして)、ターゲット言語の音声でテストすることです。結果に問題がない場合は、マージ要求とその成功を示すいくつかの例を送信します。
私たちが取り組んでいる次のメジャーアップグレードは、スピーカーのダイアライゼーションでささやくことですので、これについての経験があれば共有してください。
[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}
}