← [ TECH / 技術部 ] に戻る
OBSERVATION · 其の0372 · 2025.10.16

MacでWhisperをインストールして音声認識を試す(ローカル実行・Apple Silicon対応)

こんにちは、パレイド技術部の夏目です。

(2026-06-08 更新)モデル表に large-v3-turbo を追加し、高速化の選択肢として MLX 編(③)を追記しました。

Whisperとは(1分で把握)

WhisperはOpenAIが提供する音声→テキストの汎用ASR(Automatic Speech Recognition)モデル。多言語対応・雑音耐性が高く、ローカルでも動作します。

  • お手軽:Pythonパッケージで即動作
  • 速さ重視:faster-whisper / whisper.cpp / MLX(Apple Silicon ネイティブ)
  • モデルはサイズ別(精度↔速度のトレードオフ)

Whisperは無料で使えます。オープンソース(MITライセンス)なので、Macなどでローカル実行する分には料金不要です。
プライバシー・コスト重視・少量処理の用途に向いており、逆にスピード・大量処理・安定性重視な業務用途では有料のAPI版もおすすめです。

本記事では、Macにローカル環境構築を行います。

前提環境と用語

  • Mac(Apple Silicon推奨:M1/M2/M3世代、Intel Macでも可)
  • Homebrew(パッケージ管理)
  • Python 3.10+(仮想環境での利用推奨)
  • FFmpeg(音声/動画のデコードに必須)

1. 最短ルート:Python版Whisperを入れて動かす

最新のPython環境が整っていれば、whisperはpip installで簡単に導入が可能です。
初めての場合など、必要に応じてPython環境の準備から行います。

1-1. Homebrew & Python仮想環境の準備

まずHomebrewを導入します。既に入っている場合はそのままで構いません。

# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

次にPythonを導入します。

Macに標準で入っているものはとは別にインストールすると便利です。
バージョンは3.11以降など新しいもので問題ありません。

brew install python@3.11

また、検証用の作業ディレクトリ(例:~/Works/whisper_try)を用意しておくと便利です。

mkdir -p ~/Works/whisper_try && cd ~/Works/whisper_try

最後に仮想環境を作成・有効化します。仮想環境は無くてもOKです。

python3 -m venv .venv
source .venv/bin/activate

1-2. FFmpegの導入

Whisperは内部で音声を読み込む際にFFmpegを利用します。未導入の場合はインストールしましょう。

brew install ffmpeg

ここれはHomebrewを利用しています。導入済みでパスが通っていればOKです。

1-3.openai-whisperのインストール

whisperをインストールします。仮想環境を利用する場合は、念の為pipもupgradeしましょう。

pip install --upgrade pip
pip install openai-whisper

Apple Silicon環境ではPyTorchの準備で時間がかかる場合がありますが、そのまま待てばOKです。

1-4. はじめての文字起こし

CLIまたはPythonからWhisperを呼び出し、音声ファイルを変換します。

  • すでに手元の音声ファイル(.m4a / .mp3 / .wav)があればそれを使ってOK
  • ない場合は、QuickTime PlayerでMacのマイクから数十秒録音して保存

録音品質(マイク・環境)が大きく影響するため、外部マイクの利用、静かな環境での録音をお勧めします。

また長時間音声(30分以上)はWhisperのメモリ消費が増えるため、FFmpeg等で分割してから処理することをおすすめします。

ボイスメモアプリでのサンプル作成

「ボイスメモ」アプリでも録音可能です。録音後、左側の一覧で対象を右クリック → 「書き出す」 を選ぶとデスクトップなど任意の場所に .m4a 形式で保存できます。

sayコマンドを使ったサンプル作成

試験用途のサンプルは、sayコマンドを使って生成することもできます。精度の確認に便利です。

  1. AIFF形式で合成音声を作成
say -v Kyoko "これはWhisperのテスト用音声サンプルです。" -o sample.aiff
  1. AIFF→WAV変換
ffmpeg -i sample.aiff sample.wav

3.テストで WAVファイルを再生

afplay sample.wav

パレイドMacで音声を読み上げる”say”コマンドの使い方|ショートカット連携と商用利用の注意点この記事のポイント(30秒で要点) Mac標準の音声読み上げコマンド「say」で、文章をすぐ音声化できる 動画ナレーション・通知音・時報などに幅広く…

