モデル概要
モデル特徴
モデル能力
使用事例
🚀 Whisper
Whisperは、自動音声認識(ASR)と音声翻訳のための事前学習済みモデルです。68万時間のラベル付きデータで学習されたWhisperモデルは、微調整することなく多くのデータセットやドメインに対して強力な汎化能力を示します。
Whisperは、OpenAIのAlec Radfordらによる論文 Robust Speech Recognition via Large-Scale Weak Supervision で提案されました。元のコードリポジトリは こちら で確認できます。
免責事項:このモデルカードの内容の一部はHugging Faceチームによって作成され、一部は元のモデルカードからコピー&ペーストされています。
🚀 クイックスタート
このモデルは自動音声認識と音声翻訳のタスクに使用できます。以下のセクションでは、モデルの詳細、使用方法、評価方法などについて説明します。
✨ 主な機能
- 68万時間のラベル付きデータで学習された事前学習済みモデル
- 微調整なしで多くのデータセットやドメインに対して強力な汎化能力
- 英語の音声認識と多言語の音声認識・翻訳が可能
📦 インストール
このモデルを使用するには、transformers
、datasets
、evaluate
、torch
などの必要なライブラリをインストールする必要があります。以下のコマンドでインストールできます。
pip install transformers datasets evaluate torch
💻 使用例
基本的な使用法
>>> from transformers import WhisperProcessor, WhisperForConditionalGeneration
>>> from datasets import load_dataset
>>> # load model and processor
>>> processor = WhisperProcessor.from_pretrained("openai/whisper-tiny.en")
>>> model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-tiny.en")
>>> # load dummy dataset and read audio files
>>> 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
>>> # generate token ids
>>> predicted_ids = model.generate(input_features)
>>> # decode token ids to text
>>> transcription = processor.batch_decode(predicted_ids, skip_special_tokens=False)
['<|startoftranscript|><|notimestamps|> Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.<|endoftext|>']
>>> transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)
[' Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel.']
高度な使用法
>>> 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="openai/whisper-tiny.en",
>>> 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"]
" Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel."
>>> # we can also return timestamps for the predictions
>>> prediction = pipe(sample.copy(), batch_size=8, return_timestamps=True)["chunks"]
[{'text': ' Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel.',
'timestamp': (0.0, 5.44)}]
📚 ドキュメント
モデル詳細
WhisperはTransformerベースのエンコーダ・デコーダモデルで、シーケンス-to-シーケンス モデルとも呼ばれます。大規模な弱教師付きでアノテーションされた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 | ✓ |
評価
このコードスニペットは、LibriSpeech test-clean でWhisper tiny.enを評価する方法を示しています。
>>> from datasets import load_dataset
>>> from transformers import WhisperForConditionalGeneration, WhisperProcessor
>>> import torch
>>> from evaluate import load
>>> librispeech_test_clean = load_dataset("librispeech_asr", "clean", split="test")
>>> processor = WhisperProcessor.from_pretrained("openai/whisper-tiny.en")
>>> model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-tiny.en").to("cuda")
>>> def map_to_pred(batch):
>>> audio = batch["audio"]
>>> input_features = processor(audio["array"], sampling_rate=audio["sampling_rate"], return_tensors="pt").input_features
>>> batch["reference"] = processor.tokenizer._normalize(batch['text'])
>>>
>>> with torch.no_grad():
>>> predicted_ids = model.generate(input_features.to("cuda"))[0]
>>> transcription = processor.decode(predicted_ids)
>>> batch["prediction"] = processor.tokenizer._normalize(transcription)
>>> return batch
>>> result = librispeech_test_clean.map(map_to_pred)
>>> wer = load("wer")
>>> print(100 * wer.compute(references=result["reference"], predictions=result["prediction"]))
5.655609406528749
微調整
事前学習済みのWhisperモデルは、異なるデータセットやドメインに対して強力な汎化能力を示します。ただし、特定の言語やタスクに対しては、微調整 することで予測能力をさらに向上させることができます。ブログ記事 Fine-Tune Whisper with 🤗 Transformers では、5時間のラベル付きデータでWhisperモデルを微調整する手順が説明されています。
評価された用途
これらのモデルの主な対象ユーザーは、現在のモデルのロバスト性、汎化能力、機能、バイアス、制約を研究するAI研究者です。ただし、Whisperは開発者にとってもASRソリューションとして非常に有用であり、特に英語の音声認識に適しています。モデルが公開されると、「意図された」用途のみにアクセスを制限したり、何が研究であり何が研究でないかについて合理的なガイドラインを定めることは不可能であることを認識しています。
モデルは主にASRと英語への音声翻訳のタスクで学習および評価されています。約10の言語で強力なASR結果を示しています。音声活動検出、話者分類、話者分離などの特定のタスクで微調整された場合、追加の機能を示す可能性がありますが、これらの領域では十分な評価が行われていません。ユーザーは、モデルを特定のコンテキストやドメインで展開する前に、十分な評価を行うことを強くお勧めします。
特に、Whisperモデルを本人の同意なしに録音した音声の文字起こしに使用したり、何らかの主観的な分類に使用することを警告します。精度の欠陥が結果に大きな欠陥を引き起こす可能性のある高リスクのドメインでの使用はお勧めしません。モデルは音声の文字起こしと翻訳を目的としており、分類に使用することは評価されておらず、特に人間の属性を推測するために使用することは適切ではありません。
学習データ
モデルは、インターネットから収集された68万時間の音声と対応する文字起こしデータで学習されています。このデータの65%(または43.8万時間)は英語の音声と一致する英語の文字起こしを表し、約18%(または12.6万時間)は非英語の音声と英語の文字起こしを表し、残りの17%(または11.7万時間)は非英語の音声と対応する文字起こしを表しています。この非英語データは98の異なる言語を表しています。
付随する論文 で議論されているように、特定の言語での文字起こしのパフォーマンスは、その言語で使用する学習データの量と直接相関していることがわかります。
パフォーマンスと制限
私たちの研究によると、多くの既存のASRシステムに比べて、これらのモデルはアクセント、背景雑音、専門用語に対するロバスト性が向上しており、複数の言語から英語へのゼロショット翻訳も可能です。また、音声認識と翻訳の精度は最先端レベルに近いです。
ただし、モデルは大規模なノイズの多いデータを使用して弱教師付きで学習されているため、予測には音声入力で実際に話されていないテキストが含まれる場合があります(すなわち、幻覚現象)。これは、モデルが言語の一般知識を持っているため、音声の次の単語を予測しようとすることと、音声自体を文字起こししようとすることを組み合わせるために起こると考えられます。
私たちのモデルは言語間で不均一なパフォーマンスを示し、低リソースおよび/または低発見可能性の言語、または学習データが少ない言語では精度が低いことが観察されています。モデルはまた、特定の言語の異なるアクセントや方言でも異なるパフォーマンスを示し、異なる性別、人種、年齢、またはその他の人口統計学的基準の話者間で単語誤り率が高くなる場合があります。完全な評価結果は このリリースに付随する論文 に掲載されています。
さらに、モデルのシーケンス-to-シーケンスアーキテクチャは、繰り返しのテキストを生成しやすい傾向があります。これはビームサーチや温度スケジューリングによってある程度軽減できますが、完全には解消できません。これらの制限に関するさらなる分析は 論文 で提供されています。この振る舞いと幻覚現象は、低リソースおよび/または低発見可能性の言語でより悪化する可能性があります。
広範な影響
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}
}
📄 ライセンス
このモデルは apache-2.0
ライセンスの下で提供されています。



