Kokoro TTS — Android

Kokoro-82M est un modèle de synthèse vocale léger et non-autorégressif s'exécutant sur Android via ONNX Runtime. Il produit une parole naturelle à 24 kHz avec 50 voix préréglées dans 8 langues.

Langues prises en charge

LangueCodeExemples de voix
Anglais (États-Unis)enaf_heart, am_adam, af_sky
Anglais (Royaume-Uni)enbf_emma, bm_george
Espagnolesef_dora
Françaisfrff_siwis
Hindihihf_alpha, hm_omega
Italienitif_sara
Japonaisjajf_alpha, jm_omega
Portugaisptpf_dora
Chinoiszhzf_xiaobei, zm_yunjian
Allemanddedm_martin, df_victoria (packs de voix)

50 voix préréglées au total. Convention de nommage des voix : [language][gender]_[name] — par exemple, af_heart = American Female « Heart ».

Packs de voix allemands

L'allemand n'est pas une voix du bundle multilingue ci-dessus : les deux voix allemandes sont des réglages fins de Kokoro-82M par kikiri-tts, chacune un jeu de poids distinct de 162 Mo entraîné uniquement sur des phonèmes allemands. Choisissez-en un avec KokoroPack lors du téléchargement, puis synthétisez avec language = "de". Chaque pack a son propre cache, donc l'anglais et l'allemand restent installés côte à côte.

PackVoixTéléchargement
KokoroPack.GERMAN_MARTINdm_martin (homme)soniqo/Kokoro-82M-German-Martin-ONNX (~170 MB)
KokoroPack.GERMAN_VICTORIAdf_victoria (femme)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")

Nombres, ordinaux, dates, heures, montants, unités et abréviations courantes sont épelés sur l'appareil ; les mots viennent d'un dictionnaire allemand de 50k entrées avec flexion, composés et règles en repli. Le moteur TTS système (SpeechTextToSpeechService) propose la voix Martin en de-DE à côté de en-US.

Fichiers du modèle

FichierTaille
kokoro-e2e.onnx + .onnx.data~330 Mo
voices.binEmbeddings des voix
Dictionnaires de phonèmesDonnées de prononciation spécifiques à chaque langue

HuggingFace : soniqo/Kokoro-82M-ONNX

Performance

MétriqueValeur
Paramètres82M
Backend d'inférenceONNX Runtime
Taux d'échantillonnage en sortie24 kHz

Phonémiseur

Le texte est converti en tokens de phonèmes à l'aide d'un phonémiseur basé dictionnaire avec support par langue. L'implémentation Android inclut des phonémiseurs pour l'anglais, le français, l'espagnol, l'italien, le portugais, l'hindi, le japonais et le chinois.

Intégration au pipeline

Sur Android, Kokoro TTS fait partie du SpeechPipeline. Après que STT transcrit la parole, le texte est phonémisé et synthétisé à nouveau en audio. Le pipeline gère automatiquement le flux complet 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) // float32 mono 16 kHz

Code source : github.com/soniqo/speech-android