Greboca  

LinuxFr.org : les journaux  -  NoComprendo, la commande vocale pour Linux

 -  28 novembre - 

Sommaire

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
  • Fenêtre principale réduite : 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 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 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 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
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

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…

Commentaires : voir le flux atom ouvrir dans le navigateur

par be.root

LinuxFr.org : les journaux

LinuxFr.org : Journaux

31 collectivités récompensées par le label Territoire Numérique Libre 2019 décerné par l'ADULLACT

 -  2 décembre - 

Communiqué de l'April Liste des communes récompensées, sur le site Territoire Numérique Libre De quoi s'agit-il ? Je vous renvoie au communiqué de (...)


kFPGA et DEL qui clignotent

 -  27 novembre - 

Ceci est une copie du billet publié initialement sur mon blog sous licence CC SA-BY 4.0. Dans l'épisode précédent, j'avais annoncé avoir validé le (...)


CPU Ex0121 The Mother Of All Demos, l'autre révolution de 1968

 -  21 novembre - 

Dans cette release de CPU : Une souris, des liens hyper, un piano à 5 touches et une audience conquise. The Mother Of All Demos, l'autre révolution (...)


Conception d’un circuit intégré avec Qflow

 -  17 novembre - 

Sommaire Partie relou Cours magistral RTLVerilog VHDL SystemC Chisel MyHDL ImplémentationFPGA ASIC Implémentation custom Implémentation basée sur (...)


Le bloboscope

 -  16 novembre - 

Cher Nal', Si tu t'intéresses à l'actualité scientifique, tu as sans doute déjà entendu parlé du blob. Pourvu de 720 sexes et dépourvu de système (...)