1-4-2. CLIを使う方法

  • 最も軽量なtinyモデルで試すサンプルです。文字起こしの結果が sample.txt に出力されます
whisper sample.m4a --model tiny --language Japanese --task transcribe --output_format txt

※初回実行時は指定モデル(例: tiny)が自動ダウンロードされます(数百MB〜数GB)。2回目以降は再利用されるため高速です。

  • CPU動作では警告(FP16→FP32)が表示される場合がありますが、正常な動作です。
  • 言語自動判定に任せるなら –language は省略可能です。
  • 認識精度を上げたい場合は --model small--model medium もお試しください。
    (後述の「モデルの選び方」も参照)。
実行例(実際の出力ログ)

下記は、Sayコマンドで作成したWAVファイルを、tinysmall モデルで文字起こしした例です。
tinyでは一部、誤認識が見られますが、smallでは正確に認識できています。

$ whisper sample.wav --model tiny --language Japanese --task transcribe --output_format txt
[00:00.000 --> 00:03.200] これはウィスパーのテストようウォン生産プルです

$ whisper sample.wav --model small --language Japanese --task transcribe --output_format txt
[00:00.000 --> 00:05.000] これはウィスパーのテスト用音声サンプルです。

1-4-3. Pythonスクリプトで使う方法

smallモデルを試すサンプルです。結果を標準出力に出力します。

Pythonからの呼び出しは、自動化等でスクリプト内で処理をカスタマイズしたい場合に便利です。

transcribe.py

import whisper
import sys

# "tiny" "base" "small" "medium" "large-v3" など
MODEL_NAME = "small"    # 日本語は small 以上がバランス良

def main(audio_path: str):
  model = whisper.load_model(MODEL_NAME)

  # 実用では、句読点やカナ表記はポスト処理で整えるのがおすすめ
  result = model.transcribe(audio_path, task="transcribe", language="Japanese")
  print(result["text"]) 

if __name__ == "__main__":
  if len(sys.argv) < 2:
    print("Usage: python transcribe.py ")
    sys.exit(1)

  main(sys.argv[1])

実行例は下記の通り。

$ python transcribe.py sample.m4a
これはウィスパーのテスト用音声サンプルです。

CPU動作では警告(FP16→FP32)が表示される場合がありますが、正常な動作です。

モデルの選び方(tiny/base/small/medium/large)

本記事ではtinyとsmallのみ紹介していますが、他にも下記のような選択肢があります。

  • tiny / base:速い・軽い。まずは動かす用/ノート取り/会議の要点拾い
  • small:バランス良い。日本語でも実務の下書きに耐えることが多い
  • medium:精度↑。下処理や長時間に強い
  • large/large-v3:最上位の精度。ただし重い(メモリ・時間)

録音品質(マイク・環境)が良ければsmallモデルでも驚くほど読めます。
小さめのモデルから始め、必要時により大きなモデルを試す、という運用が効率的です。

ファイルサイズと用途の目安をまとめておきます。(2026年6月時点)

モデル名 サイズ目安 精度 用途例
tiny ~75MB 動作確認/要点拾い
base ~142MB やや低 ノート/会議メモ
small ~461MB 実務下書き/議事録
medium ~1.5GB 長時間/高精度
large-v3 ~2.9GB 最高 校正/重要用途
large-v3-turbo ~1.6GB 高(large-v3 に近い) 日本語実務の本命・速度と精度の両立

実用のためのTIPS(句読点・話者分離・長時間)

  • 句読点:Whisperは基本つけてくれますが、校正スクリプトで整えると読みやすさが段違い。
  • 話者分離(ダイアライゼーション):Whisper単体では話者区別が弱め。pyannote.audioinsanely-fast-whisper 等のツール併用が有効。
  • 長時間音声5〜15分程度ならそのまま。1時間超は分割処理(FFmpegでチャンク化)を推奨します。恒常的に長時間音声を扱う場合は、faster-whisper等の利用も検討の対象となります。
  • 分割例:
    • ffmpeg -i long.m4a -f segment -segment_time 600 -c copy out_%03d.m4a

