3行でいうと

  • 音声ファイルを外に出さず、Macの中だけで文字起こしできる。使うのはOpenAIのWhisperと、その派生ソフト。
  • whisper.cppはREADMEでApple Siliconを第一級として扱うとされ、日本語は「-l ja」で指定する。
  • 日本語の誤りは、large-v3でもデータにより100文字あたり7〜15文字ほど。固有名詞や話者の区別は苦手。
  • 誤りはゼロにならず、無音の部分で話していない文が出ることもある。人の確認が前提。

録音データを他社のサーバーに預けずに、Macの中だけで文字起こしできます。使うのは、OpenAIが公開した音声認識モデル「Whisper」と、その派生ソフトです。違いと、公式の手順、日本語での注意点をまとめました。この記事は実機で確かめた記録ではないので、数字と手順は、すべて公式ページや公開された論文からの引用です。

音声が外に出ない、という利点

クラウドの文字起こしサービスは、録音ファイルをネット経由で送ります。会議の録音、取材の音声、社内の相談など、外に出したくない内容もあるはずです。

手元のMacで動かす方法なら、音声ファイルは自分のディスクから出ません。モデルのファイルを最初にダウンロードするときだけネットを使います。そのあとは、ネットを切っても動くはずです(ここは見立てです)。

ただし、これは「勝手に外へ送られない」ことの話です。社内ルールや、録音した相手への同意が要らなくなるわけではありません。

「Whisper系」の4つの違い

名前が似たものが多いので、整理します。

名前 中身 Appleシリコンで使えるか
openai/whisper OpenAI公式。Pythonで動く元のソフト READMEにはpipでの導入と使い方が載っています。Mac向けの高速化の記載は、確認できた範囲ではありません
whisper.cpp Whisperを、C/C++で書き直したソフト READMEに「Apple Siliconを第一級として扱う」とあり、ARM NEON、Accelerate、Metal、Core MLで最適化と書かれています
mlx-whisper Appleの機械学習の枠組み(MLX)で動くWhisper Mac向け。変換済みモデルが、Hugging Faceの「MLX Community」で配られています
faster-whisper CTranslate2という推論エンジンで動かすWhisper READMEの測定はNVIDIAのGPUとIntelのCPUです。Appleの内蔵GPUへの対応は、READMEから確認できませんでした

faster-whisperは、READMEで「元のWhisperより最大4倍速く、メモリも少ない」と説明しています。ただし、これは開発元自身の測定です。条件は、13分の音声、NVIDIA RTX 3070 Ti、large-v2、fp16です。Macの速さを示す数字ではありません。

Macで選ぶなら、見立てです。コマンド操作に抵抗がなければwhisper.cppかmlx-whisperが、Appleシリコン向けに作られていて分かりやすい選択肢です。

モデルの大きさと、必要なメモリ・速さ

Whisperには、tiny、base、small、medium、large、turboの大きさがあります。OpenAIのREADMEの表は次のとおりです。

大きさ パラメータ数 必要なVRAM 相対速度
tiny 3,900万 約1GB 約10倍
base 7,400万 約1GB 約7倍
small 2億4,400万 約2GB 約4倍
medium 7億6,900万 約5GB 約2倍
large 15億5,000万 約10GB 1倍
turbo 8億900万 約6GB 約8倍

VRAMは、グラフィックボードのメモリのことです。MacではCPUとGPUがメモリを共有するので、ここでは「メモリの目安」と読み替えてください(見立てです)。相対速度は、largeを1としたときの比です。測定条件の詳細は、この記事では確かめていません。Macでの実際の速さを示す数字ではない点に、注意してください。

whisper.cppのREADMEには、別の表があります。ファイルの大きさとメモリです。

大きさ ファイル メモリ
tiny 75MiB 約273MB
base 142MiB 約388MB
small 466MiB 約852MB
medium 1.5GiB 約2.1GB
large 2.9GiB 約3.9GB

