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 7 idiomas.

Idiomas suportados

IdiomaCodigoVozes de exemplo
Ingles (EUA)enaf_heart, am_adam, af_sky
Ingles (Reino Unido)enbf_emma, bm_george
Espanholesef_dora
Francesfrff_siwis
Hindihihf_alpha, hm_omega
Italianoitif_sara
Japonesjajf_alpha, jm_omega
Portuguesptpf_dora
Chineszhzf_xiaobei, zm_yunjian

50 vozes pre-definidas no total. Convencao de nome de voz: [idioma][genero]_[nome] — por exemplo, af_heart = American Female "Heart".

Arquivos do modelo

ArquivoTamanho
kokoro-model-int8.onnx~89 MB
voices.binEmbeddings de vozes
Dicionarios de fonemasDados de pronuncia especificos por idioma

HuggingFace: aufklarer/Kokoro-82M-ONNX

Desempenho

MetricaValor
Parametros82M
Backend de inferenciaONNX Runtime
Taxa de amostragem de saida24 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