Kokoro TTS

Kokoro-82M 是一个轻量级、非自回归的文本转语音模型,基于 StyleTTS 2 与 ISTFTNet 声码器。它通过 CoreML 完全运行在 Neural Engine 上,以单次前向从文本输入生成自然的 24 kHz 语音。

iOS 就绪

Kokoro-82M 专为端侧 iOS 部署而设计。82M 参数(1 个桶、INT8 约 80 MB),可轻松适配 iPhone 与 iPad。CoreML 在 Neural Engine 上运行,让 GPU 保持空闲用于其他任务。

支持的语言

语言代码示例音色
英文(美国)enaf_heart, am_adam, af_sky
英文(英国)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 种预设音色。音色命名约定:[language][gender]_[name] — 例如 af_heart = American Female "Heart"。

架构

Kokoro 使用 3 阶段 CoreML 流水线。没有采样循环 — 所有阶段都是非自回归前向传递,在第 1 和第 2 阶段之间有一次 Swift 端的对齐步骤。

3 阶段流水线

阶段模型输入输出
1. Durationduration.mlmodelc音素 token + 音色嵌入 + 速度时长、韵律特征、文本编码
Swift 对齐时长 + 阶段 1 特征对齐后的韵律与文本特征
2. Prosodyprosody.mlmodelc对齐韵律特征 + 风格F0(音高)+ 噪声预测
3. Decoderdecoder_*.mlmodelc对齐文本 + F0 + 噪声 + 风格24 kHz 音频波形

音素桶(时长模型)

时长模型使用枚举输入形状。输入会填充至最小的可容纳桶:

最大音素数使用场景
p1616短语
p3232短句
p6464中等长度句
p128128长句

解码器桶

用于不同最大音频长度的固定形状解码器模型(24 kHz 下每帧 = 600 个样本):

最大帧数最大音频
decoder_5s2005.0s
decoder_10s40010.0s
decoder_15s60015.0s

需要 iOS 18+ / macOS 15+。

音素化器

文本通过三层流水线转换为音素 token — 全部采用 Apache-2.0 许可证,无 GPL 依赖:

  1. 字典查找 — 美英与英式英语发音字典,支持多音字
  2. 后缀词干处理 — 对已知后缀进行形态分解(例如 "-ing"、"-tion")
  3. BART G2P — 使用独立的 CoreML 编码器-解码器模型作为神经字素到音素的兜底,处理词表外的词

模型权重

组件大小格式
时长模型~39 MB.mlmodelc
韵律模型~17 MB.mlmodelc
解码器模型(3 个桶)每个 ~107 MB.mlmodelc
音色嵌入(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 个解码器桶)
非自回归

与逐步生成 token 的 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)

许可证