MLX Audio 0.6.2は、音声の生成・認識や音声対話に使えるモデルの選択肢を増やした。Appleシリコンで音声機能を開発する人は、新モデルを同じライブラリで読み込み、音声を文字にする文字起こし作業には任意の高速化機能を適用できる。
1. 合成から多言語認識まで3系統を追加
Ming 3.0は音声認識・合成・対話を網羅するモデル群だ。認識モデルは英語と中国語に対応する。対話モデルは音を理解する部分と音声を生成する部分を組み合わせ、音声出力が必要なリクエストでのみ音声生成部を読み込む。
IBM Granite Speech 5.0 2Bは音声認識と翻訳を提供する。文字起こしの対象は英語・フランス語・ドイツ語・スペイン語・ポルトガル語・日本語で、英語音声をイタリア語と中国語にも翻訳する。句読点や言語のヒント、最大2,000個のキーワード指定にも対応する。
Fermion ResearchのPhonon 2.5は25の欧州言語を自動判別して認識する。英語専用の派生モデルと従来のPhonon 2も同じAPIで読み込め、別途Fermionの実行環境は必要ない。
2. Graniteは下書きを検証する方式で文字起こしを高速化
Graniteの投機的デコーディングは、音声処理部が作ったテキストの下書きを言語モデルがまとめて検証し、一致する先頭部分を採用する方式だ。テキストの断片を1つずつ生成する代わりに、複数の断片を一緒に確認する。初期設定では無効で、温度0、反復抑制の不使用、モデル状態を保存したファイルであるチェックポイントの補助ファイルが実行条件となる。
ドキュメントの例では、元の言語で文字起こししながら投機的デコーディングを有効にし、下書きを16トークンに指定している。
mlx_audio.stt.generate \
--model ibm-granite/granite-speech-5.0-2b \
--audio audio.wav --output-path transcript \
--gen-kwargs '{"language": null, "speculative": true, "num_draft_tokens": 16}'プロジェクトに追加されたドキュメントのローカル測定から、代表的な入力を抜粋した。例とは異なり下書きは32トークンで、各呼び出しは音声から分析用情報を取り出す特徴抽出からテキスト変換までを含む。入力は公開の英語音声テスト資料とそれを連結した録音、IBMの多言語サンプルだ。
表:Granite Speech 5.0 2Bの16ビット浮動小数点形式であるBF16での文字起こし時間
条件:Apple M5 Max、128 GBユニファイドメモリ、MLX 0.32.4、BF16、ウォームアップ後5回の呼び出し測定値の中央の値である中央値、基本・デコードGPU処理の完了を合わせるストリーム同期、投機方式は32トークンの下書き・既定の文字起こしプロンプト、音声入出力・重みの読み込みを除外
単位:時間は秒、高速化率は倍
| 音声入力 | 標準時間 | 投機方式の時間 | 高速化率 |
|---|---|---|---|
| 5.9秒 | 0.241 | 0.090 | 2.67 |
| 24.9秒、英語・フランス語 | 0.830 | 0.230 | 3.61 |
| 109.8秒、連結した発話 | 3.168 | 2.879 | 1.10 |
ドキュメントによると、高速化率は24.9秒の入力で3.61倍、109.8秒の入力で1.10倍と、入力ごとに効果が異なった。
3. 8ビットでも入力によって異なる利点
同じドキュメントでは8ビットのチェックポイントも測定した。以下は同じ入力と手順で標準実行と投機実行を比較した結果だ。
表:Granite Speech 5.0 2Bの8ビットでの文字起こし時間
条件:Apple M5 Max、128 GBユニファイドメモリ、MLX 0.32.4、8ビット、ウォームアップ後5回の呼び出しの中央値、基本・デコードGPUストリーム同期、投機方式は32トークンの下書き・既定の文字起こしプロンプト、音声入出力・重みの読み込みを除外
単位:時間は秒、高速化率は倍
| 音声入力 | 標準時間 | 投機方式の時間 | 高速化率 |
|---|---|---|---|
| 5.9秒 | 0.215 | 0.097 | 2.23 |
| 24.9秒、英語・フランス語 | 0.680 | 0.244 | 2.78 |
| 109.8秒、連結した発話 | 2.512 | 2.518 | 1.00 |
8ビットの結果は、文字起こしがすべて標準方式と一致した。BF16では62.5秒の入力で固有名詞の表記が1つ変わったが、参照の文字起こしと異なる単語を数える単語誤りは、両方式・両精度とも33/522(6.32%)だった。ドキュメントでは、重複する入力を含むこの数値を変更前後の動作確認に使った。
利点とコストは作業によって分かれる。下書きがよく合う文字起こしでは検証をまとめて処理して時間を短縮するが、同じ24.9秒のサンプルをフランス語に翻訳すると、ドキュメントによれば投機方式は約14~15%長くかかった。翻訳では下書きが元の発話言語で作られ、目標の文と一致しない場合があるためだ。
4. Mingはチャンク単位の出力、Phononはキャッシュの再利用
別のMing合成経路であるMing-3.0-tts-0.5B系統は、ストリーミングを有効にすると文の断片の音声が完成するたびに返すよう修正された。段落全体が終わるまで待っていた動作を変更した。
Phonon 2.5は初回読み込み時に圧縮ファイルをダウンロードし、ファイルの破損を確認する値であるチェックサムを検証して、MLXチェックポイントをキャッシュに展開する。初回実行でダウンロードと展開のコストを負担した後は、再利用するデータを一時保管する領域であるキャッシュを再利用する。
5. 対話モデルの実行に必要なパッケージも標準インストールに含める
今回のバージョンはtransformers[chat-template]を必須とし、jinja2の最小バージョンを3.1.6に指定した。対話内容をモデルの入力形式に変換するパッケージを標準インストールに含め、Mingの音声対話実行に必要な依存関係の不足を解消した。
MLX Audio 0.6.2の実用的な価値は、音声モデルの選択肢を広げつつ、文字起こしの高速化を作業ごとに選んで使えるようにした点にある。
