-
Notifications
You must be signed in to change notification settings - Fork 3
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
π¬π§ Home Β· π«π· Accueil
Getting started / Premiers pas
- Installation Β· π¬π§ Β· π«π·
- Setup-Wizard Β· π¬π§ Β· π«π·
- Configuration Β· π¬π§ Β· π«π·
- Plasmoid-Widget Β· π¬π§ Β· π«π·
- Tray-Icon Β· π¬π§ Β· π«π·
- Keyboard-Shortcuts Β· π¬π§ Β· π«π·
- Voice-Commands Β· π¬π§ Β· π«π·
- GPU-Setup Β· π¬π§ Β· π«π·
- Diarization Β· π¬π§ Β· π«π·
- LLM-Diarization Β· π¬π§ Β· π«π·
Speech recognition / ASR
- ASR-Backends Β· π¬π§ Β· π«π·
- Parakeet-TDT-Deep-Dive Β· π¬π§ Β· π«π·
- Canary-1B-Deep-Dive Β· π¬π§ Β· π«π·
Translation / Traduction
Post-processing / Post-traitement
- Overview Β· π¬π§ Β· π«π·
- Rules-and-Dictionary Β· π¬π§ Β· π«π·
- LLM-Correction Β· π¬π§ Β· π«π·
- Numbers-Dates-Continuation Β· π¬π§ Β· π«π·
CLI
Reference / RΓ©fΓ©rence
- Troubleshooting Β· π¬π§ Β· π«π·
- FAQ Β· π¬π§ Β· π«π·
- Developer-Guide Β· π¬π§ Β· π«π·
- Changelog Β· π¬π§ Β· π«π·
π Repo Β· π¦ Releases Β· π Issues