Kokoro TTS — Android
Kokoro-82M e um modelo de texto para fala leve e nao autoregressivo rodando em Android via ONNX Runtime. Produz fala natural a 24 kHz com 50 vozes pre-definidas em 8 idiomas.
Idiomas suportados
| Idioma | Codigo | Vozes de exemplo |
|---|---|---|
| Ingles (EUA) | en | af_heart, am_adam, af_sky |
| Ingles (Reino Unido) | en | bf_emma, bm_george |
| Espanhol | es | ef_dora |
| Frances | fr | ff_siwis |
| Hindi | hi | hf_alpha, hm_omega |
| Italiano | it | if_sara |
| Japones | ja | jf_alpha, jm_omega |
| Portugues | pt | pf_dora |
| Chines | zh | zf_xiaobei, zm_yunjian |
| Alemão | de | dm_martin, df_victoria (packs de voz) |
50 vozes pre-definidas no total. Convencao de nome de voz: [idioma][genero]_[nome] — por exemplo, af_heart = American Female "Heart".
Packs de voz em alemão
O alemão não é uma voz do bundle multilíngue acima: as duas vozes alemãs são ajustes finos do Kokoro-82M pela kikiri-tts, cada uma um conjunto de pesos separado de 162 MB treinado apenas com fonemas alemães. Escolha um com KokoroPack ao baixar e sintetize com language = "de". Cada pack tem seu próprio cache, então inglês e alemão ficam instalados lado a lado.
| Pack | Voz | Download |
|---|---|---|
KokoroPack.GERMAN_MARTIN | dm_martin (masculina) | soniqo/Kokoro-82M-German-Martin-ONNX (~170 MB) |
KokoroPack.GERMAN_VICTORIA | df_victoria (feminina) | 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")Números, ordinais, datas, horas, valores, unidades e abreviações comuns são escritos por extenso no dispositivo; as palavras vêm de um dicionário alemão de 50k entradas com flexão, compostos e regras como alternativa. O mecanismo TTS do sistema (SpeechTextToSpeechService) oferece a voz Martin como de-DE ao lado de en-US.
Arquivos do modelo
| Arquivo | Tamanho |
|---|---|
kokoro-e2e.onnx + .onnx.data | ~330 MB |
voices.bin | Embeddings de vozes |
| Dicionarios de fonemas | Dados de pronuncia especificos por idioma |
HuggingFace: soniqo/Kokoro-82M-ONNX
Desempenho
| Metrica | Valor |
|---|---|
| Parametros | 82M |
| Backend de inferencia | ONNX Runtime |
| Taxa de amostragem de saida | 24 kHz |
Fonemizador
O texto e convertido em tokens de fonemas usando um fonemizador baseado em dicionario com suporte especifico por idioma. A implementacao Android inclui fonemizadores para ingles, frances, espanhol, italiano, portugues, hindi, japones e chines.
Integracao de pipeline
No Android, o Kokoro TTS e parte do SpeechPipeline. Depois que o STT transcreve a fala, o texto e fonemizado e sintetizado de volta em audio. O pipeline gerencia o fluxo completo VAD → STT → TTS automaticamente.
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
Codigo-fonte: github.com/soniqo/speech-android