OpenAIの表より、メモリがかなり小さく見えます。測定のしかたが違うので、並べて比べることはできません。whisper.cppの表にはturboがありませんが、配布ページにはggml-large-v3-turbo.bin(1.5GiB)があります。

turboについては、OpenAIの説明があります。large-v3から、文字を出力する側の層を32から4に減らした版です。大きさは809Mで、速くなった代わりに、品質は「わずかに下がる」と説明されています。タイやカントニーズ語では、下がり方が大きいという注記もあります。また、翻訳には向きません。

日本語の精度:公開されている数字

日本語の精度は、使う音声で大きく変わります。公開された数字を、誰がどう測ったかとあわせて挙げます。

1. 学生の研究(二次情報)。 ジョージア工科大学の学生によるarXivの論文(2024年12月)です。Google Fleurs、Common Voice、JSUTという3つの日本語データを使い、文字の誤り率(CER)を測っています。結果は、Whisper Tinyが32.74%、Whisper Largeが4.63%でした。大きさで、ここまで差が出ます。ただし、Largeがどの版かは書かれておらず、論文の主題はWhisperの調整です。目安として見てください。

2. 日本語向けの派生モデル(開発元の自社測定)。 Kotoba Technologiesと研究者のAsahi Ushioが公開した「Kotoba-Whisper v2.0」は、large-v3を日本語向けに小さくしたモデルです。large-v3より6.3倍速い、と説明されています。モデルのページに、large-v3との比較表があります。誤り率は、空白を除き、jiwerというツールで計算した、とされています。

テストデータ Kotoba-Whisper v2.0(CER) large-v3(CER)
CommonVoice 8(日本語) 9.2 8.5
JSUT Basic 5000 8.4 7.1
ReazonSpeechのテスト用データ 11.6 14.9

large-v3でも、データによって7.1〜14.9%の誤りがあります。100文字あたり、7〜15文字の誤りです(筆者の言い換えです)。きれいに読み上げた音声(JSUT)より、実際の話し言葉を集めたデータ(ReazonSpeechのほう)で、誤りが増える傾向に見えます。この点は、見立てです。

3. 元の論文。 OpenAIの論文では、68万時間の音声で学習したと書かれています。ただし、日本語の誤り率を数字で示す表は、確認できませんでした。large-v3のモデルのページも、日本語の数字を載せていません。「言語によって性能がそろわない」とは書いてあります。

つまり、日本語の「公式の精度」は、確認できた範囲ではありません。自分の録音で、一度試すのがいちばん確かです。

:::

Appleシリコンでの動かし方(READMEの手順)

whisper.cpp。 READMEの手順です。

git clone https://github.com/ggml-org/whisper.cpp.git
cd whisper.cpp
sh ./models/download-ggml-model.sh base.en
cmake -B build && cmake --build build -j --config Release
./build/bin/whisper-cli -f samples/jfk.wav

base.enは英語専用の小さいモデルです。日本語には、日本語も扱える名前(small、medium、large-v3、large-v3-turboなど)を選びます。ダウンロードのスクリプトは、これらの名前に対応しています。

日本語を指定するオプションは-l ja、字幕ファイルを出すオプションは-osrtです。たとえば、次のようになります。READMEのオプション一覧から組み合わせたもので、この記事では動作を確かめていません。

sh ./models/download-ggml-model.sh large-v3-turbo
./build/bin/whisper-cli -m models/ggml-large-v3-turbo.bin -l ja -osrt -f input.wav

入力はWAV形式です。ほかの形式は、READMEにあるffmpegのコマンドで変換します。

ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav

Core MLを使うと、Appleの専用チップ(Neural Engine)で、音を読み取る部分が動きます。READMEでは、CPUだけの場合の3倍以上の速さ、と書かれています。ただし、最初の実行は遅くなります。手順は、./models/generate-coreml-model.sh base.enでモデルを作り、cmake -B build -DWHISPER_COREML=1で作り直す形です。

