モデル概要
モデル特徴
モデル能力
使用事例
language:
- en
- zh
- de
- es
- ru
- ko
- fr
- ja
- pt
- tr
- pl
- ca
- nl
- ar
- sv
- it
- id
- hi
- fi
- vi
- he
- uk
- el
- ms
- cs
- ro
- da
- hu
- ta
- 'no'
- th
- ur
- hr
- bg
- lt
- la
- mi
- ml
- cy
- sk
- te
- fa
- lv
- bn
- sr
- az
- sl
- kn
- et
- mk
- br
- eu
- is
- hy
- ne
- mn
- bs
- kk
- sq
- sw
- gl
- mr
- pa
- si
- km
- sn
- yo
- so
- af
- oc
- ka
- be
- tg
- sd
- gu
- am
- yi
- lo
- uz
- fo
- ht
- ps
- tk
- nn
- mt
- sa
- lb
- my
- bo
- tl
- mg
- as
- tt
- haw
- ln
- ha
- ba
- jw
- su tags:
- audio
- automatic-speech-recognition
- IPA
- phonetic widget:
- example_title: Librispeech sample 1 src: https://cdn-media.huggingface.co/speech_samples/sample1.flac
- example_title: Librispeech sample 2 src: https://cdn-media.huggingface.co/speech_samples/sample2.flac model-index:
- name: ipa-whisper-base
results:
- task:
name: Automatic Speech Recognition
type: automatic-speech-recognition
dataset:
name: LibriSpeech (clean)
type: librispeech_asr
config: clean
split: test
args:
language: en
metrics:
- name: Test WER type: wer value: 99999999999999
- task:
name: Automatic Speech Recognition
type: automatic-speech-recognition
dataset:
name: LibriSpeech (other)
type: librispeech_asr
config: other
split: test
args:
language: en
metrics:
- name: Test WER type: wer value: 99999999999999
- task:
name: Automatic Speech Recognition
type: automatic-speech-recognition
dataset:
name: Common Voice 11.0
type: mozilla-foundation/common_voice_11_0
config: hi
split: test
args:
language: hi
metrics:
- name: Test WER type: wer value: 99999999999999 pipeline_tag: automatic-speech-recognition license: apache-2.0 base_model:
- task:
name: Automatic Speech Recognition
type: automatic-speech-recognition
dataset:
name: LibriSpeech (clean)
type: librispeech_asr
config: clean
split: test
args:
language: en
metrics:
- openai/whisper-base
Whisper IPA
Whisperは、自動音声認識(ASR)および音声翻訳のための事前学習済みモデルです。15000のラベル付き合成IPAデータ(goruut 0.6.2音素化ツールを使用して生成)でファインチューニングされたWhisperモデルは、多くの言語、データセット、ドメインに対してファインチューニングなしで強力な汎化能力を示します。
Whisperは、OpenAIのAlec Radfordらによる論文Robust Speech Recognition via Large-Scale Weak Supervisionで提案されました。オリジナルのコードリポジトリはこちらから見つけることができます。
免責事項: このモデルカードの内容は一部Hugging Faceチームによって書かれており、一部はオリジナルのモデルカードからコピー&ペーストされています。
ファインチューニングの詳細
- ファインチューニングには20時間44分16秒かかりました
- 15000の音声ファイルでトレーニングされました
- 使用されたGPUは24GB VRAMを搭載したNVIDIA 3090tiでした
- 70以上の言語にわたるCommon Voice 21のランダムな15000音声ファイルでファインチューニングされました
モデルの詳細
WhisperはTransformerベースのエンコーダ-デコーダモデルで、_シーケンス・トゥ・シーケンス_モデルとも呼ばれます。68万時間のラベル付き音声データを使用して、大規模な弱教師あり学習でトレーニングされました。
モデルは英語のみのデータまたは多言語データでトレーニングされました。英語のみのモデルは音声認識タスクでトレーニングされました。多言語モデルは音声認識と音声翻訳の両方でトレーニングされました。音声認識では、モデルは音声と同じ言語の書き起こしを予測します。音声翻訳では、モデルは音声とは異なる言語への書き起こしを予測します。
Whisperのチェックポイントは、5つの異なるサイズの構成で提供されています。最小の4つは英語のみまたは多言語データでトレーニングされています。最大のチェックポイントは多言語のみです。すべての10の事前学習済みチェックポイントはHugging Face Hubで利用可能です。チェックポイントは以下の表にまとめられており、Hub上のモデルへのリンクが含まれています:
サイズ | パラメータ数 | 英語のみ | 多言語 |
---|---|---|---|
tiny | 39 M | ✓ | ✓ |
base | 74 M | ✓ | ✓ |
small | 244 M | ✓ | ✓ |
medium | 769 M | ✓ | ✓ |
large | 1550 M | x | ✓ |
large-v2 | 1550 M | x | ✓ |
使用方法
音声サンプルを書き起こすには、モデルをWhisperProcessor
と一緒に使用する必要があります。
WhisperProcessor
は以下のために使用されます:
- 音声入力を前処理(モデルのためにログメルスペクトログラムに変換)
- モデル出力を後処理(トークンからテキストに変換)
モデルは、適切な「コンテキストトークン」を渡すことで、実行するタスク(書き起こしまたは翻訳)を認識します。これらのコンテキストトークンは、デコードプロセスの開始時にデコーダに与えられるトークンのシーケンスで、以下の順序を取ります:
- 書き起こしは常に
<|startoftranscript|>
トークンで始まります - 2番目のトークンは言語トークン(例:英語の場合は
<|en|>
) - 3番目のトークンは「タスクトークン」です。音声認識の場合は
<|transcribe|>
、音声翻訳の場合は<|translate|>
の2つの値を取ることができます - さらに、モデルがタイムスタンプ予測を含めない場合は
<|notimestamps|>
トークンが追加されます
したがって、典型的なコンテキストトークンのシーケンスは次のようになります:
<|startoftranscript|> <|en|> <|transcribe|> <|notimestamps|>
これは、モデルに英語で音声認識タスクを実行し、タイムスタンプを予測しないように指示します。
これらのトークンは強制または非強制にすることができます。強制の場合、モデルは各位置で各トークンを予測するように強制されます。これにより、Whisperモデルの出力言語とタスクを制御できます。非強制の場合、Whisperモデルは自動的に出力言語とタスクを予測します。
コンテキストトークンは次のように設定できます:
model.config.forced_decoder_ids = WhisperProcessor.get_decoder_prompt_ids(language="english", task="transcribe")
これにより、モデルは音声認識タスクで英語で予測するように強制されます。
書き起こし
音声からIPAへ
この例では、コンテキストトークンは「非強制」であり、モデルは自動的に出力言語(英語)とタスク(書き起こし)を予測します。
>>> from transformers import WhisperProcessor, WhisperForConditionalGeneration
>>> from datasets import load_dataset
>>> # モデルとプロセッサをロード
>>> processor = WhisperProcessor.from_pretrained("neurlang/ipa-whisper-base")
>>> model = WhisperForConditionalGeneration.from_pretrained("neurlang/ipa-whisper-base")
>>> model.config.forced_decoder_ids = None
>>> model.config.suppress_tokens = []
>>> model.generation_config.forced_decoder_ids = None
>>> model.generation_config._from_model_config = True
>>> # ダミーデータセットをロードし、音声ファイルを読み込む
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> sample = ds[0]["audio"]
>>> input_features = processor(sample["array"], sampling_rate=sample["sampling_rate"], return_tensors="pt").input_features
>>> # トークンIDを生成
>>> predicted_ids = model.generate(input_features)
>>> # トークンIDをテキストにデコード
>>> transcription = processor.batch_decode(predicted_ids, skip_special_tokens=False)
['mˈɪstɚ kwˈɪltɚ ˈɪz ðə ˈeɪ pˈɑsəl ˈʌv ðə ˈmɪdəl klˈæsɪz ˈænd wˈɪɹ glæd tˈu ˈælkəm ˈhɪz gˈʌsbəl']
>>> transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)
['mˈɪstɚ kwˈɪltɚ ˈɪz ðə ˈeɪ pˈɑsəl ˈʌv ðə ˈmɪdəl klˈæsɪz ˈænd wˈɪɹ glæd tˈu ˈælkəm ˈhɪz gˈʌsbəl']
コンテキストトークンは、skip_special_tokens=True
を設定することで書き起こしの最初から削除できます。
長文の書き起こし
Whisperモデルは、本質的に最大30秒の音声サンプルで動作するように設計されています。しかし、チャンキングアルゴリズムを使用することで、任意の長さの音声サンプルを書き起こすことができます。これはTransformersのpipeline
メソッドを通じて可能です。チャンキングは、パイプラインをインスタンス化する際にchunk_length_s=30
を設定することで有効になります。チャンキングが有効な場合、パイプラインはバッチ推論で実行できます。また、return_timestamps=True
を渡すことで、シーケンスレベルのタイムスタンプを予測するように拡張することもできます:
>>> import torch
>>> from transformers import pipeline
>>> from datasets import load_dataset
>>> device = "cuda:0" if torch.cuda.is_available() else "cpu"
>>> pipe = pipeline(
>>> "automatic-speech-recognition",
>>> model="neurlang/ipa-whisper-base",
>>> chunk_length_s=30,
>>> device=device,
>>> )
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> sample = ds[0]["audio"]
>>> prediction = pipe(sample.copy(), batch_size=8)["text"]
"mˈɪstɚ kwˈɪltɚ ˈɪz ðə ˈeɪ pˈɑsəl ˈʌv ðə ˈmɪdəl klˈæsɪz ˈænd wˈɪɹ glæd tˈu ˈælkəm ˈhɪz gˈʌsbəl"
>>> # 予測のタイムスタンプも返すことができます
>>> prediction = pipe(sample.copy(), batch_size=8, return_timestamps=True)["chunks"]
Whisperは終了タイムスタンプを予測しませんでした。これは、音声が単語の途中で切り取られた場合に発生することがあります。また、生成中にWhisperTimeStampLogitsProcessorが使用されたことを確認してください。
チャンキングアルゴリズムの詳細については、ブログ記事ASR Chunkingを参照してください。
ファインチューニング
事前学習済みのWhisperモデルは、異なるデータセットやドメインに対して強力な汎化能力を示します。しかし、特定の言語やタスクに対しては、ファインチューニングを通じて予測能力をさらに向上させることができます。ブログ記事🤗 TransformersでWhisperをファインチューニングは、わずか5時間のラベル付きデータでWhisperモデルをファインチューニングするためのステップバイステップガイドを提供します。
評価された使用法
これらのモデルの主な意図されたユーザーは、現在のモデルの堅牢性、汎化能力、能力、バイアス、制約を研究するAI研究者です。しかし、Whisperは特に英語の音声認識のためのASRソリューションとして、開発者にとっても非常に有用です。モデルが一度リリースされると、「意図された」使用にのみアクセスを制限したり、何が研究で何がそうでないかについて合理的なガイドラインを描いたりすることは不可能であることを認識しています。
モデルは主にASRおよび英語への音声翻訳タスクでトレーニングおよび評価されています。約10言語で強力なASR結果を示しています。特に音声活動検出、話者分類、話者ダイアリゼーションなどの特定のタスクでファインチューニングされた場合、追加の能力を示す可能性がありますが、これらの領域で堅牢に評価されていません。特定のコンテキストやドメインでモデルを展開する前に、ユーザーが堅牢な評価を実行することを強く推奨します。
特に、個人の同意なしに録音された録音を書き起こすためにWhisperモデルを使用したり、これらのモデルを何らかの主観的分類に使用したりすることに対して警告します。精度の欠陥が顕著な結果の欠陥につながる可能性のある意思決定コンテキストなどの高リスクドメインでの使用は推奨しません。モデルは音声を書き起こしおよび翻訳することを意図しており、分類のためにモデルを使用することは評価されていないだけでなく、特に人間の属性を推測するためには適切ではありません。
トレーニングデータ
モデルは、インターネットから収集された68万時間の音声と対応する書き起こしでトレーニングされました。このデータの65%(または43万8000時間)は英語の音声と一致する英語の書き起こしを表し、約18%(または12万6000時間)は非英語の音声と英語の書き起こしを表し、最終的な17%(または11万7000時間)は非英語の音声と対応する書き起こしを表します。この非英語データは98の異なる言語を表しています。
付随する論文で議論されているように、特定の言語での書き起こしのパフォーマンスは、その言語で使用するトレーニングデータの量と直接相関していることがわかります。
パフォーマンスと制限
私たちの研究は、多くの既存のASRシステムに対して、モデルがアクセント、背景ノイズ、専門用語に対する堅牢性が向上し、複数の言語から英語へのゼロショット翻訳が可能であり、音声認識と翻訳の精度がほぼ最先端レベルであることを示しています。
しかし、モデルは大規模なノイズの多いデータを使用して弱教師あり学習でトレーニングされているため、予測には実際には音声入力で話されていないテキスト(つまり、幻覚)が含まれる可能性があります。これは、言語に関する一般的な知識を考慮して、モデルが音声自体を書き起こそうとするのと同時に、音声の次の単語を予測しようとするためであると仮定しています。
私たちのモデルは言語によって不均一なパフォーマンスを示し、リソースが少ないおよび/または発見可能性が低い言語、またはトレーニングデータが少ない言語では精度が低くなります。モデルはまた、特定の言語の異なるアクセントや方言に対して異なるパフォーマンスを示し、異なる性別、人種、年齢、またはその他の人口統計学的基準の話者間で単語誤り率が高くなる可能性があります。完全な評価結果はこのリリースに付随する論文で提供されています。
さらに、モデルのシーケンス・トゥ・シーケンスアーキテクチャは、繰り返しテキストを生成しやすい傾向があり、ビームサーチや温度スケジューリングである程度軽減できますが、完全ではありません。これらの制限に関するさらなる分析は論文で提供されています。この動作と幻覚は、リソースが少ないおよび/または発見可能性が低い言語ではさらに悪化する可能性があります。
より広範な影響
Whisperモデルの書き起こし能力は、アクセシビリティツールの改善に使用される可能性があると予想しています。Whisperモデルはそのままではリアルタイムの書き起こしに使用できませんが、その速度とサイズは、他の人がそれらの上に構築したアプリケーションがほぼリアルタイムの音声認識と翻訳を可能にすることを示唆しています。Whisperモデルの上に構築された有益なアプリケーションの真の価値は、これらのモデルの不均一なパフォーマンスが実際の経済的影響を持つ可能性があることを示唆しています。
Whisperのリリースには、潜在的なデュアルユースの懸念もあります。この技術が主に有益な目的で使用されることを願っていますが、ASR技術をよりアクセス可能にすることで、より多くのアクターが能力のある監視技術を構築したり、既存の監視努力を拡大したりできるようになる可能性があります。速度と精度により、大量の音声通信の自動書き起こしと翻訳が手頃な価格で可能になるためです。さらに、これらのモデルはそのままでは特定の個人を認識する能力をある程度持っている可能性があり、これはデュアルユースと不均一なパフォーマンスの両方に関連する安全上の懸念を引き起こします。実際には、書き起こしのコストが監視プロジェクトの拡大の制限要因ではないと予想しています。
BibTeXエントリと引用情報
@misc{radford2022whisper,
doi = {10.48550/ARXIV.2212.04356},
url = {https://arxiv.org/abs/2212.04356},
author = {Radford, Alec and Kim, Jong Wook and Xu, Tao and Brockman, Greg and McLeavey, Christine and Sutskever, Ilya},
title = {Robust Speech Recognition via Large-Scale Weak Supervision},
publisher = {arXiv},
year = {2022},
copyright = {arXiv.org perpetual, non-exclusive license}
}



