Kokoro TTS — Android

Kokoro-82M — это лёгкая неавторегрессивная модель синтеза речи, работающая на Android через ONNX Runtime. Она производит естественную речь 24 кГц с 50 пресетными голосами на 8 языках.

Поддерживаемые языки

ЯзыкКодПримеры голосов
Английский (США)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 МБ, обученным только на немецких фонемах. Выберите один через 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")

Числа, порядковые числительные, даты, время, суммы, единицы и распространённые сокращения проговариваются на устройстве; слова берутся из немецкого словаря на 50k слов с запасными правилами словоизменения, сложных слов и G2P. Системный движок TTS (SpeechTextToSpeechService) предлагает голос Martin как de-DE рядом с en-US.

Файлы модели

ФайлРазмер
kokoro-e2e.onnx + .onnx.data~330 МБ
voices.binЭмбеддинги голосов
Словари фонемЯзыкозависимые данные произношения

HuggingFace: soniqo/Kokoro-82M-ONNX

Производительность

МетрикаЗначение
Параметры82M
Бэкенд инференсаONNX Runtime
Частота дискретизации на выходе24 кГц

Фонемизатор

Текст преобразуется в фонемные токены через фонемизатор на основе словарей с поддержкой конкретных языков. 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) // 16 кГц моно float32

Исходный код: github.com/soniqo/speech-android