TTS Multi-Speaker

Lectura TTS Multi-Speaker

Synthese vocale neuronale multi-speaker francais — 6 voix + style conditioning (ONNX)

Presentation

Moteur de synthese vocale neuronale multi-speaker pour le francais, base sur FastPitch-Lite v6 (modele acoustique unifie, d_model=256) et HiFi-GAN (vocoder). Supporte 6 voix et 8 presets de style avec un modele unique.

Caracteristique Valeur
Voix 6 speakers (3F + 3M) : Siwis, Ezwa, Nadine, Bernard, Gilles, Zeckou
Style 7 presets : neutre, narratif, dialogue, expressif, meditatif, rapide, lent
Taille modele ~40 Mo (ONNX INT8) / ~118 Mo (ONNX FP32)
Debit ~50x temps-reel sur CPU (ONNX)
Entree Texte francais ou phonemes IPA
Sortie Audio 22050 Hz, float32
Controles prosodiques Pitch, energie, debit, pauses + vecteur style 5D

Deux modes d’utilisation : API (zero dependance, zero config) ou local (ONNX Runtime, inference offline).


Essayer en ligne

La demo utilise l’API Lectura — aucun telechargement necessaire.

Cliquez sur le bouton pour synthetiser.

Exemple de code

from lectura_tts_multispeaker import creer_engine, liste_speakers

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

# Creer un engine (mode API par defaut)
engine = creer_engine()

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

# Changer de voix dynamiquement
engine.set_speaker("nadine")
audio = engine.synthesize(
    text="Je suis Nadine, enchantee.",
    style="narratif",
)

# Synthese a partir de phonemes IPA avec style personnalise
audio = engine.synthesize_phonemes(
    "bɔ̃ʒuʁ kɔmɑ̃ ale vu",
    phrase_type=0,
    style_vector=[0.8, 0.6, 1.0, 0.0, 0.0],
    pitch_range=1.3,
    energy_scale=1.0,
)

Architecture

Texte → [G2P: grapheme→phoneme] → Phonemes IPA
                                        ↓
                              FastPitch-Lite Encoder (unifie)
                              (phone_ids + speaker_id + style_vector
                               → enc_out + dur/pitch/energy)
                                        ↓
                              Length Regulation + Prosody Embedding
                                        ↓
                              FastPitch-Lite Decoder
                              (decoder_in → mel spectrogram 80 bandes)
                                        ↓
                              HiFi-GAN Vocoder
                              (mel → waveform 22050 Hz)

Le pipeline complet utilise 3 modeles ONNX unifies : un encodeur partage pour les 6 voix (avec speaker_id et style_vector en entree), un decodeur et un vocoder.


Installation

pip install lectura-tts-multispeaker           # mode API (zero config, zero dependance)
pip install lectura-tts-multispeaker[onnx]     # backend ONNX Runtime local
pip install lectura-tts-multispeaker[onnx,g2p] # avec G2P integre (texte → audio)

Par defaut, le module utilise l’API Lectura (aucune configuration necessaire). Le backend local ONNX necessite les modeles pre-entraines, disponibles sous licence commerciale.


Caracteristiques techniques

  • FastPitch-Lite v6 unifie : 24.3M parametres (d_model=256, 4 layers, 4 heads, d_ff=1024), 6 speakers + style conditioning (5 dims)
  • HiFi-GAN : vocoder universel, signal 22050 Hz
  • 2 backends : API (zero config) ou ONNX Runtime local (modeles sous licence commerciale)
  • 6 voix : Siwis, Ezwa, Nadine (F) — Bernard, Gilles, Zeckou (M)
  • 7 presets de style : neutre, narratif, dialogue, expressif, meditatif, rapide, lent
  • Controles prosodiques : pitch_shift, pitch_range, energy_scale, duration_scale, pause_scale
  • Factory creer_engine() : detection automatique du meilleur mode
  • set_speaker() : changement de voix dynamique sans recharger les modeles
  • Python 3.10+ avec type hints complets (PEP-561)
  • Licence : AGPL-3.0 (code) — les modeles pre-entraines sont sous licence commerciale