はじめに
最近、自動音声の普及が進んでいます。日本にいるときは何も感じなかったですが、海外に住んでいると、お店や施設に電話をかけたときに流れる自動音声が現地語オンリーで、何を言っているのか聞き取れない…という場面によく出くわします。特にフランス語圏だと早口の案内も多く、その場で全部理解するのはなかなか大変です。
「じゃあ通話を録音して、後でゆっくり文字起こしすればいいのでは」と思ったのですが、ここで最初の壁にぶつかりました。
背景: iPhoneの標準文字起こしが使えなかった
iOS 18.1以降、iPhoneの電話アプリには標準で「通話録音」と「文字起こし」機能が搭載されています。ただしこの機能、Apple Intelligence非対応のモデルだと使えない、あるいは機能が制限されるという制約があります。
自分が使っているのはiPhone 12で、Apple Intelligence非対応モデル。通話の録音自体はできても、AIによる高精度な文字起こし・要約の恩恵は受けられませんでした。
そこで、「自分のMacにローカルでWhisperを入れて、録音した音声ファイルを後から文字起こしすればいいのでは」という方針に切り替えました。Whisperはオープンソースの音声認識モデルで、フランス語を含む多言語に対応しており、ローカル環境で完結するのでプライバシー的にも安心です。
使用した環境
- MacBook (Apple Silicon / M2)
- Homebrew インストール済み
- Python 3.14系
1. 作業用ディレクトリと仮想環境の準備
mkdir whisper_fr
cd whisper_fr
python3 -m venv ~/whisper-env
source ~/whisper-env/bin/activate
システムのPython環境を汚さないように、専用の仮想環境を作ってから作業します。
2. ffmpeg のインストール
Whisperは内部で音声のデコードに ffmpeg を使うため、事前にインストールしておきます。
brew install ffmpeg
3. Whisper のインストール
pip install -U openai-whisper
PyTorchなど関連パッケージも一緒にインストールされるため、初回は数分かかります。
4. 実行
whisper "Call Recording.m4a" --language French --model medium --output_format txt
--language French を明示的に指定することで、精度・速度ともに安定します。モデルは tiny/base/small/medium/large から選べ、medium であればM2チップで数分程度で処理が終わりました。
5. 結果
無事、フランス語音声(お店の自動音声案内)の文字起こしに成功しました。
Pour joindre l'atelier, appuyez sur la touche 1.
Pour les sports de montagne et la location, appuyez sur la touche 2.
Pour les cycles et la mobilité, appuyez sur la touche 3.
Pour le fitness, le remini et les sports collectifs, appuyez sur la touche 4.
聞き取れなかった案内も、これで内容を確認して該当する番号を選べるようになりました。
おまけ: もっと手軽に・もっと速くしたい場合
- GUIで手軽に済ませたい場合: MacWhisper というMac専用アプリ(無料版あり)もあります。ファイルをドラッグ&ドロップするだけで文字起こしができ、ターミナル操作が不要なので気軽に試したい人にはこちらもおすすめです。
-
Apple Siliconでもっと高速化したい場合:
mlx-whisperを使うとMetalを活かして処理を高速化できます。
pip install -U mlx-whisper
mlx_whisper "Call Recording.m4a" --language fr
トラブルシューティング
セットアップの過程で2つほどエラーにハマったので、参考までに残しておきます。
エラー1: Library not loaded: libx265.216.dylib
whisper コマンド実行時に以下のようなエラーが出ることがあります。
RuntimeError: Failed to load audio: dyld[3271]: Library not loaded: /opt/homebrew/opt/x265/lib/libx265.216.dylib
Referenced from: ... /opt/homebrew/Cellar/ffmpeg/8.1.1/bin/ffmpeg
Reason: tried: ... (no such file) ...
これは ffmpeg が依存している x265 (H.265コーデック)ライブラリが、何らかの理由(アップデートや部分的なアンインストールなど)で壊れていたことが原因でした。
解決方法:
brew reinstall x265
brew reinstall ffmpeg
ffmpeg -version
x265 と ffmpeg を再インストールし、依存関係を正しく張り直すことでエラーが解消しました。
それでも直らない場合は brew doctor で診断するか、以下のようにクリーンに入れ直すのが確実です。
brew uninstall --ignore-dependencies ffmpeg x265
brew install ffmpeg
参考
補足
本記事はAIを執筆支援に利用しています。