ローカル音声認識・音声合成
最終更新
Phonon 2で英語音声をローカル文字起こし
英語の音声ファイルを自分のコンピューターで文字起こしし、必要なら単語ごとの時刻をJSONに保存できます。
Phonon 2は英語音声をテキストに変換するローカルASR1モデルです。WAVなどの音声ファイルをFermion CLI2に指定すると文字起こしを出力し、--jsonを付けると単語ごとの開始・終了時刻も取得できます。Python仮想環境3への導入から初回の文字起こしまでを説明します。
録音をテキストとタイムスタンプに変換
Phonon 2は英語録音を入力し、文字起こしを返すASR(自動音声認識)モデルです。Fermionというコマンドラインツールがモデルを取得して実行するため、ターミナルで音声ファイルを指定してテキストに変換できます。--jsonを使うと全文に加えて各単語の開始・終了時刻も出力されます。
会議録音の下書きを作ったり、インタビューで特定の単語が出る位置を探したりできます。文字起こしはエディターや検索ツールに移し、時刻が必要ならJSONを後処理します。Phonon 2は英語音声専用モデルです。
Fermionはモデルをローカルで実行します。文字起こしは標準出力に、進行状況や警告は標準エラー出力に表示します。初回実行後、モデルはローカルキャッシュに保存され、次回以降は再取得されません。

