-
Notifications
You must be signed in to change notification settings - Fork 2
fr LLM Correction
🌐 Langue : English | Français
La correction LLM utilise une instance Ollama locale pour polir la sortie ASR concernant la fluidité, la ponctuation et la cohérence — des corrections que les règles et dictionnaire pattern-based ne peuvent pas facilement exprimer. Elle est optionnelle et désactivée par défaut.
dictée vous laisse choisir où tourne le LLM dans le pipeline en 12 étapes : first (avant les règles regex, ASR brut en entrée), last (après tout, polish final), ou hybrid (aux deux positions). Chaque position a des compromis différents sur qualité, latence et risque d'hallucination.
- Quand activer la correction LLM
- Position : first / last / hybrid
- Prompt structuré
- Modèles recommandés
- Budget latence
- Mitigation hallucinations
- Comportement multi-langues
- Désactiver pour dictées sensibles
Activer si :
- Votre backend ASR a une ponctuation imparfaite (Vosk, vieux Whisper)
- Vous dictez en plusieurs langues et voulez une qualité cohérente entre elles
- Vous voulez une correction automatique d'accord sujet-verbe, accents (FR), accord de genre — choses que les règles ne peuvent pas attraper fiable ment
- Vous acceptez +2–3 s de latence par dictée pour une meilleure sortie
Ne pas activer si :
- Vous avez besoin d'une sortie déterministe (p. ex. dictées de code où l'orthographe doit être préservée)
- Vous dictez des commandes ou du contenu technique (le LLM peut "corriger" la syntaxe valide)
- Vous êtes sur un GPU à VRAM basse (le LLM rivalise avec l'ASR pour la mémoire)
Le LLM peut se placer à une des trois positions du pipeline en 12 étapes :
Le LLM tourne à l'étape 6 — avant les règles regex post-LLM (étape 7).
Sortie ASR → [variantes+dict+nombres+continuation] → [règles pré-LLM]
→ 🔵 Correction LLM 🔵
→ [règles post-LLM] → [keepcaps] → [capitalisation] → [traduction] → coller
Quand utiliser :
- Votre sortie ASR est bruitée (Vosk sans modèle de ponctuation)
- Vous avez des règles regex qui dépendent d'un texte propre (p. ex. guillemets typographiques, espacement)
- Vous voulez que le LLM voie les erreurs ASR brutes, pas un texte corrigé par règles
Compromis :
- Le LLM peut "corriger" les patterns intentionnels produits par vos règles
- Les règles regex en aval doivent gérer les variations de sortie LLM
Le LLM tourne à l'étape 6 aussi, mais les règles post-LLM (7) sont sautées. Équivalent à déplacer le LLM juste avant la capitalisation.
Sortie ASR → [variantes+dict+nombres+continuation] → [règles pré-LLM]
→ [règles post-LLM si LLM sauté]
→ 🟢 Correction LLM 🟢
→ [keepcaps] → [capitalisation] → [traduction] → coller
Quand utiliser :
- Vous voulez que les règles tournent d'abord (comportement déterministe garanti)
- Vous voulez que le LLM polisse ce que les règles n'ont pas attrapé
- Vous avez peu de règles personnalisées et comptez sur le LLM pour le gros du travail
Compromis :
- Le LLM voit un texte déjà traité, peut mal interpréter la ponctuation insérée par règles
- Plus difficile à déboguer : si la sortie est fausse, est-ce la règle ou le LLM ?
Le LLM tourne deux fois — aux positions first et last.
Sortie ASR → [variantes+dict+nombres+continuation] → [règles pré-LLM]
→ 🔵 Passe LLM 1 🔵
→ [règles post-LLM]
→ 🟢 Passe LLM 2 🟢
→ [keepcaps] → [capitalisation] → [traduction] → coller
Quand utiliser :
- Vous voulez la qualité maximale et pouvez vous permettre 4–6 s de latence
- Dictées complexes où à la fois l'ASR brut et le polish final bénéficient du LLM
Compromis :
- 2× le coût de latence LLM
- 2× le risque d'hallucination
- Rendement décroissant par-dessus un simple LLM mono-passe
dictée envoie un prompt strict à Ollama pour minimiser les hallucinations :
You are a text editor. Correct the spelling, punctuation, grammar,
and fluency of the following transcribed speech. Keep the meaning
IDENTICAL. Do NOT rephrase, add content, or remove information.
Output ONLY the corrected text on ONE LINE. No explanations,
no quotes, no markdown, no prefixes.
Language: {lang}
Text: {raw_asr_output}
Le LLM est instruit d'être conservateur :
- Pas de reformulation (préserver la voix du locuteur)
- Pas d'ajout de contenu (ne pas inventer de faits)
- Pas de suppression de contenu (ne pas omettre de mots)
- Format de sortie strictement une ligne de texte
Si le LLM retourne une sortie malformée (plusieurs lignes, JSON, explications), dictée extrait la première ligne de contenu et supprime les guillemets. Si l'extraction échoue, la sortie ASR brute est utilisée (fallback gracieux).
Identiques à Ollama-Setup, mais le point optimal pour la correction spécifiquement diffère de la traduction :
| Modèle | VRAM | Latence | Qualité correction | Notes |
|---|---|---|---|---|
gemma3:4b ⭐ défaut |
~4 Go | 2–3 s | Excellente | Meilleur équilibre, toutes langues |
qwen2.5:3b |
~3 Go | 2 s | Bonne pour EN | Plus faible sur accents français |
llama3.2:3b |
~3 Go | 2–3 s | Bonne | Peut sur-corriger la parole informelle |
gemma3:12b |
~10 Go | 5–7 s | Meilleure | Saut de qualité notable |
mistral:7b-instruct |
~5 Go | 3 s | Bonne | Peut halluciner sur entrée bruitée |
Recommandation : commencer avec gemma3:4b et upgrader à gemma3:12b seulement si vous avez la VRAM et tenez aux gains marginaux de qualité.
Pour une dictée typique de 5 secondes avec correction LLM activée (Gemma 3 4B sur RTX 4070) :
| Étape du pipeline | Temps |
|---|---|
| Étapes 1–5 (variantes → règles pré-LLM) | ~20 ms |
| Correction LLM (position first) | ~2,5 s |
| Étapes 7–10 (règles post-LLM → capitalisation) | ~15 ms |
| Étape 11 (traduction via Google, optionnelle) | ~0,5 s |
| Étape 12 (coller via dotool) | ~50 ms |
| Total avec LLM, sans traduction | ~2,6 s |
| Total avec LLM + traduction | ~3,1 s |
Sans LLM : ~80 ms au total. Le LLM est de loin l'étape la plus coûteuse.
Pour les dictées rapides où vous ne voulez pas l'impact de 2,5 s, associez un second raccourci qui pose DICTEE_PP_LLM=0 :
# Associer Alt+F9 (ou équivalent) à
DICTEE_PP_LLM=0 dicteeLes LLM peuvent halluciner, surtout sur :
- Dictées très courtes (< 3 mots)
- Audio ambigu (locuteur a baissé la voix, micro coupé)
- Jargon technique (LLM "corrige" de vrais termes en mots communs)
Mitigations intégrées à dictée :
- Prompt strict — conservateur, format contraint (voir ci-dessus)
- Vérification de longueur — si la sortie LLM fait < 50 % ou > 200 % de la longueur d'entrée, retomber sur l'entrée
-
Mode wrapper JSON (expérimental) — envelopper la sortie dans
{"text": "..."}pour un parsing facilité - Désactiver pour texte court — la correction LLM est automatiquement sautée si l'entrée fait < 4 mots (lié au seuil keepcaps)
Les utilisateurs peuvent ajuster le seuil :
# Sauter le LLM pour dictées < 10 mots
export DICTEE_LLM_MIN_WORDS=10Le LLM est aware de la langue via la ligne Language: {lang} du prompt. Gemma 3 4B et Qwen 2.5 3B gèrent tous deux les 7 codes ISO 639-1 que dictée supporte (en, fr, de, es, it, pt, uk) correctement.
Pour les langues rares (scripts asiatiques, nordiques, etc.), votre backend ASR en supporte plus que le LLM. Dans ce cas, désactivez la correction LLM et reposez-vous sur règles + dictionnaire.
dictée passe la langue détectée par le backend ASR — pas besoin d'override manuel sauf si la détection ASR est fausse (voir Parakeet-TDT-Deep-Dive#fausse-détection-cyrillique).
Les dictées contenant mots de passe, PII, données médicales ou secrets d'entreprise devraient contourner le LLM — même si Ollama tourne localement, vous pouvez avoir le logging activé ou partager votre instance Ollama sur le LAN.
Trois façons de désactiver pour une dictée spécifique :
-
Variable d'environnement (one-off) :
DICTEE_PP_LLM=0 dictee
-
Second raccourci sans LLM (configuration recommandée) :
- Associer
F9àdictee(avec LLM) - Associer
Ctrl+F9àDICTEE_PP_LLM=0 dictee(sans LLM)
- Associer
-
Toggle du wizard — désactiver le LLM globalement pour une session
Les trois laissent rules.conf et dictionary.conf intacts — seule l'étape 6 du pipeline est sautée.
- Ollama-Setup — installation, modèles, tuning
- Post-Processing-Overview — où le LLM se place dans le pipeline en 12 étapes
- Rules-and-Dictionary — alternative pattern-based au LLM
- Troubleshooting — quand le LLM retourne rien
Getting started / Premiers pas
- Installation · 🇬🇧 · 🇫🇷
- Setup-Wizard · 🇬🇧 · 🇫🇷
- Configuration · 🇬🇧 · 🇫🇷
- Plasmoid-Widget · 🇬🇧 · 🇫🇷
- Tray-Icon · 🇬🇧 · 🇫🇷
- Keyboard-Shortcuts · 🇬🇧 · 🇫🇷
- Voice-Commands · 🇬🇧 · 🇫🇷
- GPU-Setup · 🇬🇧 · 🇫🇷
- Diarization · 🇬🇧 · 🇫🇷
- LLM-Diarization · 🇬🇧 · 🇫🇷
Speech recognition / ASR
Translation / Traduction
Post-processing / Post-traitement
- Overview · 🇬🇧 · 🇫🇷
- Rules-and-Dictionary · 🇬🇧 · 🇫🇷
- LLM-Correction · 🇬🇧 · 🇫🇷
- Numbers-Dates-Continuation · 🇬🇧 · 🇫🇷
CLI
Reference / Référence
🏠 Repo · 📦 Releases · 🐛 Issues