ローカル音声認識・音声合成

Phonon 2で英語音声をローカル文字起こし

英語の音声ファイルを自分のコンピューターで文字起こしし、必要なら単語ごとの時刻をJSONに保存できます。

Phonon 2は英語音声をテキストに変換するローカルASR1モデルです。WAVなどの音声ファイルをFermion CLI2に指定すると文字起こしを出力し、--jsonを付けると単語ごとの開始・終了時刻も取得できます。Python仮想環境3への導入から初回の文字起こしまでを説明します。

実行条件と要点
  • Phonon 2はParakeet TDT 0.6B v3を基にした、ダウンロード容量164 MBの低ビットQATモデルです。
  • 公式CLIは音声ファイルを文字起こしし、--jsonではファイル開始時点からの単語ごとの時刻を返します。
  • 公表された処理量はM5 MacBook Air・8コアZen 5 CPU・batch 128のH100でそれぞれ測定されています。

録音をテキストとタイムスタンプに変換

Phonon 2は英語録音を入力し、文字起こしを返すASR(自動音声認識)モデルです。Fermionというコマンドラインツールがモデルを取得して実行するため、ターミナルで音声ファイルを指定してテキストに変換できます。--jsonを使うと全文に加えて各単語の開始・終了時刻も出力されます。

会議録音の下書きを作ったり、インタビューで特定の単語が出る位置を探したりできます。文字起こしはエディターや検索ツールに移し、時刻が必要ならJSONを後処理します。Phonon 2は英語音声専用モデルです。

Fermionはモデルをローカルで実行します。文字起こしは標準出力に、進行状況や警告は標準エラー出力に表示します。初回実行後、モデルはローカルキャッシュに保存され、次回以降は再取得されません。

ノートPCに接続された卓上マイクとヘッドホン
録音ファイルをPhonon 2に渡すと、英語の文字起こしができます。

小さなダウンロード容量の低ビットモデル

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%でした。以下の表で文字起こしの精度と機器別の処理速度を分けて比較できます。

開発元が公表した評価と処理量
測定開発元の公表値実行・評価条件
英語評価WER5.21%公開英語評価セット7種の平均
TeacherモデルのWER4.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のモデルを取得してエンジンを準備します。

Apple Silicon Macに導入して英語音声を文字起こし
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
`recording.wav`を実際の録音ファイル名に置き換え、Python 3.10以降を使用してください。
ノートPCの横に置かれた携帯録音機、ヘッドホンと開いたノート
会議を文字起こしした後、人名や数字を音声と照合します。

単語ごとの時刻が必要ならJSONで保存

動画の字幕を合わせたり、録音内の発言位置を探したりするには--jsonを使います。結果オブジェクトには文字起こし、モデルID、処理時間、単語一覧が含まれ、各単語のstartとendは音声開始からの秒数です。

--jsonのtextフィールドには文字起こし、words配列には単語ごとの開始・終了時刻が入ります。JSONを後処理して動画編集ソフトで字幕の開始・終了を合わせ、読みやすい行に分けられます。

入力できるのはlibsndfileが読み込めるWAV・FLAC・OGG・AIFFです。サンプルレートやチャンネル数は16 kHzのモノラルに変換されますが、MP3とM4Aはそのまま読み込めません。拒否された場合はCLIが表示するffmpeg変換コマンドでWAVに変換して再実行してください。

テキストと単語時刻JSONを書き出す
fermion transcribe phonon-2 recording.wav > transcript.txt
fermion transcribe phonon-2 recording.wav --json > transcript.json
同じ音声から2つのファイルを作ります。時刻付きJSONは字幕編集に利用できます。
ノートPC、録音機、ヘッドホンの横に並べた文字起こしの書類
単語ごとの開始・終了時刻から字幕区間を作れます。

文字起こしの人名と数字を音声に照らして確認

文字起こしの後、人名・会社名・製品名と数字を録音と照合してください。これらの誤りは会議メモやインタビューの検索を難しくしたり、記録の内容を誤って伝えたりすることがあります。名前や金額が出る箇所を実際に聞き、テキストと比べると確認範囲を絞れます。

専門用語や固有名詞が繰り返し誤認識される場合は、--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に変換します。モデル取得中に止まったらネットワーク接続を確認し、同じコマンドを再実行してください。

最後に、実際に使う録音をいくつか使って品質を確認してください。発話の重なり、背景雑音、人名・製品名、数字表記を音声と比較すると、修正箇所を見つけやすくなります。文字起こしは下書きとして扱い、重要な文書では人が校正してから利用してください。

用語の注釈

  1. 自動音声認識 — 音声中の発話を認識してテキストに変換する技術です。

    本文に戻る
  2. CLI — Command-Line Interfaceの略です。ターミナルにコマンドを入力してプログラムを操作する方式です。

    本文に戻る
  3. Python仮想環境 — プロジェクトごとにPythonパッケージを分けて導入する環境です。パッケージのバージョンの衝突を減らせます。

    本文に戻る
  4. 量子化 — モデルの重みや計算値を少ないビット数で表し、保存容量やメモリ使用量を減らす方法です。表現が粗くなるため、精度にも影響することがあります。

    本文に戻る
  5. MLX — Appleが開発する機械学習フレームワークで、Apple SiliconのCPUとGPUが共有するメモリを使ってモデルを実行します。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
Phonon 2は英語音声をテキストに変換するローカルASRモデルです。WAVなどの音声ファイルをFermion CLIに指定すると文字起こしを出力し、`--json`を付けると単語ごとの開始・終了時刻も取得できます。Python仮想環境への導入から初回の文字起こしまでを説明します。