TTS Multi-Speaker

Lectura TTS Multi-Speaker

Moteur acoustique 6 voix — modèles High (Conformer) et Light (FastPitch) au choix (ONNX)

Présentation

Moteur de synthèse vocale neuronale multi-speaker pour le français, avec deux modèles au choix : High (Matcha-Conformer, d_model=384, meilleure qualité) et Light (FastPitch v6, d_model=256, plus rapide). Le vocoder HiFi-GAN est partagé. Supporte 6 voix et 7 presets de style.

Caractéristique Valeur
Voix 6 speakers (3F + 3M) : Siwis, Ezwa, Nadine, Bernard, Gilles, Zeckou
Style 7 presets : neutre, narratif, dialogue, expressif, méditatif, rapide, lent
Modèle High Matcha-Conformer (d=384), flow-matching OT-CFM, ~40 Mo INT8
Modèle Light FastPitch v6 (d=256), FFT decoder, ~40 Mo INT8
Débit ~30x (High) à ~50x (Light) temps-réel sur CPU (ONNX)
Entrée Phonèmes IPA ou texte français (via pipeline lectura-tts-multi)
Sortie Audio 22050 Hz, float32
Contrôles prosodiques Pitch, énergie, débit, pauses + vecteur style 5D

Le choix du modèle se fait via le paramètre model="high" (défaut) ou model="light". Deux modes d’utilisation : API (zéro dépendance, zero config) ou local (ONNX Runtime, inférence offline).

Brique vs Pipeline : Ce moteur est la brique acoustique multi-speaker (phonèmes → audio). Pour le pipeline complet TTS (texte → audio avec G2P intégré et choix de moteur), voir la page TTS.


Essayer en ligne


Exemple de code

from lectura_multispeaker import creer_engine, liste_speakers

# Lister les voix disponibles
for s in liste_speakers():
    print(f"{s['label']} ({s['gender']})")

# Créer un engine High (Conformer, par défaut)
engine = creer_engine()

# Créer un engine Light (FastPitch, plus rapide)
engine_light = creer_engine(model="light")

# Synthèse avec choix de voix et style
audio = engine.synthesize(
    text="Bonjour, comment allez-vous ?",
    speaker="bernard",
    style="expressif",
)
print(f"Durée : {len(audio.samples) / audio.sample_rate:.2f}s")

# Synthèse rapide avec le modèle light
audio = engine_light.synthesize(
    text="Je suis Nadine, enchantée.",
    speaker="nadine",
    style="narratif",
)

# Raccourci avec choix du modèle
from lectura_multispeaker import synthetiser
audio = synthetiser("Bonjour.", speaker="siwis", model="light")

Architecture

Phonemes IPA + speaker + style
              ↓
    creer_engine(model=...)
              ↓
   ┌──────────┐  ┌──────────┐
   │ model=   │  │ model=   │
   │ "high"   │  │ "light"  │
   │Conformer │  │FastPitch │
   │ d=384    │  │ d=256    │
   └────┬─────┘  └────┬─────┘
        │              │
        ▼              ▼
     mel spectrogram 80 bandes
              ↓
      HiFi-GAN Vocoder
   (mel → waveform 22050 Hz)

Deux modèles au choix

Modèle Architecture Caractéristiques
High (défaut) Matcha-Conformer d=384 Flow-matching OT-CFM, meilleure qualité, ~30x temps-réel
Light FastPitch v6 d=256 FFT decoder, plus rapide/léger, ~50x temps-réel

Le choix se fait à la création de l’engine via model="high" ou model="light". Le vocoder HiFi-GAN est partagé entre les deux modèles.


Installation

# Moteur brut (phonèmes → audio)
pip install lectura-multispeaker              # mode API (zero config, zéro dépendance)
pip install lectura-multispeaker[onnx]        # backend ONNX Runtime local

# Pipeline complet (texte → audio)
pip install lectura-tts-multi[onnx]           # G2P + moteur ONNX
pip install lectura-tts-multi[onnx,retimbre]  # + retimbre multi-voix (OpenVoice)
Extra Package Contenu
[onnx] lectura-multispeaker Backend ONNX Runtime local + numpy
[onnx] lectura-tts-multi Pipeline G2P + moteur ONNX
[retimbre] lectura-tts-multi Retimbre multi-voix via OpenVoice
[aligneur] lectura-tts-multi Syllabation pour le mode lecture syllabique (lectura-aligneur)

Par défaut, le module utilise l’API Lectura (aucune configuration nécessaire). Le backend local ONNX nécessite les modèles pré-entraînés, disponibles sous licence commerciale.


Caractéristiques techniques

  • Deux modèles au choix : High (Conformer, qualité) et Light (FastPitch, vitesse)
  • Matcha-Conformer (High) : d_model=384, flow-matching OT-CFM, qualité supérieure
  • FastPitch v6 (Light) : d_model=256, FFT decoder, plus rapide et léger
  • HiFi-GAN : vocoder universel partagé, signal 22050 Hz
  • 2 backends : API (zero config) ou ONNX Runtime local (modèles sous licence commerciale)
  • 6 voix : Siwis, Ezwa, Nadine (F) — Bernard, Gilles, Zeckou (M)
  • 7 presets de style : neutre, narratif, dialogue, expressif, méditatif, rapide, lent
  • Contrôles prosodiques : pitch_shift, pitch_range, energy_scale, duration_scale, pause_scale
  • Factory creer_engine(model=...) : choix explicite du modèle (high par défaut)
  • set_speaker() : changement de voix dynamique sans recharger les modèles
  • Python 3.10+ avec type hints complets (PEP-561)
  • Licence : AGPL-3.0 (code) — les modèles pré-entraînés sont sous licence commerciale