モデル概要
モデル特徴
モデル能力
使用事例
🚀 [Whisper用Llamafileセット]
このプロジェクトは、whisper 用に生成された llamafiles のセットを提供します。これらのファイルは、音声認識と翻訳タスクに役立ちます。
🚀 クイックスタート
このセットのLlamafileを使用することで、簡単に音声認識と翻訳を行うことができます。以下の手順で始めましょう。
実行方法
chmod +x <model>.llamafile
./<model>.llamafile
✨ 主な機能
- 複数の多言語Whisperモデル用の量子化されたLlamafileを提供します。
- モデルはq8、q5kに量子化されており、オリジナルモデルも利用可能です。
- サーバーを起動し、オーディオファイルを適切な.wav形式に変換し、ターミナル出力にデコードされたテキストを表示します。
📦 インストール
依存関係のインストール
pip install --upgrade pip
pip install --upgrade git+https://github.com/huggingface/transformers.git accelerate datasets[audio]
💻 使用例
基本的な使用法
import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
from datasets import load_dataset
device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
model_id = "openai/whisper-large-v3"
model = AutoModelForSpeechSeq2Seq.from_pretrained(
model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)
processor = AutoProcessor.from_pretrained(model_id)
pipe = pipeline(
"automatic-speech-recognition",
model=model,
tokenizer=processor.tokenizer,
feature_extractor=processor.feature_extractor,
max_new_tokens=128,
chunk_length_s=30,
batch_size=16,
return_timestamps=True,
torch_dtype=torch_dtype,
device=device,
)
dataset = load_dataset("distil-whisper/librispeech_long", "clean", split="validation")
sample = dataset[0]["audio"]
result = pipe(sample)
print(result["text"])
高度な使用法
ローカルオーディオファイルのトランスクライブ
- result = pipe(sample)
+ result = pipe("audio.mp3")
言語指定でのトランスクライブ
result = pipe(sample, generate_kwargs={"language": "english"})
音声翻訳
result = pipe(sample, generate_kwargs={"task": "translate"})
タイムスタンプの取得
result = pipe(sample, return_timestamps=True)
print(result["chunks"])
単語レベルのタイムスタンプの取得
result = pipe(sample, return_timestamps="word")
print(result["chunks"])
複数のオプションを組み合わせた使用法
result = pipe(sample, return_timestamps=True, generate_kwargs={"language": "french", "task": "translate"})
print(result["chunks"])
📚 ドキュメント
モデルの詳細
WhisperはTransformerベースのエンコーダー・デコーダーモデルで、シーケンス-to-シーケンスモデルとも呼ばれます。このモデルは、100万時間の弱ラベル付きオーディオと400万時間の疑似ラベル付きオーディオで学習されています。
モデルのサイズと構成
Size | Parameters | 英語限定 | 多言語 |
---|---|---|---|
tiny | 39 M | 🔗 | 🔗 |
base | 74 M | 🔗 | 🔗 |
small | 244 M | 🔗 | 🔗 |
medium | 769 M | 🔗 | 🔗 |
large | 1550 M | x | 🔗 |
large-v2 | 1550 M | x | 🔗 |
large-v3 | 1550 M | x | 🔗 |
追加の速度とメモリの改善
Flash Attention
GPUがサポートしている場合は、Flash-Attention 2 を使用することをおすすめします。
pip install flash-attn --no-build-isolation
- model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True)
+ model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True, use_flash_attention_2=True)
Torch Scale-Product-Attention (SDPA)
GPUがFlash Attentionをサポートしていない場合は、BetterTransformers を使用することをおすすめします。
pip install --upgrade optimum
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True)
+ model = model.to_bettertransformer()
ファインチューニング
事前学習されたWhisperモデルは、異なるデータセットやドメインに対する汎化能力が強いです。ただし、特定の言語やタスクに対しては、ファインチューニングによって予測能力をさらに向上させることができます。Fine-Tune Whisper with 🤗 Transformers のブログ記事では、5時間のラベル付きデータでWhisperモデルをファインチューニングする手順が説明されています。
評価された使用法
これらのモデルの主な対象ユーザーは、現在のモデルの頑健性、汎化能力、機能、バイアス、制約を研究するAI研究者です。ただし、Whisperは開発者にとっても、特に英語の音声認識において非常に有用なASRソリューションとなり得ます。モデルがリリースされると、「意図された」使用法に限定することや、研究かどうかを判断する合理的なガイドラインを定めることは不可能であることを認識しています。
モデルは主にASRと英語への音声翻訳タスクで学習および評価されています。約10の言語で強力なASR結果を示しています。音声活動検出、話者分類、話者分離などの特定のタスクでファインチューニングすると、追加の機能が発揮される可能性がありますが、これらの領域では十分な評価が行われていません。ユーザーは、モデルを特定のコンテキストやドメインで展開する前に、十分な評価を行うことを強くおすすめします。
特に、Whisperモデルを個人の同意なしに録音した音声をトランスクライブするために使用することや、主観的な分類のために使用することを警告します。精度の欠陥が結果に大きな欠陥を引き起こす可能性のある高リスクのドメインでの使用をおすすめしません。モデルは音声のトランスクライブと翻訳を目的としており、分類のための使用は評価されていないだけでなく、特に人間の属性を推測するために使用することは適切ではありません。
学習データ
モデルは、100万時間の弱ラベル付きオーディオと400万時間の疑似ラベル付きオーディオで学習されています。付随する論文 で議論されているように、特定の言語でのトランスクリプションのパフォーマンスは、その言語で使用する学習データの量と直接相関しています。
パフォーマンスと制限
私たちの研究によると、多くの既存の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ライセンスの下で提供されています。



