Metadata-Version: 2.4
Name: lectura-tts-diphone
Version: 1.3.4
Summary: Synthese vocale par concatenation de diphones WORLD — francais
Author-email: Max Carriere <contact@lec-tu-ra.com>
License: AGPL-3.0-or-later
Project-URL: Homepage, https://www.lec-tu-ra.com/solutions/modules/tts-diphone/
Project-URL: Repository, https://github.com/maxcarriere/lectura-modules/tree/main/TTS-Diphone
Keywords: tts,french,speech-synthesis,diphone,world
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Multimedia :: Sound/Audio :: Speech
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENCE.txt
Provides-Extra: local
Requires-Dist: pyworld>=0.3.4; extra == "local"
Requires-Dist: numpy>=1.24; extra == "local"
Requires-Dist: scipy>=1.10; extra == "local"
Requires-Dist: soundfile>=0.12; extra == "local"
Provides-Extra: g2p
Requires-Dist: lectura-g2p; extra == "g2p"
Requires-Dist: lectura-tokeniseur; extra == "g2p"
Requires-Dist: lectura-formules; extra == "g2p"
Provides-Extra: all
Requires-Dist: lectura-tts-diphone[g2p,local]; extra == "all"
Dynamic: license-file

# lectura-tts-diphone

Synthese vocale francaise par concatenation de diphones dans le domaine WORLD.

## Installation

```bash
# Sans dependances (import seul)
pip install lectura-tts-diphone

# Inference locale (pyworld + numpy + scipy)
pip install "lectura-tts-diphone[local]"

# Avec G2P integre (texte → audio)
pip install "lectura-tts-diphone[all]"
```

## Utilisation

### Depuis du texte (necessite lectura-g2p)

```python
from lectura_tts_diphone import synthetiser

audio = synthetiser("Bonjour le monde")
# audio: numpy array float32, 44100 Hz
```

### Depuis des phonemes IPA

```python
from lectura_tts_diphone import creer_engine

engine = creer_engine()
audio = engine.synthesize_groups([
    {"phones": ["b", "ɔ̃", "ʒ", "u", "ʁ"], "boundary": "none"},
    {"phones": ["l", "ə", "m", "ɔ̃", "d"], "boundary": "period"},
])
```

## Controles prosodiques

| Parametre | Defaut | Description |
|-----------|--------|-------------|
| duration_scale | 1.0 | Vitesse globale (>1 = plus lent) |
| pause_scale | 1.0 | Duree des pauses inter-groupes |
| macro_expressivity | 2.0 | Gestes prosodiques (0=neutre, 4=exagere) |
| micro_expressivity | 5.0 | Micro-variations (0=robot, 10=tres expressif) |
| spectral_contrast | 1.5 | Contraste spectral (1.0=off, 2.0=fort) |
| prosody_style | "auto" | "declaratif", "question", "exclamation", "suspensif", "neutre" |
| seed | None | Graine pour micro-prosodie reproductible |

## Modes de synthese

- **FLUIDE** : lecture naturelle, enchainement continu
- **MOT_A_MOT** : lecture mot par mot avec pauses
- **SYLLABES** : lecture syllabe par syllabe

## Architecture

```
Texte → [G2P] → Phonemes IPA → Diphone chain
                                      ↓
                              WORLD params (F0 + SP + AP)
                                      ↓
                              Stretch + Concat (overlap)
                                      ↓
                              Prosodie (F0 contour + durees)
                                      ↓
                              GV compensation (contraste spectral)
                                      ↓
                              pw.synthesize → Audio 44100 Hz
```

Les diphones sont des parametres WORLD (F0 + spectral envelope + aperiodicity) extraits du corpus SIWIS et moyennes par type de transition phonetique.

## Emplacements des modeles

Recherche dans l'ordre :
1. Parametre `models_dir` explicite
2. `$LECTURA_MODELS_DIR/tts_diphone/`
3. `~/.lectura/models/tts_diphone/`
4. Modeles embarques dans le package

Fichier requis : `diphones.dpk.gz` (ou `.dpk.gz.enc` chiffre)
Fichier optionnel : `diphone_statistics.pkl`

## Licence

Double licence : AGPL-3.0 (code) + [Licence Commerciale](mailto:contact@lec-tu-ra.com) (modeles).