mlx-whisper。 公式の例(mlx-examples)の手順です。

brew install ffmpeg
pip install mlx-whisper
mlx_whisper audio_file.mp3

モデルは、--modelで指定できます。Pythonからなら、次のように、変換済みのモデルを名前で指定します。

import mlx_whisper
result = mlx_whisper.transcribe("FILE_NAME", path_or_hf_repo="mlx-community/whisper-large-v3-turbo")

元のopenai/whisper。 pip install -U openai-whisperのあと、whisper audio.mp3 --model turboで動きます。

使いどころ

  • 会議の録音。 議事録の下書きに向きます。誤りは残るので、決定事項や数字は、人が聞き直してください。
  • インタビュー。 取材の記録や、記事の下書きに向きます。引用する言葉は、必ず音声に戻って確かめます。
  • 動画の字幕。 whisper.cppは、SRTやVTTという字幕の形式で直接出力できます。時間の区切りも付くので、字幕の下書きに向きます。改行や言い回しは、手で直す前提にしてください。

うまくいかない典型例

固有名詞。 人の名前、社名、製品名、専門用語は、別の漢字や似た音の言葉に変わりやすい場面です。whisper.cppには、最初に文脈を与える--promptオプションがあります。名前の一覧を入れる使い方が考えられますが、効き方は、この記事では確かめていません。

複数人の話者。 誰が話したかを分ける機能は、Whisperの本体にはありません。whisper.cppのREADMEで確認できたのは、実験的なtinydiarizeだけで、例も英語のモデルです。日本語の会議では、話者の分離は、別の道具か手作業に頼る前提です。

雑音と、聞き取れない部分。 large-v3のモデルのページには、実際には話されていない文章が出力される場合があることと、同じ文を繰り返しやすいことが書かれています。OpenAIの論文も、同じ繰り返しや、出力が途中で欠ける問題、音声と無関係な文章が出る問題を認めています。

コーネル大学の研究(2024年6月、FAccT)では、1万3,000件以上の音声クリップを調べ、約1%の文字起こしに、話していない文章が丸ごと含まれていました。無音の音声に「Thank you」が出た例もあります。無言の区間や、間が長い話し方で起きやすい、と報告されています。

対策の見立てです。無音や雑音の多い区間は、あらかじめ切る。whisper.cppには、音声のない区間を除く--vadオプションがあります。出力は、必ず音声と照らして確認します。

モデルは、公式の配布元から

モデルのファイルは、大きなデータの塊です。出どころが不明なファイルを入れるのは避けてください。

  • whisper.cppのモデルは、READMEが案内するhuggingface.co/ggerganov/whisper.cppか、付属のダウンロードスクリプトから入れます。配布ページには、ファイルの整合性を確かめるためのハッシュ値が付いています。
  • mlx-whisperの変換済みモデルは、公式の例が示す「MLX Community」から入れます。ページのファイルサイズは、turboで1.61GBでした。
  • ライセンスは、モデルごとに違います。large-v3は、Hugging FaceのページでApache 2.0、turboはMIT、whisper.cppの配布ページもMITとされています。

「高速版」や「日本語特化版」は、第三者が公開しているものも多くあります。使うなら、誰が作ったか、元のモデルは何か、ライセンスは何か、を確認してください。

気をつけること

  • 数字は、公式のページや、ほかの人の測定です。M6 Mac miniでの速さは、この記事ではまだ測っていません。
  • 日本語の誤り率は、データによって大きく変わります。表の数字を、そのまま自分の録音に当てはめないでください。
  • 誤りはゼロになりません。人の確認を前提にしてください。

出典

更新履歴

  • 2026年10月25日 書き方を直しました。
    • 前:運営者が使っていないと読める書き方 → いま:「この記事は、実際に使って確かめた記録ではありません」。公式の資料を読んでまとめた記事で、使い心地は書いていない、という意味に直した