-
Notifications
You must be signed in to change notification settings - Fork 2
fr Numbers Dates Continuation
🌐 Langue : English | Français
Cette page couvre trois fonctionnalités de post-traitement qui partagent un thème commun : l'interprétation contextuelle de la sortie ASR qui produirait sinon du texte épelé ou maladroit.
-
Nombres : cardinaux parlés, ordinaux, chaînes de version et virgules décimales deviennent de vrais chiffres (
"one point three"→"1.3","vingt-trois"→"23","un virgule cinq"→"1,5"). -
Dates & heures : les heures parlées en français obtiennent un formatage intelligent (
"quatorze heures trente"→"14 h 30"). - Tampon de continuation : le ou les derniers mots de la dictée précédente sont mémorisés entre sessions, pour continuer une phrase naturellement après une pause.
Implémentée dans dictee-postprocess (Python) en utilisant la bibliothèque text2num. Aware de la langue : français utilise virgule décimale ,, anglais utilise point décimal ..
Entiers simples, parlés comme mots, convertis en chiffres :
Langues supportées : fr, en, de, es, it, pt (via text_to_num). uk n'est pas supporté par text_to_num — la conversion des nombres est ignorée pour les dictées en ukrainien.
| Parlé (entrée) | Converti (sortie) |
|---|---|
"vingt-trois" (fr) |
"23" |
"cent quatre-vingt-douze" (fr) |
"192" |
"deux mille vingt-six" (fr) |
"2026" |
"twenty-three" (en) |
"23" |
"one hundred ninety-two" (en) |
"192" |
"two thousand twenty-six" (en) |
"2026" |
"dreiundzwanzig" (de) |
"23" |
"hundertzweiundneunzig" (de) |
"192" |
"veintitrés" (es) |
"23" |
"ciento noventa y dos" (es) |
"192" |
"ventitré" (it) |
"23" |
"centonovantadue" (it) |
"192" |
"vinte e três" (pt) |
"23" |
"cento e noventa e dois" (pt) |
"192" |
Cas limites gérés :
- Les
"un"/"one"/"zéro"/"zero"isolés ne sont pas convertis par défaut (limitation text2num) — préservés comme mots sauf si une règle force la conversion. - Tirets :
"vingt trois"(sans trait d'union) → normalisé en"vingt-trois"→ ensuite converti en"23".
Les ordinaux (premier, deuxième, troisième…) sont convertis quand suivis d'un marqueur contextuel :
| Parlé | Converti |
|---|---|
"chapitre premier" (fr) |
"chapitre 1er" |
"troisième édition" (fr) |
"3e édition" |
"twenty-first century" (en) |
"21st century" |
La conversion ordinale est plus conservatrice que la cardinale — un "premier" isolé ne sera pas converti (pourrait être un nom, Premier Ministre, etc.).
Cas spécial : "version un point trois point zéro" → "version 1.3.0".
Pattern détecté : "N point N (point N)*" où chaque N est un mot cardinal. Déclenché par le mot principal "version" ou par des règles regex environnantes.
Parlé : "La mise à jour est en version un point trois point zéro"
Sortie : "La mise à jour est en version 1.3.0"
Ajouté en v1.3. Les versions précédentes nécessitaient des règles regex manuelles.
Spécifique à la langue. Le séparateur décimal suit la convention locale : virgule (,) pour fr/de/es/it/pt, point (.) pour en. uk n'est pas supporté (pas de backend text_to_num).
Parlé (fr — virgule) |
Sortie |
|---|---|
"un virgule cinq" |
"1,5" |
"zéro virgule sept" |
"0,7" |
"trois virgule quatorze" |
"3,14" |
Parlé (en — point) |
Sortie |
|---|---|
"one point five" |
"1.5" |
"zero point seven" |
"0.7" |
"three point one four" |
"3.14" |
Parlé (de — Komma) |
Sortie |
|---|---|
"eins komma fünf" |
"1,5" |
"null komma sieben" |
"0,7" |
"drei komma eins vier" |
"3,14" |
⚠ Limite côté allemand : un mot composé après komma ("drei komma vierzehn" pour 3,14) n'est pas converti — text_to_num laisse "3 komma 14". Utiliser la forme épelée chiffre par chiffre ("drei komma eins vier") pour des décimales fiables.
Parlé (es — coma) |
Sortie |
|---|---|
"uno coma cinco" |
"1,5" |
"cero coma siete" |
"0,7" |
"tres coma catorce" |
"3,14" |
Parlé (it — virgola) |
Sortie |
|---|---|
"uno virgola cinque" |
"1,5" |
"zero virgola sette" |
"0,7" |
"tre virgola quattordici" |
"3,14" |
Parlé (pt — vírgula) |
Sortie |
|---|---|
"um vírgula cinco" |
"1,5" |
"zero vírgula sete" |
"0,7" |
"três vírgula catorze" |
"3,14" |
Ajouté en v1.3 pour le français. Les autres langues réutilisent le même pipeline (text_to_num + la regex de post-traitement _DECIMAL_COMMA_RE qui compacte "1, 5" → "1,5").
Les expressions horaires françaises sont converties au format canonique HH h MM :
| Parlé | Sortie |
|---|---|
"quatorze heures trente" |
"14 h 30" |
"huit heures quarante-cinq" |
"8 h 45" |
"midi et demi" |
"12 h 30" |
"minuit et quart" |
"0 h 15" |
"trois heures pile" |
"3 h 00" |
Cas limites :
-
"demi"→30 -
"quart"→15 -
"trois quarts"→45 -
"pile"/"tapantes"(à l'heure pile) →00
Ajouté en v1.3. Le formatage horaire anglais est planifié mais pas encore implémenté.
Une fonctionnalité de niche mais demandée : "trois égale trois" → "3 = 3" en français (et équivalents dans d'autres langues). Le signe = est inséré uniquement quand entouré de chiffres pour éviter les faux positifs dans du texte régulier.
Parlé : "deux égale deux"
Sortie : "2 = 2"
Parlé : "c'est égal à combien"
Sortie : "c'est égal à combien" (non converti — "égal" seul, pas de chiffres autour)
Ajouté en v1.3.
La fonctionnalité de continuation vous laisse faire une pause en milieu de phrase et reprendre naturellement. Quand vous dites le mot déclencheur de continuation au début d'une nouvelle dictée, dictée fusionne avec le ou les derniers mots de la dictée précédente.
| Langue | Mot déclencheur |
|---|---|
| Français | minuscule |
| Anglais | continue |
| Allemand | klein |
| Espagnol | minúscula |
| Italien | minuscola |
| Portugais | minúscula |
| Ukrainien | рядкова |
Configuré dans /usr/share/dictee/continuation.conf.default (personnalisable via ~/.config/dictee/continuation.conf).
Important : le mot déclencheur apparaît au début de la nouvelle dictée, pas à la fin de la précédente. C'est une source de confusion commune :
Dictée 1 : "J'ai commencé le projet"
(utilisateur s'arrête, réfléchit, redémarre l'enregistrement)
Dictée 2 : "minuscule hier après-midi"
(dictée voit le mot déclencheur, continue)
Sortie finale : "J'ai commencé le projet hier après-midi"
Le pipeline sauvegarde les 1–3 derniers mots + l'état casse-minuscule + le dernier espace blanc dans /dev/shm/.dictee_continuation (tmpfs, effacé au redémarrage). Cela permet :
-
Préservation de la casse à la frontière de continuation (si la précédente se terminait par
".", la suivante commence en majuscule ; sinon minuscule) - Préservation des espaces (espace vs pas d'espace, retour ligne)
- Détection de la récence vs obsolète (effacé après 60 s d'inactivité)
Le tampon de continuation peut être effacé pour démarrer une nouvelle phrase clean (sans espace en tête, sans >>, première lettre capitalisée).
Trois mécanismes :
| Mécanisme | Quand | Action |
|---|---|---|
| Auto-reset au démarrage | 1ère dictée après reboot | Le tampon rémanent (/dev/shm/.dictee_last_word-UID) est wipé silencieusement via un marker session (lui-même dans /dev/shm, donc effacé au reboot) |
Commande vocale à la ligne |
Tu veux taper un saut de ligne ET reset le contexte | Tape \n + wipe |
Commande vocale nouvelle phrase |
Tu as déjà bougé le curseur (Entrée clavier, clic dans le doc) ET tu veux éviter l'espace en tête | Wipe seul, rien typé |
Voir aussi : Commandes vocales — référence complète de toutes les commandes vocales pour les 7 langues.
| Langue | Commande |
|---|---|
| Français |
nouvelle phrase / nouvelles phrases
|
| Anglais |
new sentence / new sentences
|
| Allemand |
neuer Satz / neue Sätze
|
| Espagnol |
nueva frase / nuevas frases
|
| Italien |
nuova frase / nuove frasi
|
| Portugais |
nova frase / novas frases
|
| Ukrainien |
нове речення / нові речення
|
Configuré dans rules.conf.default (section « 3a-bis »). La commande est ancrée au début de la dictée — dire « Une nouvelle phrase apparaît dans ce texte » ne la déclenche pas.
Dictée 1 : « Bonjour. »
(tu appuies sur Entrée au clavier physique)
Dictée 2 : « nouvelle phrase, comment ça va »
→ Tapé : « Comment ça va » (capitalisé, pas d'espace en tête)
- Standalone : dire « nouvelle phrase » seule → wipe seul, rien typé. Utile avant de relancer une nouvelle dictée propre.
- Inline : dire « nouvelle phrase, le reste de ma phrase » → wipe + typage du reste avec capitalisation automatique de la première lettre.
à la ligne |
nouvelle phrase |
|
|---|---|---|
Tape un saut de ligne (\n) |
✓ | ✗ |
| Wipe du contexte de continuation | ✓ | ✓ |
| Cas d'usage | Tu veux changer de ligne par voix | Le curseur est déjà sur une nouvelle ligne (Entrée clavier ou clic) |
Pour une continuation encore plus fluide, dictée peut passer du contexte au niveau audio à Parakeet-TDT : les 1–2 dernières secondes de l'enregistrement précédent sont concaténées au début du nouveau, et le trimming basé sur timestamps supprime le chevauchement après transcription.
Cela élimine les artefacts de frontière ASR (syllabes perdues, pauses fantômes). Implémenté via :
-
Pré-concaténation :
soxjoint les 2 dernières secondes de la précédente + l'enregistrement nouveau complet - Double transcription : Canary transcrit à la fois le nouveau seul + le combiné → extrait seulement le nouveau contenu via les timestamps des tokens
- Fallback : si l'une des transcriptions échoue, retomber sur la continuation purement textuelle
Le contexte audio est activé par défaut pour Parakeet et Canary, désactivé pour Whisper large-v3/turbo/distil (timestamps DTW dégradés).
La continuation fonctionne avec la traduction, avec un bémol : c'est la sortie traduite de la dictée précédente qui est continuée, pas la source brute.
Dictée 1 (FR → EN traduit) :
Parlé : "La réunion commence à deux heures"
Traduit : "The meeting starts at two"
Dictée 2 (FR → EN traduit, avec continuation) :
Parlé : "minuscule p.m."
Traduit : "p.m."
Continuation : fusionne avec "The meeting starts at two" (EN)
Collage final : "The meeting starts at two p.m."
La préservation des espaces à la frontière est garantie (corrigée en v1.3-beta5 — était buguée en beta1–4).
- Les
"un"/"one"/"zéro"/"zero"isolés ne sont pas convertis (casserait la prose normale) - Les très grands nombres (milliards) sont convertis mais peuvent être lents sur CPU
- La notation scientifique (
"trois virgule quatorze fois dix puissance deux") n'est pas gérée — utilisez les règles regex
-
"quatorze heures"(sans minutes) →"14 h 00"ou"14 h"? Le second est choisi (pas de00trailing). - 24h vs 12h :
"huit heures"défaut à"8 h"(ambigu). Pour 20h utilisez"vingt heures"explicitement.
- Délai maximum : 60 s entre dictées (au-delà, le tampon est effacé)
- Seul le dernier mot est mémorisé fiablement — la continuation multi-mots existe mais a des cas limites avec la ponctuation
- Pas de continuation entre utilisateurs différents (suffixe UID isole les tampons)
- Post-Processing-Overview — où ces étapes se placent dans le pipeline
- Rules-and-Dictionary — règles regex pour les cas non gérés par text2num
- LLM-Correction — le LLM peut corriger des subtilités que text2num rate
- Troubleshooting — tampon de continuation non déclenché, conversion nombre fausse
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