Kokoro TTS — Android

Kokoro-82M 是一个轻量级、非自回归的文本转语音模型,通过 ONNX Runtime 运行于 Android。它提供 8 种语言中 50 种预设音色的自然 24 kHz 语音。

支持的语言

语言代码示例音色
英文(美国)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
德语dedm_martin, df_victoria (音色包)

共 50 种预设音色。音色命名约定:[language][gender]_[name] — 例如 af_heart = American Female "Heart"。

德语音色包

德语并不是上面多语言模型包中的一种音色:两个德语音色是 kikiri-tts 对 Kokoro-82M 的微调,各自是一套独立的 162 MB 权重,只在德语音素上训练。下载时通过 KokoroPack 选择其一,然后以 language = "de" 合成。每个音色包有自己的缓存,因此英语和德语可以同时安装。

音色包音色下载
KokoroPack.GERMAN_MARTINdm_martin (男声)soniqo/Kokoro-82M-German-Martin-ONNX (~170 MB)
KokoroPack.GERMAN_VICTORIAdf_victoria (女声)soniqo/Kokoro-82M-German-Victoria-ONNX (~170 MB)
val modelDir = ModelManager.ensureTtsModels(
    context,
    ttsModel = TtsModel.KOKORO_SHORT_TURN,
    kokoroPack = KokoroPack.GERMAN_MARTIN, // or GERMAN_VICTORIA
)
val tts = SpeechSynthesizer(SpeechSynthesizerConfig(modelDir = modelDir))
val audio = tts.synthesize("Am 3. Oktober um 18:30 Uhr kostet es 12,80 €.", "de")

数字、序数、日期、时间、货币金额、单位和常见缩写会在设备上展开为文字;单词来自 5 万词的德语词典,并有词形变化、复合词和规则回退。系统 TTS 引擎(SpeechTextToSpeechService)在 en-US 之外还提供 Martin 音色作为 de-DE。

模型文件

文件大小
kokoro-e2e.onnx + .onnx.data~330 MB
voices.bin音色嵌入
音素字典语言相关的发音数据

HuggingFace:soniqo/Kokoro-82M-ONNX

性能

指标数值
参数82M
推理后端ONNX Runtime
输出采样率24 kHz

音素化器

文本通过基于字典的音素化器转换为音素 token,并提供特定语言支持。Android 实现包含英文、法文、西班牙文、意大利文、葡萄牙文、印地文、日文和中文的音素化器。

流水线集成

在 Android 上,Kokoro TTS 是 SpeechPipeline 的一部分。STT 转写语音之后,文本会被音素化并合成回音频。流水线自动管理完整的 VAD → STT → TTS 流程。

val modelDir = ModelManager.ensureModels(context)
val pipeline = SpeechPipeline(SpeechConfig(modelDir = modelDir))
pipeline.events.collect { event ->
    when (event) {
        is SpeechEvent.TranscriptionCompleted -> println(event.text)
        else -> {}
    }
}
pipeline.start()
pipeline.pushAudio(samples) // 16kHz mono float32

源代码:github.com/soniqo/speech-android