Elias Bellouti
EN
← Retour aux projets

Projet personnel · Dictée vocale

Dictée locale : dicter dans vos applications

J’ai développé cet outil pour dicter dans un éditeur ou une conversation sans ouvrir une application intermédiaire ni envoyer la voix à un service externe. Il capture la parole, détecte la fin des phrases et colle le texte dans la fenêtre active. Whisper et Silero fournissent les modèles ; mon travail porte sur leur intégration dans l’usage quotidien, les hésitations, le filtrage des sorties parasites et le passage entre écoute, transcription et veille. Le collage automatique cible Ubuntu sous X11.

Transcription locale, collage dans la fenêtre active et restauration du presse-papiers.

Passer de la parole au texte dans la fenêtre ouverte

L’utilisateur place son curseur dans un éditeur ou un champ de message, active le microphone et dicte. Le texte arrive dans cette même application, sans copier-coller manuel. Après le téléchargement initial des modèles, la reconnaissance reste sur l’ordinateur.

J’ai construit le parcours complet autour de Whisper, exécuté avec faster-whisper, et du détecteur de parole Silero. Les raccourcis permettent de suspendre l’écoute, de transcrire le fragment restant ou de mettre l’outil en veille. Le collage sous X11 restaure ensuite le contenu du presse-papiers.

Attendre une fin de phrase sans couper les hésitations

Reconnaître les mots ne suffit pas : il faut décider quand envoyer l’enregistrement au modèle. Un silence peut terminer une phrase ou simplement marquer une hésitation. J’ai combiné sa durée avec la baisse d’énergie et la hauteur de voix pour ajuster cette attente.

Les seuils sont étagés : le silence seul attend davantage que plusieurs indices concordants. Un test vérifie leur ordre pour que les conditions les plus simples ne masquent pas les autres. Lorsque le bruit gêne la détection automatique, un mode manuel laisse l’utilisateur décider du moment de transcription.

J’ai aussi distingué les motifs courts et les expressions longues dans le filtre des sorties parasites. Une égalité exacte pour les mots courts évite de supprimer une phrase légitime qui contient simplement le même mot.

Préserver la capture et les ressources

Le visualiseur PySide6 tourne dans un processus séparé du traitement audio. Il reçoit les états et le texte par un flux SSE, adapté à cette communication principalement unidirectionnelle. Cette séparation vise à éviter qu’un blocage de l’interface interrompe la capture.

La veille réduit l’activité quand l’outil n’est pas utilisé, puis décharge les modèles après une absence prolongée. J’ai désactivé par défaut la prévisualisation continue : sa deuxième passe Whisper consomme des ressources pour un bénéfice limité dans ce parcours.

Vérifier les changements de traitement

J’ai remplacé une boucle Python du filtre passe-haut par son équivalent vectorisé dans SciPy. Sur le tampon de 30 secondes mesuré, le prétraitement passe de 445 à 10 ms, avec un écart numérique maximal de 1,2 × 10⁻⁷.

Cette mesure concerne le filtre. Une démonstration sur fichier audio et les tests de détection permettent aussi d’examiner les composants sans microphone, en complément de l’usage au bureau.

Architecture et décisions · Tests du filtre · Tests de fin de phrase

Les compétences mises en pratique

Développement web et desktop

J’ai séparé l’affichage de l’activité vocale du traitement audio pour suivre la dictée sans interrompre la capture.

Tests, évaluation et fiabilité

J’ai réglé les seuils de silence et le filtrage des sorties parasites pour préserver les hésitations et les phrases légitimes.

← Retour aux projets