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
| Langue | Code | Exemples de voix |
|---|---|---|
| Anglais (États-Unis) | en | af_heart, am_adam, af_sky |
| Anglais (Royaume-Uni) | en | bf_emma, bm_george |
| Espagnol | es | ef_dora |
| Français | fr | ff_siwis |
| Hindi | hi | hf_alpha, hm_omega |
| Italien | it | if_sara |
| Japonais | ja | jf_alpha, jm_omega |
| Portugais | pt | pf_dora |
| Chinois | zh | zf_xiaobei, zm_yunjian |
| Allemand | de | dm_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.
| Pack | Voix | Téléchargement |
|---|---|---|
KokoroPack.GERMAN_MARTIN | dm_martin (homme) | soniqo/Kokoro-82M-German-Martin-ONNX (~170 MB) |
KokoroPack.GERMAN_VICTORIA | df_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
| Fichier | Taille |
|---|---|
kokoro-e2e.onnx + .onnx.data | ~330 Mo |
voices.bin | Embeddings des voix |
| Dictionnaires de phonèmes | Données de prononciation spécifiques à chaque langue |
HuggingFace : soniqo/Kokoro-82M-ONNX
Performance
| Métrique | Valeur |
|---|---|
| Paramètres | 82M |
| Backend d'inférence | ONNX Runtime |
| Taux d'échantillonnage en sortie | 24 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