Kokoro TTS

Kokoro-82Mは、ISTFTNetボコーダーを備えたStyleTTS 2ベースの軽量、非自己回帰の音声合成モデルです。CoreML経由で完全にNeural Engine上で動作し、テキスト入力からシングルフォワードパスで自然な24 kHz音声を生成します。

iOS対応

Kokoro-82Mはオンデバイスiosデプロイメント向けに設計されています。82Mパラメーター(1バケット、INT8で約80 MB)で、iPhoneとiPadに快適に収まります。CoreMLはNeural Engine上で動作し、他のタスクのためにGPUを解放します。

サポート言語

言語コード例ボイス
英語 (US)enaf_heart, am_adam, af_sky
英語 (UK)enbf_emma, bm_george
スペイン語esef_dora
フランス語frff_siwis
ヒンディー語hihf_alpha, hm_omega
イタリア語itif_sara
日本語jajf_alpha, jm_omega
ポルトガル語ptpf_dora
中国語zhzf_xiaobei, zm_yunjian
韓国語kokf_somi

合計50のプリセットボイス。ボイス命名規則:[言語][性別]_[名前] — 例:af_heart = American Female "Heart"。

アーキテクチャ

Kokoroは3段階のCoreMLパイプラインを使用します。サンプリングループなし — すべての段階は非自己回帰のフォワードパスで、段階1と2の間にSwift側の整列ステップがあります。

3段階パイプライン

ステージモデル入力出力
1. Durationduration.mlmodelc音素トークン + ボイスembedding + 速度継続時間、韻律特徴量、テキストエンコーディング
Swift整列継続時間 + ステージ1特徴量整列された韻律 & テキスト特徴量
2. Prosodyprosody.mlmodelc整列された韻律特徴量 + スタイルF0(ピッチ)+ ノイズ予測
3. Decoderdecoder_*.mlmodelc整列されたテキスト + F0 + ノイズ + スタイル24 kHz音声波形

音素バケット(Durationモデル)

Durationモデルは列挙された入力形状を使用します。入力は、それに収まる最小のバケットにパディングされます:

バケット最大音素ユースケース
p1616短いフレーズ
p3232短い文
p6464中程度の文
p128128長い文

Decoderバケット

異なる最大音声長のための固定形状デコーダーモデル(各フレーム = 24 kHzで600サンプル):

バケット最大フレーム最大音声
decoder_5s2005.0秒
decoder_10s40010.0秒
decoder_15s60015.0秒

iOS 18+ / macOS 15+が必要です。

Phonemizer

テキストは3層パイプライン経由で音素トークンに変換されます — すべてApache-2.0ライセンス、GPL依存なし:

  1. 辞書検索 — 異音字サポート付きの米国英語と英国英語の発音辞書
  2. 接尾辞語幹化 — 既知の接尾辞(例:「-ing」、「-tion」)の形態論的分解
  3. BART G2P — 語彙外単語のための別のCoreMLエンコーダー-デコーダーモデルを使用したニューラル書記素-音素フォールバック

モデルウェイト

コンポーネントサイズ形式
Durationモデル約39 MB.mlmodelc
Prosodyモデル約17 MB.mlmodelc
Decoderモデル(3バケット)各約107 MB.mlmodelc
ボイスembedding(54ボイス)約0.3 MBJSON (256次元 Float32)
G2Pエンコーダー + デコーダー約1.5 MB.mlmodelc
辞書 + 語彙約6 MBJSON
合計(1デコーダー)約170 MB

パフォーマンス

指標
パラメーター82M
推論バックエンドCoreML (Neural Engine)
推論 RTFx約0.7(リアルタイムより高速)
出力サンプリングレート24 kHz
ウェイトメモリ約170 MB(1デコーダーバケット)
非自己回帰

Qwen3-TTSやCosyVoice3がトークンをステップバイステップで生成するのとは異なり、Kokoroはサンプリングループなしの3段階パイプラインを使用します。すべてのステージは決定論的なフォワードパスです。

CLIの使用法

audio kokoro "Hello, world!" --voice af_heart --output hello.wav

オプション

オプションデフォルト説明
<text>合成するテキスト
--voiceaf_heartボイスプリセット名
--languageen言語コード:en, es, fr, hi, it, ja, pt, zh, ko, de
--output, -okokoro_output.wav出力WAVファイルパス
--list-voices利用可能なすべてのボイスをリストして終了
--model, -mHuggingFaceモデルID

# デフォルトボイスでの英語
audio kokoro "Hello, how are you today?" --output hello.wav

# フランス語
audio kokoro "Bonjour le monde" --voice ff_siwis --language fr --output bonjour.wav

# 日本語
audio kokoro "こんにちは世界" --voice jf_alpha --language ja --output konnichiwa.wav

# 全50ボイスをリスト
audio kokoro --list-voices

Swift API

import KokoroTTS
import AudioCommon

let tts = try await KokoroTTSModel.fromPretrained()
// 初回実行時に約170 MBをダウンロード

let audio = try tts.synthesize(text: "Hello world", voice: "af_heart")
// audio: [Float] — 24 kHz モノラル PCM

try WAVWriter.write(samples: audio, sampleRate: 24000, to: outputURL)

Kokoroを使用すべき時

ユースケース推奨TTS
iOSアプリ、軽量、バッテリー効率Kokoro (CoreML, 82Mパラメーター, 約170 MB)
最高品質、ストリーミング、音声クローンQwen3-TTS (MLX, 600Mパラメーター, 約1.7 GB)
多言語ストリーミング、9言語CosyVoice3 (MLX, 500Mパラメーター, 約1.2 GB)
全二重音声対話PersonaPlex (MLX, 7Bパラメーター, 約5.5 GB)

ライセンス