URL: https://linuxfr.org/news/nocomprendo-continue-son-chemin Title: NoComprendo continue son chemin Authors: be.root Davy Defaud, Ysabeau đŸ§¶, palm123 et ZeroHeure Date: 2020ćčŽ02月24æ—„T09:45:56+01:00 License: CC By-SA Tags: nocomprendo, commande_vocale, mageia et reconnaissance_vocale Score: 56 Il y a quelque temps, je vous prĂ©sentais [NoComprendo, logiciel de commandes vocales](https://linuxfr.org/users/be-root/journaux/nocomprendo-la-commande-vocale-pour-linux) en cours de dĂ©veloppement. Deux mois plus tard sortait la [version 1.0](https://linuxfr.org/news/nocomprendo-version-1-0). Depuis, j’ai Ă©tĂ© contactĂ© par l’équipe de Mageia et celle de [DVKBuntu](https://dvkbuntu.org/) un projet handy opensource. Pour les premiers, j’ai amĂ©liorĂ© et simplifiĂ© le processus de construction et les outils utilisĂ©s. Pour les seconds, j’ai apportĂ© quelques modifications d’ergonomie. Pour le plaisir, j’ai Ă©liminĂ© les outils externes de crĂ©ation de « _Language model_ » pour les remplacer par un interne, codĂ© en Qt/C++. Voici donc une nouvelle version numĂ©rotĂ©e 1.1. ---- [site Web de NoComprendo](http://be.root.free.fr/?soft=nocomprendo) [tĂ©lĂ©charger NoComprendo](https://software.opensuse.org/download.html?project=home:be-root:nocomprendo&package=nocomprendo) [tutoriels vidĂ©os](http://be.root.free.fr/?soft=nocomprendo&menu=tutos) ---- NouveautĂ©s ========== Rappel ------ NoComprendo est fourni avec un ensemble de commandes de dĂ©monstration (orientĂ© Plasma/KDE). Ces commandes ne prĂ©tendent pas ĂȘtre adaptĂ©es Ă  tout le monde, elles sont lĂ  comme exemples de ce qu’on peut faire. C’est Ă  chacun de constituer des groupes de commandes adaptĂ©s Ă  son environnement et aux applications qu’il utilise. VĂ©rifier si les commandes disponibles correspondent bien Ă  vos besoins. NouveautĂ©s dans l’interface --------------------------- ### SĂ©lecteur de langue - NoComprendo utilisait par dĂ©faut la variable d’environnement `LANGUAGE` pour sĂ©lectionner la langue par dĂ©faut ; - maintenant, au premier dĂ©marrage, l’application vous propose de choisir parmi les langues disponibles (_fr_FR_ et _en_US_) ; - elle pourra ĂȘtre changĂ©e plus tard dans le dialogue de configuration ; - les groupes de commandes sont bien sĂ»r diffĂ©renciĂ©s pour chaque langue. ### Zone de notification Apparition d’une icĂŽne dans la zone de notification, pour surveiller l’état de NoComprendo lorsque la fenĂȘtre est repliĂ©e. ### Barre des tĂąches - NoComprendo peut ĂȘtre supprimĂ© de la barre des tĂąches ; - la fenĂȘtre reste accessible par la zone de notification ou par mĂ©ta‐commande vocale. ### Localisation de la souris Quand on a perdu de vue le pointeur sur nos Ă©crans devenus trop grands, on a l’habitude de secouer un peu la souris pour le retrouver. Mais sans les mains ? Une nouvelle mĂ©ta‐commande lance une petite animation pour localiser le pointeur (dire « chercher souris »). ### Nouvelles mĂ©ta‐commandes - une commande de rĂ©duction de la fenĂȘtre de l’application dans la barre des tĂąches : **Minimize** ; - une commande pour ré‐afficher et faire passer NoComprendo au premier plan : **Raise** ; - la commande de localisation du pointeur : **MouseShow**. ### Confirmation de sortie Une fenĂȘtre de confirmation est activable avant de quitter l’application. C’est facile de lancer une commande vocale de sortie par erreur. ### Options de ligne de commande ``` [user@localhost]$ nocomprendo --help Utilisation : nocomprendo [options] Commande vocale pour Linux/X.org BasĂ© sur Qt et PocketSphinx. Options : -h, --help Afficher cette aide. -v, --version Afficher les informations de version. -a, --author Afficher les informations sur l’auteur. -i, --license Afficher les informations de licence. -b, --libs Afficher la version des librairies. -p, --pocket Log pocketsphinx complets. -w, --words Tracer les mots reconnus. -l, --languageModel Afficher le fichier "Language model". ``` - les journaux pocketsphinx sont maintenant cachĂ©s depuis un terminal et accessibles avec l’option `pocket` ; - l’option `words` permet de suivre depuis le terminal les Ă©noncĂ©s reconnus par NoComprendo ; - l’option `languageModel` affiche le fichier statistique utilisĂ© par NoComprendo (dĂ©pend des groupes de commandes sĂ©lectionnĂ©s). Simplification de la construction --------------------------------- Suite Ă  quelques remarques de l’équipe Mageia, j’ai simplifiĂ© le processus de construction logicielles : - suppression de la dĂ©pendance Ă  Python 2 (utilisĂ©s par dĂ©faut dans la construction des bibliothĂšques) ; - suppression des CMU Tools pour crĂ©er le « _language model_ ». Quelques mots sur les « language models » ========================================= Pour fonctionner, NoComprendo a besoin d’un « _language model_ » (LM) : - un LM est un fichier statistique sur les probabilitĂ©s d’occurrences de mots et de groupes de mots ; - on forme d’abord un corpus (ensemble des Ă©noncĂ©s disponibles), qu’on « mouline » pour obtenir un LM ; - avec le corpus suivant : ``` afficher bureau arrĂȘter Ă©coute avancer onglet suivant basculer chercher souris descendre page dĂ©marrer console (扊陀) (ć‰Šé™€ă“ă“ăŸă§) ``` - on obtient ce LM : ``` \data\ ngram 1=17 ngram 2=10 ngram 3=1 -grams: -1.1027 -0.3010 -1.5798 -0.2653 -1.5798 (扊陀) -0.2653 -1.5798 afficher -0.2894 -1.5798 arrĂȘter -0.2894 -1.5798 avancer -0.2894 -1.5798 basculer -0.2653 -1.5798 bureau -0.3010 -1.5798 chercher -0.2894 -1.5798 console -0.3010 -1.5798 descendre -0.2894 -1.5798 dĂ©marrer -0.2894 -1.5798 onglet -0.2894 -1.5798 page -0.3010 -1.5798 souris -0.3010 -1.5798 suivant -0.3010 -1.5798 Ă©coute -0.3010 -grams: -0.3010 (ć‰Šé™€ă“ă“ăŸă§) -0.3010 -0.3010 -0.3010 -0.3010 afficher bureau -0.3010 -0.3010 arrĂȘter Ă©coute -0.3010 -0.3010 avancer onglet 0.0000 -0.3010 basculer -0.3010 -0.3010 chercher souris -0.3010 -0.3010 descendre page -0.3010 -0.3010 dĂ©marrer console -0.3010 -0.3010 onglet suivant -0.3010 -grams: -0.3010 avancer onglet suivant \end\ ``` Les chiffres affichĂ©s sont des logarithmes dĂ©cimaux (probabilitĂ©s) : − 0,3010 correspond Ă  0,5 (50 %). En dĂ©marrant l’application, j’ai d’abord utilisĂ© un outil en ligne les [LM tools version 3](http://www.speech.cs.cmu.edu/tools/lmtool-new.html). Mais NoComprendo a commencĂ© Ă  beaucoup solliciter le site et ça ne pouvait pas ĂȘtre une solution durable. Je n’ai pas trouvĂ© le code des LM tools 3, mais j’ai mis la main sur les [LM tools version 2](http://www.speech.cs.cmu.edu/SLM/toolkit.html). C’était compilĂ©/installĂ© et intĂ©grĂ© par un script Bash dans la premiĂšre mouture de NoComprendo. À l’usage, j’ai compris que ces outils Ă©taient trop Ă©voluĂ©s pour mes besoins. Ils sont faits pour ingurgiter un Ă©norme corpus et produire des probabilitĂ©s sur des groupes de mots possibles, mais non prĂ©sents dans le corpus. Le LM produit contenait des Ă©noncĂ©s supplĂ©mentaires qui perturbaient le fonctionnement de l’application. Puis j’ai (re)trouvĂ© un script Perl qui faisait l’affaire : [QuickLM en ligne](http://www.speech.cs.cmu.edu/tools/lm.html) et disponible Ă  cette adresse : [QuickLM en Perl](http://www.speech.cs.cmu.edu/tools/download/quick_lm.pl). Je l’avais dĂ©jĂ  croisĂ©, mais je n’avais pas compris Ă  l’époque que sa simplicitĂ© en faisait un outil particuliĂšrement adaptĂ©. AprĂšs quelques jours de tests, j’ai dĂ©cidĂ© de réécrire QuickLM en Qt/C++. Perl est un langage qui terrifie un peu, mais dans ce cas‐lĂ , le code est relativement simple, linĂ©aire et clair (pour du Perl) et les QMap et QRegExp de Qt peuvent facilement remplacer les structures et expressions rationnelles de Perl. Au final, 170 lignes de Perl transformĂ©es en 170 lignes de Qt/C++ maintenant intĂ©grĂ©es dans l’application. On ne peut pas dire que le code final soit beaucoup plus lisible que l’original, mais plus besoin d’outil extĂ©rieur et de dĂ©pendance Ă  Perl. Le fichier `quick_lm.pl` reste prĂ©sent dans l’archive (comme rĂ©fĂ©rence) mais n’est plus installĂ© avec les paquets. Pour les plus curieux, la traduction de `quick_lm.pl` en Qt/C++ est dans le fichier `languagemodeler.cpp`. PĂ©rennitĂ© de l’application ========================== PĂ©rennitĂ© des outils -------------------- ### xdotool et X.Org [xdotool](https://www.semicomplete.com/projects/xdotool/) n’est pas un projet des plus actifs, la page d’accueil est datĂ©e de 2015. D’un autre cĂŽtĂ©, avec l’arrivĂ©e de Wayland, il ne faut pas s’étonner qu’il n’y ait pas de frĂ©nĂ©sie de dĂ©veloppement autour de cette bibliothĂšque. Elle est stable depuis cinq ans et NoComprendo n’en utilise que quelques commandes basiques. ### Pocketsphinx La page d’accueil du [CMUSphinx project](https://cmusphinx.github.io/) nous rappelle (octobre 2019) qu’il est toujours actif, mĂȘme si la reconnaissance vocale a pris d’autres voies rĂ©cemment (_deep learning_, etc.). PocketSphinx reste un outil qui fonctionne bien et adaptĂ© Ă  de petites configurations (Raspberry Pi). ### eSpeak (facilement dĂ©sactivable) [eSpeak](http://espeak.sourceforge.net/) est un TTS (_Text To Speech_) de qualitĂ© moyenne, il pourra ĂȘtre facilement remplacĂ© par un TTS de meilleure qualitĂ©. J’avais ajoutĂ© la synthĂšse vocale un peu pour m’amuser ; je l’ai laissĂ©e parce que c’est pratique dans certains cas, mĂȘme si j’ai pris l’habitude de la dĂ©sactiver. Il a l’avantage d’ĂȘtre disponible dans toutes les distributions. L’interface avec eSpeak est regroupĂ©e dans un seul fichier de cinq fonctions. Une option de compilation permet de le supprimer de la construction. PĂ©rennitĂ© du dĂ©veloppeur ------------------------ Comme je l’ai sous‐entendu dans mon premier journal, le dĂ©veloppeur non plus n’est pas de premiĂšre fraĂźcheur. Il serait mĂȘme plus vieux ~~que Linux~~ qu’Unix. Je compte bien assurer le suivi quelques annĂ©es, mais il y a peu de chances que je sois encore lĂ  pour entretenir ce code dans quinze ans. Dans cette perspective le code a Ă©tĂ© organisĂ© pour qu’il n’y ait Ă  intervenir que sur un seul module pour changer d’outil de pilotage de l’interface graphique. L’avenir avec Wayland --------------------- Pour le moment, je n’ai encore jamais installĂ© de machine avec Wayland. Si un module (genre rdesktop ou autre) permet un jour d’adapter NoComprendo, il suffira de remplacer une dizaine d’appels de xdotool vers Wayland et de mettre Ă  jour une table de conversion de sĂ©quences de touches si nĂ©cessaire (tout est dans le fichier `guicontrol.cpp`). J’aimerais Ă©crire cette Ă©volution moi‐mĂȘme, mais je ne fais pas vraiment de veille technologique autour de Wayland. Quand un outil sera disponible, je me pencherai volontiers sur le problĂšme. Conseils de configuration et d’utilisation ========================================== Halte Ă  la technique informatique, voici un peu de technique acoustique pour bien commencer avec NoComprendo. Avale ta haine, Ă©touffe ta joie ! --------------------------------- Un commentaire d’un journal prĂ©cĂ©dent me demandait si je ne me sentais pas fou Ă  parler tout seul Ă  mon ordinateur. AprĂšs rĂ©flexion, je crois que beaucoup de gens parlent Ă  leur ordinateur et souvent sur un ton pas trĂšs amical (trucs qui plantent, machins qui rament trop). Avec NoComprendo, j’ai dĂ» changer d’habitude, pas d’énervement, mais pas d’enthousiasme non plus, un ton neutre, une bonne respiration et bien articuler. Ce type de reconnaissance vocale n’est pas vraiment compatible avec l’expression d’émotions. Effet collatĂ©ral inattendu : ces exercices imposent un certain calme intĂ©rieur pour ĂȘtre bien compris, j’en ressors plus dĂ©tendu, on peut presque considĂ©rer ça comme un exercice respiratoire apaisant. En fin de journĂ©e, quand la voix et le tonus faiblissent, l’efficacitĂ© de la reconnaissance vocale s’en ressent. Évite les commandes monosyllabiques ----------------------------------- Il est tentant d’associer les touches flĂšches vers le haut et vers le bas aux mots « haut » et « bas ». Pourtant, les commandes formĂ©es d’une seule syllabe ont la fĂącheuse manie de se dĂ©clencher de façon intempestive. Le moindre bruissement, grincement de chaise, reniflage ou soupir (de dĂ©sespoir face Ă  un bogue) risque d’ĂȘtre interprĂ©tĂ© comme des mots brefs : « fin », « flux », « fort », etc. Il vaut mieux qu’ils ne dĂ©clenchent rien. Tous ces mots peuvent faire partie du vocabulaire, mais devraient ĂȘtre combinĂ©s pour former un Ă©noncĂ© de plusieurs syllabes : « plus fort », « ouvrir flux » ou « touche fin », par exemple. À l’usage, on s’aperçoit qu’un bon Ă©noncĂ© est formĂ© d’au moins deux Ă  trois syllabes. Plus un Ă©noncĂ© est long, plus il sera identifiable avec prĂ©cision. Choisir le mot « quitter » pour Ă©mettre la touche `Ctrl` + `Q` est trop risquĂ©, un Ă©noncĂ© comme « quitter application » est plus sĂ»r. MalgrĂ© ces bons conseils, j’ai laissĂ© dans les commandes de dĂ©monstration le mot « clic » pour l’action clic gauche, parfois PocketSphinx prĂ©fĂšre entendre « quitte ». Prends garde aux homophonies ---------------------------- Parfois, on a un ensemble de commandes qui fonctionne bien, mais l’ajout d’un nouveau mot peut dĂ©stabiliser ce bel Ă©quilibre. Il vaut mieux ne pas trop Ă©tendre le vocabulaire, car cela risque de multiplier les possibilitĂ©s que des mots s’entrechoquent. RĂ©utiliser les mots dĂ©jĂ  lĂ  pour former de nouveaux Ă©noncĂ©s. Ne tapote pas sur le clavier avec l’écoute active ------------------------------------------------- Si votre micro est proche de votre clavier, il est prĂ©fĂ©rable de suspendre l’écoute avant de faire de la saisie continue. Le clapotis des touches peut ĂȘtre pris pour des commandes et provoquer de mauvaises surprises (changement de ligne au milieu d’un mot, clic ailleurs dans la fenĂȘtre ou dans une autre fenĂȘtre). Sauve la planĂšte ================ Il serait inconcevable en 2020 de prĂ©senter une application qui ne soit pas durable et qui ne sauve pas la planĂšte. NoComprendo vous permet d’atteindre ce but. En effectuant une reconnaissance vocale locale, vous : - faites l’économie du transfert de votre voix jusqu’à un serveur Ă©tats‐unien ; - rĂ©duisez la surchauffe d’un serveur rempli de processeurs parallĂšles pour dĂ©coder votre parole Ă  l’autre bout du monde ; - faites l’économie du retour Ă  travers la planĂšte des trois mots que vous avez articulĂ©s vers votre ordinateur ; - votre parole Ă©tant restĂ©e chez vous, elle n’occupera pas d’espace de stockage sur les serveurs de gens bien intentionnĂ©s.

AltStyle ă«ă‚ˆăŁăŠć€‰æ›ă•ă‚ŒăŸăƒšăƒŒă‚ž (->ă‚ȘăƒȘă‚žăƒŠăƒ«) /