用語集 / どう聞き取るか

Whisper

更新日:

定義

Whisperは、OpenAIが2022年に公開したオープンソースの音声認識モデルのファミリーで、68万時間の音声で訓練され、約99言語に対応しています。重みが自由に入手できるので、Whisperは多くのローカル文字起こし・音声入力ツールのエンジンになりました。

Whisperにはtinyからlargeまでのサイズがあり、大きいモデルほど精度が高く、遅くなります。ストリーミングではなくバッチで文字起こしするので、言葉をリアルタイムで表示するツールは、たいていストリーミングモデルと組み合わせ、ストリーミングモデルが対応していない言語にWhisperを使います。

Apple siliconでは、最適化されたランタイムによって、大きめのWhisperモデルでもデバイス上で快適に動きます。これが、現世代のプライベートでローカルなMac音声入力ツールを可能にしました。

サイズと、どれを選ぶべきか

tinyとbaseは高速ですが粗く、ボイスメモ程度なら十分です。smallは音声入力に使える最低ラインです。mediumとlargeはプロの仕事に十分な精度があり、最近のMacなら十分に高速です。現在いちばんバランスが良いのはlarge-v3-turboです。デコーダを軽量化したlargeモデルで、精度の大部分を保ったまま数倍の速度が出ます。選択肢を用意しているMacツールのほとんどはこれらを提供しています。音声入力に適しているのは、待ちくたびれる前にテキストを返してくれる範囲で、いちばん大きなモデルです。

ストリーミングではなくバッチ

Whisperは音声の一定区間を読み、それからその区間の文字起こしを書きます。フレーズ全体を見てから判断するので精度は高くなりますが、バッチ処理になります。話し終えるまで何も表示されません。Whisperだけで作られたツールは、1文ごとに待たされる感じがします。ストリーミングするツールは、リアルタイムの言葉にはトランスデューサモデルを組み合わせ、そのモデルが扱えない言語にWhisperを使います。

既知の弱点

Whisperは無音やごく短いクリップでハルシネーションを起こし、誰も言っていないもっともらしいフレーズを生成します。長い音声では同じ部分を繰り返すこともあります。どちらもよく知られており、対策も確立しています。モデルを動かす前に無音を削る、チャンクを短く保つ、話し声でない音声に対する出力は疑ってかかる、の3つです。数字や固有名詞は、ほかのASRと同じく、あなたの意図した表記ではなく、いちばんありそうな表記になります。

Macの「ターミナル」でWhisperを実行する方法

OpenAIは、WhisperをコマンドラインツールつきのPythonパッケージとして公開しています。プロジェクトによると、コードはPython 3.8から3.11で動作する想定で、オーディオファイルの読み込みにはffmpegツールが必要です。以下の手順は、PythonとHomebrewがすでにあることを前提にしています。

  1. 「ターミナル」を開き、ffmpegをインストールします:brew install ffmpeg
  2. Whisperをインストールします:pip install -U openai-whisper
  3. ファイルを文字起こしします:whisper audio.mp3 --model turbo
  4. 初回の実行ではモデルがダウンロードされるので待ちます。モデルはホームフォルダの.cache/whisperフォルダに保存され、以降はそれが使われます。
  5. 文字起こしは現在のフォルダにあります。デフォルトでは、Whisperはtxt、vtt、srt、tsv、jsonのファイルを書き出します。
  6. 自動検出を省きたい場合は、--languageのあとに言語名を付けます。例:--language Japanese
  7. whisper --helpを実行すると、すべてのオプションを確認できます。

Whisper turboとlarge:公開されている数値

OpenAIの表では、largeモデルはパラメータ数15億5,000万、ビデオメモリ約10GB、相対速度1xです。turboモデルはパラメータ数8億900万、約6GB、約8xです。OpenAIはturboを、精度の低下を最小限に抑えたlarge-v3の最適化版と説明しており、コマンドラインツールのデフォルトモデルになっています。

これらの数値には注意点が2つあります。速度は、英語を文字起こしするNVIDIA A100グラフィックカードで測定されたもので、OpenAIは実際の速度は言語、話す速さ、ハードウェアによって大きく変わる可能性があるとしています。また、turboは翻訳用に学習されていないので、翻訳を指示しても元の言語のまま返します。

  • tiny:パラメータ数3,900万、約1GB、約10x。
  • base:パラメータ数7,400万、約1GB、約7x。
  • small:パラメータ数2億4,400万、約2GB、約4x。
  • medium:パラメータ数7億6,900万、約5GB、約2x。
  • large:パラメータ数15億5,000万、約10GB、1x。
  • turbo:パラメータ数8億900万、約6GB、約8x。

Whisperは翻訳できますか?ほかの言語をどう扱うか

Whisperは2つの作業で学習されました。音声をその言語のまま文字起こしすることと、ほかの言語の音声を英語に翻訳することです。学習データ68万時間のうち、約43万8,000時間は英語の音声と英語の文字起こし、約12万6,000時間は英語以外の音声と英語の文字起こし、約11万7,000時間は英語以外の音声と同じ言語の文字起こしで、98言語にわたります。

そのため、翻訳は一方向にしか行えません。英語以外の音声から英語のテキストを得るには--task translateを追加し、OpenAIが勧めるとおりmediumかlargeのモデルを使います。Whisperは英語の音声をほかの言語に翻訳しません。

tiny、base、small、mediumの各サイズには、名前が.enで終わる英語専用版もあります。OpenAIによると、英語ではこちらの方が性能が高い傾向があり、特にtiny.enとbase.enで顕著で、small.enとmedium.enでは差が小さくなります。

よくある質問。

Whisperは無料で使えますか?

はい。モデルはMITライセンスのオープンソースで、自分のハードウェアで動きます。手間がかかるのは、それを使いやすい音声入力ツールに仕上げることで、Macのローカル音声入力アプリの多くが料金を取っているのはその部分です。

Whisperはクラウドなしで、Macで動きますか?

はい、しかも快適に動きます。Apple silicon向けに最適化されたランタイムなら、大きなモデルも実用的な速度でローカルで動きます。市販されているMacのローカル音声入力・文字起こしツールはどれも、Whisperかそれに近いモデルをこの方法で使っています。

Whisperは話している間にテキストをストリーミングしますか?

標準ではしません。チャンクが終わってから、そのチャンクを文字起こしします。言葉をリアルタイムで表示するツールは、ストリーミングモデルを併用し、ストリーミングモデルが対応していない言語にWhisperを使っています。

Whisperにはどのくらいのメモリが必要ですか?

OpenAIが示すビデオメモリの目安は、tinyとbaseが約1GB、smallが約2GB、mediumが約5GB、turboが約6GB、largeが約10GBです。

Whisperのbaseとbase.enの違いは何ですか?

base.enは英語専用に学習されたモデルで、baseは多言語モデルです。OpenAIによると、英語では.enモデルの方が性能が高い傾向があり、特にtinyとbaseのサイズで顕著です。

Whisperは英語をほかの言語に翻訳できますか?

できません。Whisperのtranslateタスクは、ほかの言語の音声を英語のテキストにするものです。turboモデルはそもそも翻訳用に学習されていないので、このタスクにはmediumかlargeを使ってください。

この用語が出てくるガイド

ブログ記事

関連用語

いつだって、声のほうが速かった。

7日間無料、その後は$19 USDの買い切り。アカウント不要、サブスクリプションなし、アップロードなし。

macOS 14以降 · Apple silicon