よくあるエラーと対処

  • ffmpeg not foundbrew install ffmpeg を忘れていないか確認。which ffmpeg でパスを確認します。
  • ModuleNotFoundError: torchopenai-whisper は内部でPyTorchを使います。仮想環境を作り直し、pip install --upgrade pip の上で再度インストールし直してみましょう。
  • メモリ不足/遅い:モデルを小さく(small→base)、もしくはfaster-whisper(int8)へ切替え。
  • 文字化け/記号が多い:録音品質の見直し(マイク距離、雑音)。語尾処理はポストプロセスで整形。

FAQ(よくある質問)

Q1. API版(クラウド)と何が違う?
A. この記事はローカル実行(APIキー不要)の方法です。クラウド版はサーバで処理されるため速度・精度が安定しやすい一方、コストとプライバシーの考慮が必要です。

Q2. Apple Silicon(M1/M2/M3/M4/M5)でも実行可能ですか?
A. はい。Apple Siliconは、CPUでも実用的な速度が出ます。

Q3. 日本語の精度を上げるには?
A. モデルをsmall/medium以上に、録音品質を改善(外部マイク、静かな環境)。長音・固有名詞は後編集で辞書補正する運用が現実的です。

Q4. 句読点や段落分けがいまいち…
A. ポスト処理で句点ごとに改行見出し付与を自動化しましょう。将来的に話者分離の併用で読み物品質が上がります。

Q5. 動画(.mp4)からも文字起こしできますか?
A. 可能です。WhisperはFFmpegで音声抽出→文字起こしを行います。CLIでもPythonでも拡張子は気にせずOKです。

Q6. 商用利用は可能?
A. Whisperやモデル自体はオープンソースでMITライセンスで商用利用も可能ですが、法務観点(音源の権利・機密性)は別途ご確認ください。

Q7. GPUは使える?
A. Macでは基本CPU実行ですが、Linux/Windows環境ではGPU(CUDA)対応のPyTorchで高速化可能です。

Q8. 文字起こし結果の自動整形方法は?
A. ポストプロセスで句点ごとに改行、見出し付与、カナ表記補正などをPythonスクリプト等で自動化可能です。

まとめ

  • 最短ルートbrew install ffmpegpip install openai-whisperwhisper sample.m4a --model tiny
  • 実用small 以上 + 録音品質の改善
  • 高速化faster-whisper(int8) / whisper.cpp / MLX(Apple Silicon) を用途に応じて検討
  • 長時間音声:分割処理・後編集・話者分離の導入

どの実装が自分に合うかは、4 実装の違いを実測で比較した決定版ガイドで確認できます。

パレイドMacでWhisperを高速化②whisper.cpp編:導入・モデル(ggml)DL・CLI実行の使い方【Apple Silicon】こんにちは、パレイド技術部の夏目です。 (2026-06-08 更新)Apple Silicon での GPU/Metal 利用と現行 CLI 名(whispe… パレイドMac版Whisper比較ガイド【決定版】openai-whisper・faster-whisper・whisper.cpp・MLX、4実装を同条件で再計測こんにちは、パレイド技術部の夏目です。 (2026-06-09 更新)MLX-Whisper を加えた4実装を同条件で再計測し、決定版に改稿しました。 Macで… パレイドMacでWhisperを高速化する方法①:faster-whisper編(Python実装・Apple Silicon対応)Mac (Apple Silicon対応) で faster-whisper を導入し、Whisper の文字起こしを最大3倍高速化する方法を解説します。 パレイドMacでWhisperを高速化する方法③:MLX編(Apple Silicon ネイティブ・mlx-whisper)こんにちは、パレイド技術部の夏目です。 MacでWhisperを高速化するシリーズの第3弾です。これまで①faster-whisper(Python実装・CTr…

▶ 関連動画 · YOUTUBE
━━ 観るのを再開 ━━
前の記事を読む
技術部 · Windowsで Mac の”say”を再現|PowerShellで音声合成APIを使う方法
動画を観る
YouTube
次の記事を読む
技術部 · MacでWhisperを高速化する方法①:faster-whisper編(Python実装・Apple Silicon対応)
━━ 他の観測領域 ━━
TECH · 技術部
ローカルLLM完全ガイド:Ollama/LM Studio 導入からモデル選定・高速化・RAGまで【Mac・Apple Silicon・2026年版】
PHIL · 思想部
同じ幽霊でも、石燕と暁斎では別の手 ── 写実化が剝がす「画家の画風」
FRONT · 辺境部
機械に棲む山彦 第8回: 存在は名乗っていた——空耳の主を検索したら実在した