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 ă«ăăŁăŠć€æăăăăăŒăž (->ăȘăȘăžăă«) / ăąăăŹăč: ăąăŒă: ăăă©ă«ă éłćٰăă©ăŠă¶ ă«ăä»ă é èČćè»ą æćæĄć€§ ăąăă€ă«
AltStyle ă«ăăŁăŠć€æăăăăăŒăž (->ăȘăȘăžăă«) / ăąăăŹăč: ăąăŒă: ăăă©ă«ă éłćٰăă©ăŠă¶ ă«ăä»ă é èČćè»ą æćæĄć€§ ăąăă€ă«