- Bibliothèque légère de synthèse texte-parole (TTS) basée sur ONNX et de niveau
State-of-the-art, capable de produire une synthèse vocale de haute qualité sur CPU בלבד
- La taille des modèles va de 15M à 80M de paramètres (25 à 80 Mo), pour une exécution efficace même sans GPU
- Fournit 8 voix intégrées, le réglage de la vitesse, un pipeline de prétraitement du texte et une sortie audio en 24 kHz
- Utilisable directement sur Hugging Face et simple à intégrer via une API Python
- Solution TTS open source pensée pour le déploiement sur edge devices et l’intégration commerciale
Présentation de Kitten TTS
- Kitten TTS est une bibliothèque TTS open source basée sur ONNX qui effectue une synthèse vocale de haute qualité sur CPU, sans GPU
- Les modèles vont de 15M à 80M de paramètres, soit 25 à 80 Mo sur disque
- La version 0.8 propose des modèles 15M, 40M et 80M
- Le projet est actuellement en developer preview, et l’API peut évoluer à l’avenir
- Une prise en charge commerciale est proposée (support d’intégration, voix personnalisées, licence entreprise)
Fonctionnalités principales
- Architecture ultra-légère : à partir de 25 Mo en int8, adaptée au déploiement en environnement edge
- Optimisation CPU : inférence ONNX efficace sans GPU
- 8 voix intégrées : Bella, Jasper, Luna, Bruno, Rosie, Hugo, Kiki, Leo
- Réglage de la vitesse : contrôle du débit de parole via le paramètre
speed
- Pipeline de prétraitement du texte : gestion automatique des nombres, devises, unités, etc.
- Sortie 24 kHz : génération audio de haute qualité à fréquence d’échantillonnage standard
Modèles disponibles
- Quatre modèles sont proposés
- kitten-tts-mini (80M, 80MB)
- kitten-tts-micro (40M, 41MB)
- kitten-tts-nano (15M, 56MB)
- kitten-tts-nano (int8, 15M, 25MB)
- Certains utilisateurs ont signalé des problèmes avec le modèle
kitten-tts-nano-0.8-int8 ; il est recommandé d’ouvrir une issue
Démo et utilisation
- Essai direct dans le navigateur via Hugging Face Spaces
- Installation possible avec Python 3.8 ou version ultérieure et pip uniquement
- Exemple d’utilisation de base :
from kittentts import KittenTTS
model = KittenTTS("KittenML/kitten-tts-mini-0.8")
audio = model.generate("texte", voice="Jasper")
- Fonctions avancées : réglage de la vitesse (
speed), sauvegarde dans un fichier (generate_to_file), consultation de la liste des voix disponibles
Structure de l’API
KittenTTS(model_name, cache_dir=None)
- Charge le modèle depuis le Hugging Face Hub
model.generate(text, voice, speed, clean_text)
- Convertit le texte en audio 24 kHz
model.generate_to_file(text, output_path, voice, speed, sample_rate, clean_text)
- Enregistre directement la voix synthétisée dans un fichier
model.available_voices
- Renvoie la liste des voix disponibles
Configuration requise
- Système d’exploitation : Linux, macOS, Windows
- Python : 3.8 ou version ultérieure
- Matériel : CPU uniquement, GPU non requis
- Espace disque : 25 à 80 Mo selon le modèle
- Utilisation d’un environnement virtuel (venv, conda, etc.) recommandée
Feuille de route
- Optimisation du moteur d’inférence, SDK mobile, modèles haute qualité, TTS multilingue, sortie prévue de KittenASR
- Apache License 2.0
1 commentaires
Réactions sur Hacker News
J’ai créé purr, un wrapper CLI pour Kitten TTS
le paquet kitten a une chaîne de dépendances kittentts → misaki[en] → spacy-curated-transformers
donc si on l’installe directement avec
uv, il récupère torch et les paquets NVIDIA CUDA (plusieurs Go), alors qu’ils ne sont pas nécessaires à l’exécutionAu premier lancement, j’ai eu l’erreur « OSError: PortAudio library not found », résolue avec
apt install libportaudio2En revanche, je me demande s’il y a une perte de fonctionnalités en supprimant les dépendances inutiles
Projet vraiment génial
Je vais l’essayer moi-même bientôt
J’ai juste une question : pourquoi ne pas l’avoir distribué sous la forme d’un exécutable en ligne de commande ?
L’API ressemble presque déjà à une manpage, donc ça semblerait rapide à faire. Simple curiosité
On veut d’abord recueillir des retours sur la version ONNX, puis simplifier le processus d’exécution par la suite, notamment avec un exécutable en ligne de commande
Ce que j’ai aimé avec OpenClaw, c’est que sur Discord il suffisait d’envoyer une URL GitHub pour générer immédiatement un message vocal
J’ai reçu un benchmark et des échantillons audio en quelques minutes
La qualité est impressionnante pour la taille. La voix n’est pas parfaite, mais elle est loin d’être mauvaise
Sur un CPU Intel 9700, le modèle 80M tournait à environ 1,5× le temps réel, et ce n’était pas plus rapide sur un GPU 3080
Pour l’instant, nous avons mis une voix au style anime pour montrer l’expressivité
Si tu peux partager via une issue GitHub ou sur Discord pourquoi c’est lent sur GPU, ce serait utile. Nous allons aussi ajouter du code d’exemple
J’ai galéré pour éviter les conflits de version Python, et j’ai aussi essayé avec Docker, mais j’ai finalement dû tout configurer à la main
J’ai fini par le faire tourner, mais je déteste vraiment Python
À l’heure actuelle, on dirait que seules les voix américaines sont prises en charge
Personnellement, je ne m’intéresse qu’aux accents irlandais, britanniques et gallois. L’américain, très peu pour moi
Un TTS qui fonctionne en local sur l’appareil, c’est vraiment excellent comme outil d’accessibilité
La plupart des appareils dépendent de services en ligne, et ce type d’approche locale est bien meilleur
On sent une amélioration bien plus nette que sur les anciens modèles
C’est vraiment impressionnant. Merci d’avoir partagé ça
Le modèle 15M actuel est meilleur que l’ancien 80M, et nous comptons maintenir ce rythme d’amélioration
J’aimerais voir à l’avenir un modèle dédié au japonais
Qwen3-tts prend bien en charge le japonais, mais comme du chinois se mélange parfois dedans, c’est inutilisable
Mais cela risquerait de faire perdre l’information de hauteur tonale (par ex. 飴 vs 雨)
Si tu peux nous indiquer ton cas d’usage, on aimerait s’en servir pour améliorer la qualité
Les performances étaient impressionnantes vu la taille du modèle
En revanche, il y avait un problème avec la prononciation des nombres
J’ai essayé « Startup finished in 135 ms. », et le nombre sonnait comme du bruit
En remplaçant par « one hundred and thirty five seconds », c’était déjà plus correct
En attendant, on peut le résoudre en ajoutant un prétraitement du texte
La plupart des modèles TTS gèrent cela en convertissant les nombres et les unités en chaînes de caractères
Ce sera aussi corrigé au niveau du modèle dans la prochaine release
Ce serait bien d’avoir en plus des échantillons audio comparant les quatre modèles
Avec un exemple de la même phrase lue par chaque modèle, ce serait plus facile à comprendre
En attendant, vous pouvez essayer directement les modèles sur la démo Hugging Face
Je me demande si c’est de l’open source ou simplement un modèle à open weights
Nous allons aussi ajouter d’ici ce week-end un phonemizer sous licence MIT, donc il pourra être utilisé librement