Synthèse vocale (TTS)
En cours
Le projet
Le projet TTS de Lectura développe un système de synthèse vocale adapté à l’apprentissage de la lecture. L’enjeu n’est pas de produire la voix la plus naturelle possible, mais de prononcer clairement chaque syllabe pour qu’un apprenant puisse associer ce qu’il voit à ce qu’il entend.
Cela implique des contraintes spécifiques : articulation lente et distincte, possibilité de prononcer des syllabes isolées, synchronisation précise entre texte et audio.
Architecture multi-moteurs
Plutôt qu’un moteur unique, le système intègre 8 moteurs TTS derrière une interface commune (TTSEngine), chacun avec ses caractéristiques :
| Moteur | Type | Qualité | Vitesse | Licence |
|---|---|---|---|---|
| Lectura Multi-Speaker | FastPitch-Lite v6 + HiFi-GAN | Bonne (6 voix, 7 styles) | Rapide | AGPL / Commercial |
| Kokoro-82M | ONNX neural | Bonne | Rapide | Apache 2.0 |
| Piper VITS | Neural léger | Bonne (vitesse lente) | Rapide | MIT |
| MBROLA | Diphones | Correcte | Très rapide | AGPL |
| eSpeak-NG | Formants | Basique | Instantané | GPL v3 |
| Qwen3-TTS | Transformer | Très bonne | Lent (GPU) | Apache 2.0 |
| Chatterbox | Neural 500M | Très bonne | Lent (GPU) | MIT |
| Zonos | Transformer 1.6B | Excellente | Lent (GPU) | Apache 2.0 |
Le moteur Lectura Multi-Speaker est le modèle propriétaire du projet : 6 voix françaises (3F + 3M), 8 presets de style, architecture FastPitch-Lite 256D entraînée en deux phases (L1 55K + GAN 20K steps), avec inference ONNX ~50x temps-réel sur CPU. Les autres moteurs sont des intégrations de projets open-source.
TTS concaténatif
En complément de la synthèse fluide (mot ou phrase entière), un moteur de concaténation syllabique (ConcatRenderer) assemble des syllabes pré-synthétisées pour produire un audio pédagogique où chaque syllabe est distinctement articulée.
5 modes de rendu :
- word_by_word : chaque mot synthétisé séparément
- fluid : phrase complète, prosodie naturelle
- prosodic : phrase avec modulation prosodique (pitch, durée, jitter)
- sliced : syllabes découpées dans l’audio du mot entier
- isolated : chaque syllabe synthétisée indépendamment
P2G (Phonème → Graphème)
Pour synthétiser une syllabe isolée (ex : /tʁa/), il faut d’abord la convertir en orthographe (« tra ») car les moteurs TTS attendent du texte écrit. Le module P2G résout ce problème avec une table de 3 493 syllabes (62 % issues de Lexique383, 38 % par règles de correspondance).
Prosodie
Le système intègre un modèle prosodique réaliste :
- Variation de hauteur (pitch) de ±4 demi-tons
- Jitter corrélé entre syllabes successives
- Allongement de la syllabe finale de chaque groupe
- Couplage optimal entre durée et fréquence fondamentale
L’objectif est de produire un audio qui reste naturel même en lecture lente, sans l’effet robotique de la simple concaténation.
État d’avancement
Les 8 moteurs sont intégrés et fonctionnels. Le moteur concaténatif avec P2G fonctionne avec n’importe quel backend TTS. La prosodie est opérationnelle.
Le modèle multi-speaker propriétaire (v6) est en production : 6 voix, 8 styles, export ONNX FP32 + INT8, disponible via API et en local.
Les travaux en cours portent sur :
- l’amélioration de la qualité des transitions entre syllabes concaténées,
- l’ajout de voix supplémentaires au modèle multi-speaker,
- l’optimisation des temps de chargement des modèles GPU.