小さなダウンロード容量の低ビットモデル
Phonon 2のダウンロード容量は164 MBです。Parakeet TDT 0.6B v3を基に量子化4対応学習(QAT)を適用し、重みを5つの学習済み値で表して約2.1ビット/重みにしています。小さなファイルで英語音声を文字起こしできます。
開発元による英語7セットの評価では、単語誤り率(WER)はPhonon 2が平均5.21%、圧縮前のParakeet TDT 0.6B v3が4.96%でした。以下の表で文字起こしの精度と機器別の処理速度を分けて比較できます。
| 測定 | 開発元の公表値 | 実行・評価条件 |
|---|---|---|
| 英語評価WER | 5.21% | 公開英語評価セット7種の平均 |
| TeacherモデルのWER | 4.96% | Parakeet TDT 0.6B v3 |
| Macの処理速度 | リアルタイムの約174倍 | M5 MacBook Air |
| CPUの処理速度 | リアルタイムの143倍 | 8コアZen 5 |
| GPUバッチ処理 | リアルタイムの6,680倍 | H100 · batch 128 |
開発元の公表値・WERはOpen ASR Leaderboard英語7セットの平均・速度はM5 MacBook Airで音声1時間あたり約20秒(174倍)、8コアZen 5で143倍、H100のbatch 128で6,680倍。測定表
英語録音を1つ文字起こしする
公式のFermion CLIにはPython 3.10以降が必要です。macOS標準のpython3が3.9なら、Python 3.12など対応バージョンを導入し、作業フォルダー内に仮想環境を作成します。以下はMacのApple Silicon向け手順です。
仮想環境を有効にしたターミナルでパッケージとMLX5実行コンポーネントを導入します。パッケージ名はfermion-research、実行コマンドはfermionです。phonon transcribeという別名でもPhonon 2を実行できますが、ここでは取得するモデルが分かるよう明示します。
分離したPython環境内で、次のコマンドを順に実行します。
導入後、英語のWAV録音があるフォルダーでrecording.wavを実際のファイル名に置き換えて実行します。初回は164 MBのモデルを取得し、実行エンジンを準備するため、次回以降より起動に時間がかかる場合があります。モデルは標準のHugging Faceキャッシュに保存されます。
文字起こしコマンドはテキストだけを標準出力に送るため、> transcript.txtを付けて文字起こしファイルを作れます。進行状況と警告は標準エラー出力に表示されます。初回実行では164 MBのモデルを取得してエンジンを準備します。
python3.12 -m venv .venv
source .venv/bin/activate
pip install fermion-research
pip install mlx mlx-audio mlx-lm soundfile scipy zstandard
fermion models
fermion transcribe phonon-2 recording.wav
単語ごとの時刻が必要ならJSONで保存
動画の字幕を合わせたり、録音内の発言位置を探したりするには--jsonを使います。結果オブジェクトには文字起こし、モデルID、処理時間、単語一覧が含まれ、各単語のstartとendは音声開始からの秒数です。
--jsonのtextフィールドには文字起こし、words配列には単語ごとの開始・終了時刻が入ります。JSONを後処理して動画編集ソフトで字幕の開始・終了を合わせ、読みやすい行に分けられます。
入力できるのはlibsndfileが読み込めるWAV・FLAC・OGG・AIFFです。サンプルレートやチャンネル数は16 kHzのモノラルに変換されますが、MP3とM4Aはそのまま読み込めません。拒否された場合はCLIが表示するffmpeg変換コマンドでWAVに変換して再実行してください。
fermion transcribe phonon-2 recording.wav > transcript.txt
fermion transcribe phonon-2 recording.wav --json > transcript.json
文字起こしの人名と数字を音声に照らして確認
文字起こしの後、人名・会社名・製品名と数字を録音と照合してください。これらの誤りは会議メモやインタビューの検索を難しくしたり、記録の内容を誤って伝えたりすることがあります。名前や金額が出る箇所を実際に聞き、テキストと比べると確認範囲を絞れます。
専門用語や固有名詞が繰り返し誤認識される場合は、--hotwordsに頻出語を最大25個指定できます。たとえばfermion transcribe phonon-2 recording.wav --hotwords "Acme, Quillon"と実行すると、音声に近い候補があるときに指定語を優先します。実際の発話は音声に基づくため、人名などの表記を録音と照合してください。
用語リストを試すときは、同じ録音の通常版とhotwords版を保存すると差を比べやすくなります。両方を確認して人名表記を直し、金額・日付・固有名詞が重要な記録は人が音声と照合してください。
初回実行に失敗したら最初のエラーを確認
python3.12: command not foundと表示されたら、対応するPythonが導入済みか、実行ファイル名がpython3.12かを確認します。python3がすでにPython 3.10以降を指しているなら、仮想環境作成時にその名前を使えます。環境内のバージョンはpython --versionで確認できます。
fermion: command not foundなら、仮想環境が有効か確認し、pip show fermion-researchでその環境にパッケージが入っているか調べます。Apple SiliconでMLX依存関係が不足していると表示されたら、公式ドキュメントの追加導入コマンドを実行して再試行します。構成要素が足りない場合、CLIも必要なコマンドを表示します。
入力ファイルのエラーならパスと拡張子を確認し、MP3・M4AはCLIが案内するコマンドでWAVに変換します。モデル取得中に止まったらネットワーク接続を確認し、同じコマンドを再実行してください。
最後に、実際に使う録音をいくつか使って品質を確認してください。発話の重なり、背景雑音、人名・製品名、数字表記を音声と比較すると、修正箇所を見つけやすくなります。文字起こしは下書きとして扱い、重要な文書では人が校正してから利用してください。
用語の注釈
自動音声認識 — 音声中の発話を認識してテキストに変換する技術です。
本文に戻るCLI — Command-Line Interfaceの略です。ターミナルにコマンドを入力してプログラムを操作する方式です。
本文に戻るPython仮想環境 — プロジェクトごとにPythonパッケージを分けて導入する環境です。パッケージのバージョンの衝突を減らせます。
本文に戻る量子化 — モデルの重みや計算値を少ないビット数で表し、保存容量やメモリ使用量を減らす方法です。表現が粗くなるため、精度にも影響することがあります。
本文に戻るMLX — Appleが開発する機械学習フレームワークで、Apple SiliconのCPUとGPUが共有するメモリを使ってモデルを実行します。
本文に戻る
よくある質問
- この記事で最初に確認すべきことは何ですか?
- Phonon 2は英語音声をテキストに変換するローカルASRモデルです。WAVなどの音声ファイルをFermion CLIに指定すると文字起こしを出力し、`--json`を付けると単語ごとの開始・終了時刻も取得できます。Python仮想環境への導入から初回の文字起こしまでを説明します。
