Kokoro TTS — Android
Kokoro-82M — это лёгкая неавторегрессивная модель синтеза речи, работающая на Android через ONNX Runtime. Она производит естественную речь 24 кГц с 50 пресетными голосами на 8 языках.
Поддерживаемые языки
| Язык | Код | Примеры голосов |
|---|---|---|
| Английский (США) | en | af_heart, am_adam, af_sky |
| Английский (Великобритания) | en | bf_emma, bm_george |
| Испанский | es | ef_dora |
| Французский | fr | ff_siwis |
| Хинди | hi | hf_alpha, hm_omega |
| Итальянский | it | if_sara |
| Японский | ja | jf_alpha, jm_omega |
| Португальский | pt | pf_dora |
| Китайский | zh | zf_xiaobei, zm_yunjian |
| Немецкий | de | dm_martin, df_victoria (голосовые пакеты) |
Всего 50 пресетных голосов. Соглашение именования голосов: [language][gender]_[name] — например, af_heart = American Female «Heart».
Немецкие голосовые пакеты
Немецкий не входит в многоязычный набор выше: два немецких голоса — это дообученные kikiri-tts версии Kokoro-82M, каждая со своим набором весов на 162 МБ, обученным только на немецких фонемах. Выберите один через KokoroPack при загрузке и синтезируйте с language = "de". У каждого пакета свой кэш, поэтому английский и немецкий могут быть установлены одновременно.
| Пакет | Голос | Загрузка |
|---|---|---|
KokoroPack.GERMAN_MARTIN | dm_martin (мужской) | soniqo/Kokoro-82M-German-Martin-ONNX (~170 MB) |
KokoroPack.GERMAN_VICTORIA | df_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