STT
Lectura STT
Transcription audio du francais — phones IPA et texte orthographique
Presentation
Deux modules pour la transcription audio du francais :
| Module | Couche | Entree | Sortie | pip install |
|---|---|---|---|---|
| Lectura CTC | couche 1 | audio 16 kHz | phones IPA | pip install lectura-ctc |
| Lectura STT | couche 2 | audio 16 kHz | texte orthographique | pip install lectura-stt[p2g] |
CTC est le decodeur phonetique neural (CNN-BiGRU-CTC, 3.5M parametres, PER ~6%). Il convertit un signal audio en une sequence de phones IPA avec separateurs de mots, liaisons et ponctuation.
STT est le pipeline complet qui chaine CTC avec le graphemiseur P2G pour reconstituer le texte francais, avec gestion des elisions, de la ponctuation et des majuscules. Si lectura-p2g est installe, les formules (nombres, sigles) et les noms propres sont aussi traites.
Specifications CTC
| Caracteristique | Valeur |
|---|---|
| Architecture | CNN Frontend (2 couches) + BiGRU (3 couches) + CTC head |
| Parametres | 3.5M |
| Performance | PER ~6% sur le corpus de test |
| Vocabulaire | 59 tokens (46 phones IPA + liaisons + ponctuation + speciaux) |
| Audio | PCM float32 mono, 16 kHz |
| Mel | 80 bins, n_fft=512, hop=160, win=400 |
| Modele | ONNX INT8, ~13 Mo |
| Backends | ONNX Runtime (local) ou API serveur |
Essayer en ligne
La demo utilise l’API Lectura — aucun telechargement necessaire.
Selectionnez un fichier audio ou enregistrez votre voix, puis cliquez sur Transcrire.
Exemple de code
CTC seul (phones IPA)
import numpy as np
from lectura_ctc import creer_engine
engine = creer_engine()
# Transcrire un fichier WAV (charger avec wave/soundfile)
import wave
with wave.open("bonjour.wav", "rb") as wf:
sr = wf.getframerate()
audio = np.frombuffer(
wf.readframes(wf.getnframes()), dtype=np.int16
).astype(np.float32) / 32768.0
ipa = engine.transcrire(audio, sr=sr)
print(ipa) # "b ɔ̃ ʒ u ʁ"
Pipeline STT (audio → texte)
from lectura_stt import creer_engine
engine = creer_engine() # CTC + P2G automatique
result = engine.transcrire(audio, sr=16000)
print(result.ipa) # "b ɔ̃ ʒ u ʁ | l ə | m ɔ̃ d ."
print(result.texte) # "Bonjour le monde."
# CLI CTC : transcrire un fichier
python -m lectura_ctc bonjour.wav
# CLI CTC : enregistrer au micro
python -m lectura_ctc --micro
# CLI CTC : enregistrer 5 secondes
python -m lectura_ctc --micro --duree 5
# CLI CTC : mode continu (Ctrl+C pour quitter)
python -m lectura_ctc --micro --continu
Architecture
Pipeline STT (audio → texte)
Audio 16kHz mono
│
▼
┌─────────────┐
│ lectura-ctc │ CNN-BiGRU-CTC (3.5M params)
└─────┬───────┘
│
▼
"b ɔ̃ ʒ u ʁ | l ə | m ɔ̃ d ." (IPA brut)
│
▼
┌─────────────┐
│ _parse_ctc │ extraction mots IPA + ponctuation + liaisons
└─────┬───────┘
│
▼
["bɔ̃ʒuʁ", "lə", "mɔ̃d"] (mots IPA)
│
▼
┌─────────────┐
│ lectura-p2g │ graphemiseur + formules + noms propres
└─────┬───────┘
│
▼
["bonjour", "le", "monde"] (mots ortho)
│
▼
┌─────────────┐
│ _assembler │ majuscules + elisions + ponctuation
└─────┬───────┘
│
▼
"Bonjour le monde." (texte final)
Modele CTC (detail)
Audio 16kHz mono
│
▼
┌─────────────┐
│ Mel spectro │ numpy pur (80 bins, 100 fps)
│ STFT + log │
└─────┬───────┘
│ (1, 1, 80, T)
▼
┌─────────────┐
│ CNN Frontend │ 2x Conv2d stride 2 → subsampling ×4
└─────┬───────┘
│ (1, T/4, 1280)
▼
┌─────────────┐
│ BiGRU ×3 │ 3 couches bidirectionnelles
└─────┬───────┘
│ (1, T/4, 512)
▼
┌─────────────┐
│ CTC head │ Linear → 59 classes
└─────┬───────┘
│ (1, T/4, 59)
▼
┌─────────────┐
│ CTC greedy │ argmax + deduplique + supprime blanks
│ decode │
└─────┬───────┘
│
▼
"b ɔ̃ ʒ u ʁ | l ə | m ɔ̃ d"
Installation
# Pipeline STT complet (audio → texte, avec P2G + formules)
pip install lectura-stt[p2g]
# STT avec backend ONNX (inference locale rapide)
pip install lectura-stt[onnx,p2g]
# CTC seul (audio → phones IPA)
pip install lectura-ctc[onnx]
# Mode API uniquement (sans ONNX)
pip install lectura-ctc
# Avec support micro (CLI)
pip install lectura-ctc[onnx,micro]
Par defaut, les modules utilisent l’API Lectura si aucun modele local n’est trouve. Pour l’inference locale, installez les modeles ONNX dans ~/.lectura/models/ ou utilisez le backend ONNX avec les modeles embarques (disponibles sous licence commerciale).
Caracteristiques techniques
CTC (couche 1)
- CNN-BiGRU-CTC : 3.5M parametres, PER ~6%
- Mel spectrogram numpy pur : pas de dependance torchaudio
- Decodage CTC greedy : zero dependance
- 59 tokens : 46 phones IPA francais + 6 liaisons + 5 ponctuations + 2 speciaux
- ONNX INT8 : modele quantifie ~13 Mo
- CLI integree :
python -m lectura_ctc(fichier WAV ou micro) - Factory
creer_engine(): cascade auto ONNX → API
STT (couche 2)
- Pipeline CTC + P2G : audio → texte francais en une ligne de code
- P2G optionnel : fonctionne en mode phones seuls si P2G non installe
- Cascade P2G :
lectura-p2g(complet) →lectura-graphemiseur(core) → aucun - Elisions automatiques : l’, d’, j’, n’, s’, qu’, m’, t’, c’
- Ponctuation et majuscules : reconstruction fidele du texte
- Formules : nombres, sigles (via
lectura-p2g) - Python 3.10+ avec type hints complets
- Licence : AGPL-3.0 (code) — modeles sous licence commerciale