STT
Lectura STT
Transcription audio du francais — phones IPA et texte orthographique
Presentation
Trois 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] |
| Lectura STT-Formules | specialise | audio 16 kHz | tokens semantiques | pip install lectura-stt-formules[inference] |
CTC est le decodeur phonetique neural (CNN-BiGRU-CTC medium, 10.6M parametres, PER ~4.34%). Il convertit un signal audio en une sequence de phones IPA avec separateurs de mots, liaisons et ponctuation. Le modele medium supporte les sigles et formules grace a un fine-tuning specialise.
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.
STT-Formules est un modele CTC autonome et leger (~600K parametres) entraine specifiquement pour la reconnaissance de formules. Au lieu de phonemes IPA, il produit directement des tokens semantiques (87 classes : nombres, mois, devises, lettres, etc.), avec un TER de ~1.17%. Ideal pour les applications de saisie vocale de donnees structurees.
Specifications CTC
| Caracteristique | Valeur |
|---|---|
| Architecture | CNN [48, 96] (2 couches) + BiGRU 384x4 + CTC head |
| Parametres | 10.6M |
| Performance | PER ~4.34% (formules v2) |
| 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, ~38 Mo |
| Backends | ONNX Runtime (local) ou API serveur |
Benchmark STT (pipeline complet)
| Metrique | Corpus | Score |
|---|---|---|
| WER moyen | parole courante | ~15% |
| PER | CTC seul (phone error rate) | ~4.34% |
Pipeline CTC + P2G v7 + post-traitement grammatical. Performances comparables a Whisper small (241M params, 461 Mo) avec un pipeline 10x plus leger (~43 Mo de modeles).
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
STT-Formules (audio → tokens semantiques)
from lectura_stt_formules import creer_engine
engine = creer_engine()
result = engine.transcrire("nombre.wav")
print(result["names"]) # ["DEUX", "CENT", "VINGT", "ET", "UN"]
print(result["tokens"]) # [4, 25, 20, 29, 3]
print(" ".join(result["names"])) # "DEUX CENT VINGT ET UN"
Le vocabulaire de sortie comprend 87 tokens semantiques : nombres atomiques (0-16), dizaines, echelles, connecteurs, mois, heures, devises, pourcentages, ordinaux, fractions et lettres A-Z pour les sigles.
Architecture
Pipeline STT (audio → texte)
Audio 16kHz mono
│
▼
┌─────────────┐
│ lectura-ctc │ CNN-BiGRU-CTC medium (10.6M 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 ×4 │ 4 couches bidirectionnelles (384h)
└─────┬───────┘
│ (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]
# STT-Formules (tokens semantiques, inference locale)
pip install lectura-stt-formules[inference]
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 medium : 10.6M parametres, PER ~4.34%
- 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 ~38 Mo
- CLI integree :
python -m lectura_ctc(fichier WAV ou micro) - Factory
creer_engine(): cascade auto ONNX → API
STT (couche 2)
- WER ~15% (parole courante), comparable a Whisper small avec 10x moins de parametres
- Pipeline optimal : CTC → segmentation phonetique → P2G v7 (lex-select) → merge_and_rescore → post-traitement grammatical → texte
- 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