Sommaire
- Un contexte douloureux
- Trouver un outil
- Ça marche ce truc ?
- A quoi ça ressemble ?
- Principes généraux
- Sous le capot
- Installation
- Liens
- Vidéos
Un contexte douloureux
Je pousse la souris depuis sa démocratisation (dans les années 80), je control-alt-shifte depuis encore plus longtemps ce qui fait de moi un bon connaisseur en TMS.
Ajoutons aussi une fracture du poignet gauche, il y a quelques années, qui m'ont rendu le Ctrl+Shift+Lettre douloureux en fin de journée.
J'ai pensé à la commande vocale. L'idée n'était pas de se passer d'un clavier, mais de pouvoir lancer verbalement quelques raccourcis claviers pour soulager mes articulations.
Trouver un outil
La reconnaissance vocale sur internet passe en général par des APIs Google ou Amazon.
Pas question pour ma part d'envoyer quoique que ce soit sur le web. La reconnaissance devra s'effectuer localement.
J'ai trouvé la librairie PocketSphinx qui correspondait à mes attentes : vocabulaire réduit, traitement rapide et local, les premiers tests sont concluants.
Ça marche ce truc ?
L'objectif initial a été largement dépassé. Je pense que NoComprendo peut maintenant répondre aux besoins de certains handicapés moteurs. Je vous le propose pour évaluation.
Si vous n'avez pas de handicap, ça reste très amusant utiliser, ça impressionnera vos amis.
Aujourd'hui je m'en sers quotidiennement pour lire les nouvelles "sans les mains" depuis mon lecteur de flux (mes mains tiennent le mug de thé). Ce n'était pas prévu pour ça, mais ça repose bien ma tendinite.
Une petite vidéo pour éveiller votre curiosité : NoComprendo en action
A quoi ça ressemble ?
- Fenêtre principale :
- Fenêtre principale réduite :
Principes généraux
Vocabulaire
La reconnaissance vocale propose d'identifier tous les mots que vous articulez, comme dans une dictée.
La commande vocale cherche à reconnaître des mots dans un ensemble de mots prédéfinis. Pour les mots inconnus, elle trouvera ceux les plus semblables phonétiquement dans son vocabulaire.
Il s'agit d'établir un ensemble de mots (vocabulaire) dans lequel piocher pour créer des "énoncés".
- Editeur de vocabulaire
Chaque mot peut-être fourni avec plusieurs phonétiques.
Par exemple : le verbe "descendre" correspond aux phonétiques de "descends" et "descendre".
Cela permettra d'utiliser indifféremment les énoncés "descends page" ou "descendre page" pour emmètre la touche PgDown.
Vous ne connaissez pas la phonétique. NoComprendo est fourni avec un dictionnaire de plus de 100000 entrées avec leurs phonétiques. Il n'y a qu'à puiser dedans, ou même rajouter de nouveaux mots.
Enoncé
Un énoncé est un ensemble de mots compris entre deux silences.
Un énoncé reconnu déclenche une commande.
Les énoncés sont rassemblés en "groupes de commandes" pour pouvoir les activer séparément.
Les groupes de commandes peuvent être facilement exportés et importés.
- Editeur de groupe de commandes
Les différentes commandes
Le projet initial consistait uniquement à envoyer des raccourcis claviers.
On peut maintenant :
- envoyer une ligne de texte
- exécuter une ligne de commandes avec ses paramètres.
- utiliser des méta-commandes de contrôle de l'application
contrôler quelques déplacements souris
La gestion des déplacements souris n'est pas très ergonomique. Il faut considérer cela comme expérimental.Editeur de commande
Sous le capot
Librairie Qt
NoComprendo est basé sur la librairie Qt
Dépendance à x.org
Abordons maintenant un point délicat.
Pour fonctionner NoComprendo à besoin de X.org et de la librairie libxdo pour envoyer des commandes d'une application à l'autre. Wayland ne permettra plus ça, les applications devant être parfaitement isolées.
C'est cette faiblesse de sécurité de X.org qui a permis de réaliser ce logiciel.
Synergy utilise les mêmes principes et NoComprendo est compatible avec.
Après une courte réflexion, j'ai misé sur la pérennité de X.org et sa présence dans nos distributions pour encore longtemps.
Librairies statiques
Pour fonctionner, NoComprendo a besoin des librairies Sphinx et PocketSphinx 5-pre-alpha.
Aucune distribution Linux ne les proposant, ces librairies sont liées statiquement dans l'application. Le Makefile compile les librairies dans un premier temps avant de les intégrer à l'exécutable.
Multilinguisme
Le projet est prévu pour être éventuellement multilingue, mais pour le moment seul le français est disponible. Il n'y a pas de dictionnaire anglais intégré, mes premiers essais n'avaient pas été concluants (et mon accent anglais médiocre).
Je ne me pencherai sur le problème s'il y a de la demande et avec l'aide d'anglophones.
Installation
Pour l'installation, j'ai construit des paquets pour quelques distributions majeures chez Open Build Service.
Pardonnez-moi pour la signature du paquet invalide. C'est un truc qui me résiste dans la production de paquets chez OBS.
Je suis preneur de conseils.
L'installeur fournit un vocabulaire prédéfini prêt à l'emploi ainsi que quelques groupes de commandes en exemple.
- Sélecteur de groupe de commandes Mon environnement habituel étant KDE sous Mageia, un groupe de commandes spécifique est disponible. Assurez-vous que les commandes correspondent bien à vos raccourcis clavier. Si vous utilisez un autre environnement, assemblez vous-même votre groupe de commandes.
Liens
- Plus d'infos sur le site de NoComprendo
- Les paquets d'installation chez OBS : Téléchargement
- Le projet chez OBS
Vidéos
Pour aider à l'installation et la prise en main, 4 vidéos :
- Procédure d'installation 3 minutes
- Présentation de l'interface 4 minutes
- NoComprendo en action 5 minutes
- Configuration : ajout de vocabulaire et de commandes, 15 minutes.
Je me suis bien amusé à programmer cette application.
Je pense qu'on peut lui trouver plein d'utilisations non prévues au départ.
A vous de jouer…
# Au sujet des TMS : pédaliers USB
Posté par damaki . Évalué à 10.
Pour les problèmes de raccourcis claviers douloureux, il y a toujours les pédaliers USB. C'est généralement détecté comme une manette de jeu, et donc c'est bidouillable à souhait.
[^] # Re: Au sujet des TMS : pédaliers USB
Posté par BFG . Évalué à 3.
Mon avis est mitigé. J'avais acheté le modèle à 3 pédales, j'avais voulu configurer les pédales pour remplacer respectivement Ctrl, Shift et Alt. J'avais réussi (avec un peu de développement car le logiciel de configuration est pour Windows et n'est même pas libre), mais il n'était pas possible d'avoir 2 pédales appuyées simultanément : appuyer sur une seconde pédale faisait comme si on avait le pied de la première.
[^] # Re: Au sujet des TMS : pédaliers USB
Posté par Anonyme . Évalué à 6.
C'est le problème des bidules électroniques à pas cher, le support logiciel pour Linux est médiocre voire inexistant.
Pour un périphérique USB (un clavier, souris, joystick, pedalier, etc.), le mieux c'est de remplacer le micro-controleur par un autre. Le Atmega32u4 d'un Arduino Pro micro est conçu pour ce genre d'utilisation.
Quitte à virer toute l'électronique, c'est possible de modifier un pédalier pour guitare ou de se servir de boutons pour bornes d'arcade. Bref, il y a pleins d'options pour se bricoler un pédalier USB.
Pour le problème des deux pédales, déjà voir comment sont cablés les interrupteurs (en matrice, il faut des diodes anti-retour) avant de mettre en cause le firmware.
[^] # Re: Au sujet des TMS : pédaliers USB
Posté par Adrien Dorsaz (site web personnel, Mastodon) . Évalué à 7. Dernière modification le 30 novembre 2019 à 07:15.
Ah ben voilà, je me disais bien que c'était inhumain d'utiliser Emacs avec 2 mains ! Ils devraient ajouter dans leur documentation que pour pouvoir l'employer correctement, il faut utiliser ses pieds :)
[^] # Re: Au sujet des TMS : pédaliers USB
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 5.
Pour avoir encore plus de trucs codés avec les pieds ?
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
# Excellent!
Posté par ʭ ☯ . Évalué à 10. Dernière modification le 28 novembre 2019 à 10:27.
J'adore la démarche : je règle un problème, ici et maintenant, on verra plus tard pour wayland.
J'adore la présentation : pas de chichis techniques, on parle usage.
Merci pour le partage, mais j'utilise rarement l'ordinateur seul dans une pièce. Tu ne te sens pas foi à parler tout seul?
⚓ À g'Auch TOUTE! http://afdgauch.online.fr
# Emacs
Posté par Elfir3 . Évalué à 1. Dernière modification le 28 novembre 2019 à 10:33.
Apres la lecture du 2eme paragraphe, j'ai de suite pensé qu'emacs aurait pu te sauver.
J'en profite pour te dire merci, je m'étais intéressé à faire quelque chose de similaire il y a quelque temps, mais avait rebroussé chemin en voyant la difficulté de mise en place et le manque de temps.
Aucune piste du côté wayland ? Il me semble que certaines implémentation permettent de faire du rdesktop, donc envoyer des commandes ne devrait pas être insurmontable.
# Super ! MERCI
Posté par DontShootMe . Évalué à 5.
Juste pour te remercier.
Merci.
# et en plus ça marche ! bien vue
Posté par robertix . Évalué à -7.
bonjour à tous
félicitation pour ce job impressionnant
je l'ai ajouté à ma collection de copies d'écrans linux
# Essaye vim
Posté par benoar . Évalué à 5.
Je ne peux m'empêcher de penser que tu dois utiliser des applications graphiques ou alors Emacs, alors qu'avec un bon vieux vim tu n'aurais toujours qu'une touche à actionner au même moment ! Ça aide vachement pour les TMS… (avec du bépo en plus si t'es motivé)
[^] # Re: Essaye vim
Posté par be.root (site web personnel) . Évalué à 2.
Je me débrouille sous vim, mais mon environnement habituel est QtCreator.
Il est toujours possible de redéfinir à sa sauce des raccourcis clavier. Il faut le faire sur tous les postes qu'on utilise. Je préfère garder les raccourcis standards pour ne pas être perdu en changeant de machine.
L'histoire de tendinite est surtout un prétexte.
Actuellement j'ai beaucoup moins mal au poignet qu'au moment où j'avais commencé le développement, mais comme l'outil est amusant, je m'en sers souvent.
Pour QtCreator, je me ferai un groupe de commandes quand je bosserai sur un autre projet.
En se servant de NoComprendo pour développer NoComprendo, on se retrouve pendant les tests avec deux instances simultanées, c'est un peu risqué de recevoir deux fois les commandes.
J'ai vite arrêté.
[^] # Re: Essaye vim
Posté par benoar . Évalué à 2.
Oui enfin là les « raccourcis », c'est la manière de base de fonctionner de vim, à une touche.
Moi aussi, quasiment (à part le ctsr au lieu du hjkl, en gros). Sinon j'ai mes dotfiles en git que je peux déployer n'importe où où je bosse : la magie d'unix qui fait que je n'ai pas à « reconfigurer » mes applis, puisque tout est fichier…
Je comprends, t'avais aussi envie de t'amuser ;-)
# Simon
Posté par jnanar (site web personnel) . Évalué à 2.
Merci pour ce partage très intéressant.
Le concept semble assez proche de "Simon", une application KDE qui a pur but d'aider les personnes qui ont du mal à utiliser un clavier et une souris.
https://simon.kde.org/
Il permet aussi de créer facilement ses modèles acoustiques. Par contre, je ne sais pas si c'est compatible Wayland.
[^] # Re: Simon
Posté par be.root (site web personnel) . Évalué à 1.
C'est parce-que je n'avais pas réussi à faire marcher Simon que je me suis lancer là dedans.
La configuration n'était pas triviale. Ça utilise les modèles acoustiques et il me semble qu'on peut l'entrainer avec des enregistrement de voix, trop compliqué.
La librairie Sphinx permet de faire tout ça également, mais PocketSphinx fournit des fichiers clés en main pour reconnaître le français. Ça a marché dès les premiers tests.
NoComprendo est, je pense, plus simple à configurer mais beaucoup moins ambitieux.
J'ai lu sur des forums que PocketSphinx avait des problèmes avec les voix féminines. Je n'avais pas sous la main de voix haut perchée pour faire des tests.
J'espère ne pas avoir fait un logiciel discriminatoire…
# Phonétique
Posté par HL . Évalué à 3.
Très intéressant !
Tu voulais peut-être dire "descends" et "descendreuh" ?
J'ai aussi deux questions sur la phonétique:
ai
etei
.[^] # Re: Phonétique
Posté par be.root (site web personnel) . Évalué à 2.
Je ne saurai pas répondre à cette question subtile. Peut-être le "é" final est différent ?
Je n'ai pas inventé ce codage phonétique.
J'utilise celui contenu dans le dictionnaire qui vient d'ici (fr.dict) et qui est utilisé par les librairies.
Le dictionnaire permet de ne pas trop se poser de question, en lisant la phonétique on comprend à peu près.
On peut recombiner des sons pour inventer des nouveaux mots. Si on veut dire "démarrer firefox", il faut d'abord prononcer firefox comme un français et combiner quelques phonèmes piochés dans le dico.
Pour "script" le dictionnaire donne :
script ss kk rr ii pp tt
scripts ss kk rr ii pp tt
scripts(2) ss kk rr ii pp tt zz
[^] # Re: Phonétique
Posté par HL . Évalué à 2.
J'avais mal lu les entrées du dictionnaire désolé. Les doublets de deux lettres différentes ne codent que des voyelles en fait.
[^] # Re: Phonétique
Posté par GG (site web personnel) . Évalué à 2.
Il faudrait mettre un alias pour "démarrer Internet"… parce qu'il y a beaucoup de gens qui ne savent pas ce qu'est Firefox, ni même savent ce qu'est un navigateur Internet.
Pourquoi bloquer la publicité et les traqueurs : https://greboca.com/Pourquoi-bloquer-la-publicite-et-les-traqueurs.html
[^] # Re: Phonétique
Posté par verdesroches (site web personnel) . Évalué à 1.
Ça tombe bien puisque Firefox n'est pas un "navigateur internet" et que le Web n'est pas Internet ;-) .
Perso, pouvoir arrêter ou démarrer Internet d'une simple commande vocale, ça me fera peur !
# Déclenchement
Posté par Snark . Évalué à 1.
Est-ce qu'il est possible d'avoir un son-clef d'activation/désactivation (un mot peu usité ou un claquement de langue) pour pouvoir lancer des moments d'interaction vocale et des moments où on peut discuter?
[^] # Re: Déclenchement
Posté par be.root (site web personnel) . Évalué à 6. Dernière modification le 29 novembre 2019 à 08:21.
Oui, il existe déjà les méta-commandes "Suspend" et "Resume" déclenchées par les énoncés "suspendre écoute" et "reprendre écoute".
C'est visible vers la fin de la vidéo "En action".
La commande la plus spectaculaire est "suspendre session" qui déclenche la mise en veille.
Pour sortir de veille NoComprendo est impuissant.
# Compilation
Posté par HL . Évalué à 3. Dernière modification le 02 décembre 2019 à 13:53.
J'ai pu compiler les sources et créer un paquet installable en suivant les étapes du
readme_fr.txt
.Petits détails :
Pour envoyer la procédure d'installation dans un autre répertoire racine (pour pouvoir ensuite générer le paquet), entrer :
Copier
pocketsphinx
dansinstall-rep/usr/share
(j'ai peut-être loupé qqch ici qui le fait automatiquement)Générer le paquet pour la distro cible
Note pour les utilisateurs de Slackware, qt5 est nécessaire aussi. AlienBob maintient un jeu de paquet pour qt5 (dans ce cas, utiliser
qmake-qt5
au lieu deqmake
).[^] # Re: Compilation
Posté par be.root (site web personnel) . Évalué à 1.
espeak
Espeak a été rajouté pour donner un peu de rétroaction au programme.
Sa compilation est optionnelle. On peut mettre en commentaire la ligne :
CONFIG += use_espeak
dans nocomprendo.pro pour ne pas l'utiliser.
Répertoire d'installation
Le chemin /usr/share/pocketsphinx est codé en dur dans les directives d'installation du fichier .pro.
Je vais voir comment corriger ça.
qmake-qt5
Fedora et OpenSuse utilisent aussi le nom qmake-qt5. C'est le fichier .spec (qui sert à fabriquer les rpm) qui fait la translation.
nocomprendo.spec
Bravo pour le paquet Slackware.
# Qwerty ?
Posté par HL . Évalué à 3.
J'ai commencé à tester et ça marche plutôt bien (casque)…
L'ouverture d'onglet dans le navigateur fonctionne bien par exemple, par contre quand j'ai tenté de fermer l'onglet rien ne se passait… Enfin si, la barre d'adresse s'activait.
Le raccourci configuré est
Ctrl+W
. Dans le doute j'ai modifié enCtrl+Z
et là ça a fonctionné. Se peut-il que l'utilitaire ou une dépendance convertisse les raccourcis clavier en codes correspondant au clavier Qwerty ? (le vraiCtrl+Z
active bien la barre d'adresse.)[^] # Re: Qwerty ?
Posté par be.root (site web personnel) . Évalué à 2. Dernière modification le 02 décembre 2019 à 15:16.
Ça me rappelle le même genre de problème avec Synergy qui utilise des commande semblables.
Je l'avais résolu en forçant la disposition du clavier sur "français".
La configuration générale du système en français ne suffisait pas.
Si ça peut t'aider ?
[^] # Re: Qwerty ?
Posté par HL . Évalué à 1.
Tu veux dire dans .config/BeRoot/NoComprendo.conf ? Je n'ai pas vu d'entrées pour le clavier.
J'imagine que le problème est quelque part entre NoComprendo, xdo et le navigateur ? :-)
# Installation sur Ubuntu 18.04 LTS?
Posté par fabienfab . Évalué à 1.
Bonjour,
Je souhaiterais utiliser nocomprendo (soucis avec mes mains), seulement je ne vois pas de lien de téléchargement pour Ubuntu 18.04 LTS. Qu’en est il?
Merci
# Log d'erreur
Posté par Soka . Évalué à 1.
Merci pour se projet bien sympatique !
Merci pour le build Ubuntu 18.04 :)
J'ai quelques soucis après l'installation
L'application a fonctionné quelques minutes mais ne reconnais plus les commandes.
L'application est prête, elle écoute, mais plus de commande qui s'affiche ou s'éxecute
Existe-il des log pour voir où cela couak ?
Quel partie du programme s'occupe de la reconnaissance vocal ?
Merci d'avance :)
[^] # Re: Log d'erreur
Posté par be.root (site web personnel) . Évalué à 1.
C'est pour répondre à une demande par email que j'ai créé le paquet Ubuntu 18.04.
J'ai vu la demande bien plus tard dans les commentaires.
Quelques pistes :
- Les groupes de commandes sont-ils bien sélectionnés ?
- Il reste un bug de rechargement des groupes de commandes bientôt résolu. Essayer de relancer le programme après modification de la sélection.
- l'application est-elle suspendue ?
- En démarrant NoComprendo depuis un terminal, on est bien servi en logs. Ce sont ceux de pocketsphinx, ils sont assez bavards pendant la reconnaissance vocale, mais pas sûr que ça puisse aider.
La reconnaissance vocale est effectuée par la librairie pocketsphinx.
C'est appelé dans le source "comprendo.cpp", les fonctions initPSphinx(), closePSphinx() et recognize_from_microphone() qui sont pratiquement des copier/coller des exemples fournis avec la librairie. Je ne pense pas que se plonger dans ce code éclaire beaucoup.
Je pense faire un journal bientôt pour présenter les dernières nouveautés.
[^] # Re: Log d'erreur
Posté par Soka . Évalué à 0.
Merci pour ta réponse rapide.
Pour les pistes:
* les 6 groupes de commandes de bases sont sélectionné
* L'application continue de tourner, des logs d'infos s'écrivent à chaque parole (ngram_search, ps_lattice, cmn_live)
Effectivement je n'avais pas essyé de le lancé depuis le terminal, beaucoup d'info. Je ne sais pas braoment ou chercher, néamoins ces lignes m'étonne :
comme s'il ne trouver qucun mot correspondant
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.