ローカル音声認識・音声合成
最終更新
mlx-audio:1回の導入で合成と認識を一緒に
モデルだけ差し替えるMac向け音声ツールです
mlx-audioはMacでの音声生成と文字起こしを1つのパッケージで処理します。モデルを変えてもコマンドは同じなので、同じ文で複数モデルを比べやすいです。サーバーを起動するとOpenAI形式API1で他のアプリからも使えます。
テキストと音声を1つのパッケージで

導入して1文を生成します
pipで導入します。mp3やFLACで保存するならffmpegも必要で、wavだけであれば不要です。
1つのコマンドにモデル、文、声を渡します。文が複数なら分割ファイルが出て、--join_audioで1つにまとまります。
--streamを付けると生成され次第チャンクが届きます。すぐ聴くなら--play、ストリーム結果を保存するなら--saveを一緒に付けます。
| オプション | 処理内容 |
|---|---|
| --model | どのモデルで作るか決める |
| --voice | 声を選ぶ |
| --lang_code | 言語を伝える |
| --join_audio | 分割を1ファイルにまとめる |
| --stream | 生成され次第チャンクを受け取る |
韓国語はモデル次第です
対応言語はモデルごとに違います。一覧のうち韓国語を明記しているのは6つです。名前だけで選ぶと英語専用モデルを掴むことがあります。
声の複製6は参照音声が要るモデルと要らないモデルに分かれます。複製が目的なら、その機能を持つモデルから確認します。
| モデル名 | 種類 | 特徴 |
|---|---|---|
| Qwen3-TTS | 合成 | 声の設計 |
| Ming-3.0 TTS Tiny | 合成 | エキスパート構成、複製 |
| Ming-3.0 TTS Dense | 合成 | 0.5B、感情・方言の制御 |
| Higgs Audio v2 | 合成 | 5言語 |
| Qwen3-ASR | 認識 | 文字起こし |
| Qwen3-ForcedAligner | 文整列 | 字幕のタイミング |
同じ文を複数モデルで回します
Pythonではモデルを読み込み、文を渡します。モデル名だけ変えれば同じコードで別モデルが動きます。
モデルを変えるたびに重みを取得します。初回はダウンロードに時間がかかり、以降はローカルキャッシュを使います。
READMEにはモデル別の速度数値がありません。生成された長さとメモリの大きさを見て、最後は聴いて判断するのが正確です。
from mlx_audio.tts.utils import load_model
for name in [
"mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit",
"mlx-community/Ming-3.0-tts-tiny-8bit",
]:
model = load_model(name)
for chunk in model.generate("같은 문장을 읽어 봐요.", lang_code="Korean"):
print(name, chunk.audio.shape[0])
サーバーにすると他のアプリから使えます
サーバーを起動するとOpenAI形式の経路が開きます。その形式で繋がっているアプリなら接続先を変えるだけです。
合成はJSONで文を送り、認識は音声ファイルをmultipartで送ります。どちらも同じサーバーが処理します。
mlx_audio.server --host 0.0.0.0 --port 8000
curl -X POST http://localhost:8000/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{"model": "mlx-community/Kokoro-82M-bf16", "input": "안녕하세요", "voice": "af_heart"}' \
--output speech.wav| 経路 | 処理内容 | 送るもの |
|---|---|---|
| /v1/audio/speech | 文を音声に | JSON |
| /v1/audio/transcriptions | 音声を文字に | ファイル |
Web画面も同梱されていますが、サーバーとは別に起動する構成で、1つのコマンドで両方は開きません。

文字起こしと字幕タイミングも
認識側にはWhisper系、Qwen3-ASR、Parakeetなどが入っています。合成と同じパッケージなので追加導入は不要です。
整列モデルは文と音声を時間単位で合わせます。字幕を作るとき、文の開始位置をこの値で決めます。
話者分離7モデルも一覧にあり、会議録音のように複数人が話したファイルを分けられます。
Swiftパッケージもあり、iOSやmacOSアプリに組み込めます。サーバーを経由せず直接呼び出す構成です。
量子化でメモリを削ります
同じモデルが3・4・6・8ビットで公開されています。モデル名の接尾辞を変えれば同じ文を別のビット幅で生成できます。
ビットを下げると必要なメモリが減り音質が少し変わります。会話用は8ビット、朗読用は4ビットから比べてみてください。
このパッケージが決めないこと
音質と速度の基準値はありません。モデルごとに条件が違うため、同じ文を入れて自分で比べる必要があります。
ffmpegが無いとwavでしか保存されません。mp3が必要なパイプライン8なら先に入れてください。
モデルのライセンスはリポジトリごとに違います。商用利用の前にモデルカードを確認してください。
用語の注釈
API — 別のコードからプログラムの機能を呼び出すための決められたインターフェースです。
本文に戻るMLX — Appleが開発する機械学習フレームワークで、Apple SiliconのCPUとGPUが共有するメモリを使ってモデルを実行します。
本文に戻るCLI — Command-Line Interfaceの略です。ターミナルにコマンドを入力してプログラムを操作する方式です。
本文に戻るCUDA — NVIDIA GPUで汎用計算を行うソフトウェア基盤です。
本文に戻るROCm — AMD GPUでAIや高性能計算を実行するソフトウェア基盤です。対応状況はGPUだけでなく、OS・ドライバー・フレームワークの版の組み合わせで確認します。
本文に戻る音声クローン — 参照音声から話者の特徴を取り出し、似た声の音声を合成する技術です。本人の音声、または使用許可を得た音声だけを参照資料に使います。
本文に戻る話者ダイアリゼーション — 録音を「誰がいつ話したか」の区間に分け、話者ごとにラベル付けする処理です。
本文に戻るパイプライン — 入力から出力まで続く処理段階のまとまりです。段階ごとに異なるモデルやツールを使うことがあります。
本文に戻る
よくある質問
- この記事で最初に確認すべきことは何ですか?
- mlx-audioはMacでの音声生成と文字起こしを1つのパッケージで処理します。モデルを変えてもコマンドは同じなので、同じ文で複数モデルを比べやすいです。サーバーを起動するとOpenAI形式APIで他のアプリからも使えます。
- 必要なメモリはどのくらいですか?
- ビットを下げると必要なメモリが減り音質が少し変わります。会話用は8ビット、朗読用は4ビットから比べてみてください。
- 条件と出典はどこで確認できますか?
- モデルのライセンスはリポジトリごとに違います。商用利用の前にモデルカードを確認してください。
