NoComprendo, version 1.0

Posté par  (site web personnel) . Édité par ZeroHeure, patrick_g et Davy Defaud. Modéré par patrick_g. Licence CC By‑SA.
Étiquettes :
33
30
jan.
2020
Technologie

NoComprendo est une application de commandes vocales pour GNU/Linux basée sur l’environnement Qt et utilisant la bibliothèque PocketSphinx pour la partie reconnaissance vocale.
NoComprendo

Sommaire

Il y a deux mois, je vous présentais NoComprendo, un logiciel de commande vocale développé pour mes besoins personnels.

Le journal a été apprécié, mais j’ai eu peu de retours d’utilisateurs, la plupart concernant des problèmes de compilation. Le site Open Build Service ne fournissant aucune métrique des téléchargements, je m’interroge sur le nombre d’utilisateurs potentiels. Alors, s’il existe quelques utilisateurs réguliers, un petit courriel me permettrait de me sentir moins seul à parler devant mon écran.

J’ai donc continué à le faire évoluer en fonctions de mes inspirations. La nouvelle version apporte son lot de corrections de bogues que je ne détaillerai pas ici. L’interface a très peu changé :
NoComprendo

Nouveautés

Pilotage vocal de NoComprendo

Les trois dialogues principaux de l’application sont maintenant ouvrables par méta‑commandes.
Cela permet d’activer ou désactiver les groupes de commandes avec la voix (ouvrir le dialogue, puis naviguer vocalement avec les commandes associées aux touches du clavier). On peut également naviguer dans le dialogue de configuration les bras croisés. Ça demande un peu d’entraînement mais ça fonctionne très bien.

Exportation CSV des commandes

Avec un nombre de commandes qui enflait, j’ai ajouté une exportation au format CSV, avec l’idée d’imprimer un mémento. Cette exportation est toujours présente, même si une autre solution a été trouvée depuis (voir ci‑dessous).

Fenêtre OSD

Je travaille souvent avec deux écrans. NoComprendo trouve bien sa place sur l’écran de droite, mais avec seulement un seul écran, on économiserait bien la surface de la fenêtre, même réduite.

  • Première solution : une fenêtre OSD (On Screen Display) pour afficher le dernier énoncé reconnu. On peut la positionner et la redimensionner où l’on veut, et modifier sa durée d’affichage.

Mémento des commandes

La fenêtre principale propose la liste des commandes, mais celle‑ci est difficilement accessible (changer de fenêtre, faire défiler la liste, revenir d’où l’on vient).

  • Deuxième solution : une fenêtre plein écran de rappel des commandes, activable par la méta‑commande « Reminder » et qui se ferme d’un simple clic ou d’une action au clavier (par exemple en disant « clic » ou « échappe »).

Déplacement de souris

De nouvelles commandes permettent maintenant de lancer la souris dans huit directions, c’est le mode « glissade ». Le problème qui se pose est celui d’arrêter la glisse. La solution choisie consiste à interrompre la glisse dès le début de détection d’un énoncé. La précision n’est pas au rendez‑vous, ça dérape un peu avant l’arrêt, mais ça permet de traverser l’écran facilement. Les autres commandes de la souris sont là pour la précision finale. Le pas et la vitesse de glissade sont bien sûr configurables.

La langue anglaise

Les modèles acoustiques et les dictionnaires phonétiques nécessaires pour la langue anglaise ont été ajoutés. J’ai l’impression que ça marche, mais mon terrible accent de grenouille fait que j’ai surtout du succès avec des énoncés comme « page up » et « page down ». Pour articuler correctement « start browser », j’ai besoin d’une dizaine d’essais. Il faudrait que j’essaie en mâchant du chewing‑gum.

Les groupes de commandes fournis en démonstration sont à améliorer et à compléter par de vrais anglophones. Pour tester l’application en anglais lancez la depuis un terminal : LANGUAGE=en_US nocomprendo, ou plutôt LANGUAGE=en_US nocomprendo 2>/dev/null pour cacher les journaux de PocketSphinx.

Pour l’aide en anglais, j’ai « googletranslaté » sans vergogne.

Empaquetage

Les deux langues fr_FR et en_US sont emballées dans le même paquet. Ce n’est sûrement pas la meilleure technique, mais ça reste la solution la plus simple dans un premier temps. Une fois installés, les dictionnaires anglais et français prennent 3,2 Mio chacun. Le modèle acoustique français fait 10 Mio et l’anglais 18 Mio.

Par ailleurs, un paquet pour Ubuntu 18.04 LTS a été ajouté suite à la demande d’utilisateurs.

Partage de groupes de commandes

Si vous avez réalisé un groupe de commandes pour une application ou un environnement spécifique qui peut être utile à d’autres personnes, envoyez‑moi le fichier produit par la fonction d’exportation, je le mettrai en partage sur le site du projet. Idem pour des groupes de commandes en anglais.

Suspension du projet

Je considère ce projet comme terminé et souhaite retourner vers d’autres centres d’intérêts.
Pour marquer le coup, NoComprendo passe en version 1.0.0. J’assurerai les corrections de bogues, mais je ne prévois pas de nouvelles fonctionnalités pour l’instant. Pour des traductions vers d’autres langues, proposez vos services pour traduire l’aide et les menus. Les langues disponibles pour PocketSphinx sont basées ici : CMU Sphinx. Je m’occuperai volontiers de leur intégration.


P.S. — Je tiens à présenter mes excuses à nokomprendo, dont le pseudo collisionne avec le nom de mon programme. En cas de conflit insoluble entre nous, je propose de rebaptiser mon application GPasCompris, pour rester dans le même esprit.

Aller plus loin

  • # Ome wa mou shindeiru

    Posté par  . Évalué à -1. Dernière modification le 30 janvier 2020 à 21:39.

    Je propose comme nom: Nani? (avec le point d'interrogation)

    Pour les plus jeunes qui n'ont pas connu Kenshiro

  • # Archlinux ?

    Posté par  . Évalué à 2.

    Hello o/

    je suis très intéressé pour te faire des retours sur NoComprendo.
    Les vidéos donnent envie :)

    je n'ai pas trouvé de paquet pour archlinux, ni d'AUR.

    Sachant que la procédure d'installation me pète à la figure lors du make.

    Voila voila

    PS : L'erreur

    ! LaTeX Error: File `newunicodechar.sty' not found.

    • [^] # Re: Archlinux ?

      Posté par  (site web personnel) . Évalué à 2. Dernière modification le 31 janvier 2020 à 18:28.

      Après quelques essais sur le site d'OBS, je n'ai pas réussi à fabriquer quelque chose pour Archlinux.

      Pour construire à partir de l'archive, je pense qu'il y a un problème de dépendances dans la fabrication des librairies Pocketsphinx.
      Je te propose de regarder les dépendances demandées pour les autres distributions, dans les fichiers :
      nocomprendo.spec et/ou debian.control.
      Il faut des trucs comme bison ou swig pour arriver au bout du build.

      Bonne chance.

      • [^] # Re: Archlinux ?

        Posté par  . Évalué à 2.

        Salut,

        Merci beaucoup pour le boulot. J'ai vu les vidéos, c'est top !
        J'ai aussi des TMS. J'avais vu cette présentation il y a quelques temps : The Eleventh HOPE (2016): Coding by Voice with Open Source Speech Recognition
        J'aimerais faire pareil mais j'ai pas le niveau. Comprendo résout déjà une partie.

        Par contre, je n'arrive pas compiler Comprendo sur Manjaro. Même erreur que @Narmer. Normal vu que basé sur Arch. Cette erreur provient du paquet sphinx-base. Je vais envoyer un message au mainteneur voir si il sait d'où ça vient.

        Sinon, une solution souvent employé est de créer une AppImage qui marche sur toutes les distros. Ce serait envisageable ?

    • [^] # Re: Archlinux ?

      Posté par  . Évalué à 3.

      J'ai réussi à compiler NoComprendo sur Arch en utilisant la recette disponible sur AUR. Il faut installer le paquet texlive-latexextra pour résoudre ton erreur.
      J'ai personnellement eu une autre erreur. Il fallait désinstaller Doxygen pour la résoudre.

      Ces 2 astuces sont notés dans les commentaires du paquet sphinxbase sur AUR.

  • # Env graphique requis

    Posté par  . Évalué à 2.

    Pour ma part, j'avais regardé la dépêche initiale car je recherche une solution de reco vocale hors cloud et GAFA, mais l'utilité étant sur un système domotique headless sans écran/clavier, ni environnement graphique/bureau installé… Je n'avais pas persévéré.

    • [^] # Re: Env graphique requis

      Posté par  (site web personnel) . Évalué à 4.

      Le projet initial consistait à envoyer des raccourcis clavier, c'était donc très orienté pilotage interface graphique.
      Pour un système domotique, c'est surtout le lancement de commandes qui serait utile.
      Pocketphinx tourne sur RaspberryPi. Le logiciel Jarvis l'utilise.

      Pour faire un système headless, certaines parties du code pourraient être réutilisé mais il faudrait repenser beaucoup de choses.

  • # faire partie de KDE

    Posté par  (site web personnel) . Évalué à 7. Dernière modification le 01 février 2020 à 17:53.

    Peux-tu le proposer à KDE ? le logiciel Simon (ou bien) est à l'abandon depuis 3 ans. Le tien peut efficacement le remplacer.

    "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

    • [^] # Re: faire partie de KDE

      Posté par  (site web personnel) . Évalué à 7. Dernière modification le 02 février 2020 à 10:20.

      Simon (que je n'avais pas réussi à faire fonctionner) me semblais un peu plus "usine à gaz", avec une organisation client/serveur et la possibilité d’entraîner un modèle vocal avec sa propre voix.
      J'ai préféré utiliser les modèles fournit par défaut, même si ça doit poser des problèmes avec un fort accent régional.

      Participer à KDE ? Pourquoi pas, il y a sûrement des gens spécialisés dans l’internationalisation chez eux. Mais je vais manquer de disponibilité dans les mois qui viennent, sans doute pas avant l'automne prochain.

      J'aimerais surtout trouver un contact francophone, parce que écrire un mail en anglais me prend 10 fois plus de temps qu'un mail en français, sans être sûr d'être bien compris à la fin. J'ai déjà eu de mauvaises expériences.

      • [^] # Re: faire partie de KDE

        Posté par  (site web personnel) . Évalué à 5.

        Simon (que je n'avais pas réussi à faire fonctionner) me semblais un peu plus "usine à gaz", avec une organisation client/serveur et la possibilité d’entraîner un modèle vocal avec sa propre voix.

        C'est peut-être ce qui l'a tué : trop ambitieux, trop gros à développer. Tandis que ton travail est tout à fait dans l'optique KISS et du coup facile à traduire, à mettre en place, à utiliser.

        J'aimerais surtout trouver un contact francophone

        L'équipe francophone est présente sur Mastodon via framapiaf. Il y aussi trois développeurs français bien connus qui peuvent sûrement t'aider : David Faure (Konqueror, Kde pim, Qt), Aurélien Gâteau (Gwenview) et Laurent Montel (spécialiste du un peu partout ;-).

        Et si tu es vraiment bloqué, je peux faire l'intermédiaire — quoique les activités débordent de plus en plus de mon temps libre !…

        "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

        • [^] # Re: faire partie de KDE

          Posté par  (site web personnel) . Évalué à 2.

          Quand je reprendrai le projet, je viendrai présenter ici les nouveautés (j'ai déjà eu quelques demandes).
          On verra à ce moment là.

          Merci ZeroHeure

  • # Intégration dans Mageia

    Posté par  . Évalué à 3.

    Bonjour,
    L'équipe de Mageia souhaite intégrer Nocomprendo directement dans la distribution. J'ai envoyé un email pour avoir certaines précisions, nous attendons une réponse pour pouvoir progresser.
    CMU_Cam_Toolkit est inclus dans les sources, à quoi sert-il ?

    • [^] # Re: Intégration dans Mageia

      Posté par  (site web personnel) . Évalué à 5.

      Je n'ai pas reçu de mail pour l'instant (2h30 après ce commentaire).

      CMU_Cam_Toolkit est l'outil qui permet de fabriquer le "language model", c'est le fichier "corpus.lm" dans le répertoire ~/.config/nocomprendo/fr_FR.
      Il existait une version 3 en ligne (mon lien semble mort) mais le code n'était pas disponible. J'ai trouvé la version 2 ici.

      C'est composé d'une série d'outils (installés dans /usr/share/nocomprendo) et d'un script qui enchaîne tout ça. Ces outils prennent en entrée le fichier corpus.txt qui contient les mots et les énoncés et produit corpus.lm, le fichier statistique utilisé par pocketsphinx.
      Je ne comprends pas bien le contenu de ce fichier, il fabrique d'autres énoncés qu'on ne lui a pas fourni, mais ça marche bien.

      À chaque modification du vocabulaire, des énoncés ou changement de sélection des groupes de commandes, ce fichier est régénéré automatiquement. Ça permet d'avoir toujours un "language model" à jour, concis et rapide à l'exécution.

  • # Merci, courage et patience

    Posté par  (site web personnel) . Évalué à 6.

    je m’interroge sur le nombre d’utilisateurs potentiels. Alors, s’il existe quelques utilisateurs réguliers, un petit courriel me permettrait de me sentir moins seul à parler devant mon écran.

    Je ne connaissais pas "NoComprendo", mais cela à l'air très intéressant. D'un autre côté, avec deux enfants en bas age, mas soirées sont déjà bien remplies donc je ne vais pas essayer tout de suite…

    Et maintenant, je met ma casquette de dev de logiciel libre (bibliothèque de traitement de données météo, modèles de manteau neigeux): je demande aussi aux utilisateurs de m'envoyer un email pour me dire qu'ils existent et je n'en reçoit quasiment jamais. Alors je découvre tout à fait pas hasard des utilisateurs, une fois tous les jamais. Par contre, je reçoit beaucoup de demande d'aide, de "ça marche pas", etc

    De plus, je me suis rendu compte qu'il faut beaucoup, beaucoup de temps pour établir ce que l'on développe (et je pense que c'est encore pire dans le monde de la recherche comme c'est mon cas): on essaye de faire connaître son logiciel, on en parle partout ou l'on peut et mis à par de polis "ah ouais, pas mal", c'est tout. D'un côté, "les gens" ont des journées déjà bien remplies, d'un autre côté on est tous un peu blasés: pas forcément envie de se farcir une liste de bugs interminable pour quelque chose que l'on n'est pas sûr d'utiliser vraiment, pas envie de s'investir dans la prise en main d'un logiciel qui va peut être cesser tout développement dans 3 mois, pas envie de "miser sur le mauvais cheval" et se rendre compte dans 6 mois que le logiciel ne recevra jamais la fonctionnalité que l'on espérait vraiment depuis le début alors qu'un autre logiciel a cette fonctionnalité… Cela fait maintenant plus de 10 ans que je développe ma bibliothèque de traitement de données météo et depuis 1 ou 2 ans, je reçoit des commentaires positifs sur le fait que l'on peut me faire confiance, que cela vaut la peine de s'investir dans cette bibliothèque, qu'elle est là pour rester.

    Donc en gros, merci pour ta contribution et courage ainsi que patience!
    Mathias

    • [^] # Re: Merci, courage et patience

      Posté par  (site web personnel) . Évalué à 6.

      C'est vrai qu'on s'interroge sur la quantité d'utilisateurs d'un tel logiciel.
      Je me suis demandé, après, combien de fois j'avais remercié ceux qui ont écrit les nombreux logiciels libres que l'utilise. Je crois bien que jamais. Alors tout le monde est pardonné.

      J'ai déjà eu un retour de gens qui développent un environnement pour handicapés. C'est en pensant à ce type de public que j'ai voulu le présenter.

      Si je touche aussi Mageia ou KDE, ça me suffira.

      • [^] # Re: Merci, courage et patience

        Posté par  (site web personnel, Mastodon) . Évalué à 3.

        C'est vrai qu'on s'interroge sur la quantité d'utilisateurs d'un tel logiciel.

        J'en ai touché deux mots à Jean-Philippe Mengual d'Hypra. Il m'a dit qu'il manquait sérieusement d'outils pour l'accessibilité dans le monde du logiciel libre et qu'il allait voir de plus près si ça peut être utilisé pour le type de public d'Hypra (déficiences visuelles).

        « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

  • # renommage

    Posté par  (Mastodon) . Évalué à 5. Dernière modification le 04 février 2020 à 11:01.

    Si tu veux renommer, NoEntiendo serait plus pertinent.

    Si je ne m'abuse:

    Comprender en espagnol c'est quand on comprend une règle d'un jeu, un raisonnement logique, un algorithme.

    Entender c'est quand on comprend des mots ou phrases parlées.

    Si un ou une personne parlant l'espagnol couramment peut confirmer, je suis encore en phase d'apprentissage…

    En tout cas quand je dois dire à un local qu'il doit parler plus doucement je luis dis *no entiendo una mierda de lo que dices.

    • [^] # Re: renommage

      Posté par  (site web personnel) . Évalué à 4.

      Pour moi c'était plutôt un clin d’œil aux Rita Mitsouko : The No Comprendo
      Du coup c'est ni de l'anglais ni de l'espagnol, c'est comme ça

    • [^] # Re: renommage

      Posté par  . Évalué à 4.

      Comprender en espagnol c'est quand on comprend une règle d'un jeu, un raisonnement logique, un algorithme.
      Entender c'est quand on comprend des mots ou phrases parlées.

      Tu peux utiliser comprender aussi pour la parole, si tu ne comprends pas les mots (au sens son) de ce qu’on te dit. Par exemple, si tu parles avec un Andalou (<=> marseillais), tu as plus de chance de rien comprender, même si tu es Espagnol… ;-)

      Si un ou une personne parlant l'espagnol couramment peut confirmer, je suis encore en phase d'apprentissage…

      Tout à fait.

      En tout cas quand je dois dire à un local qu'il doit parler plus doucement je luis dis *no entiendo una mierda de lo que dices.

      Là, perso j’aurai dit : No entiendo nada de lo que me dices parce que mierda, ça veut dire comme en français, et ce n’est pas très poli… ça peut passer avec un pote, mais pour un local

      • [^] # Re: renommage

        Posté par  (Mastodon) . Évalué à 2.

        Là, perso j’aurai dit : No entiendo nada de lo que me dices parce que mierda, ça veut dire comme en français, et ce n’est pas très poli… ça peut passer avec un pote, mais pour un local…

        Ben justement je suis en andalousie et j'ai l'impression que la politesse ne paie pas vraiment vu qu'ils jurent pour un rien.

        Par exemple si je parle avec un inconnu et que je lui dis no entiendo nada de lo que me dices il va avoir tendance à switcher en anglais. Si je rajoutes des mierda et puta madre dans mes quelques phrases (avec le sourire), ils vont esquisser un sourire, me dire que je m'intègre bien et continuer la conversation en espagnol en parlant plus lentement ou expliquant autrement.

        Évidemment je ne fais pas ça dans une banque (mais avec mes RH si)…

  • # Dans le Cauldron

    Posté par  (site web personnel, Mastodon) . Évalué à 3.

    No Comprendo vient d'être intégré dans le Cauldron de Mageia.

    Pour info au cas où, le Cauldron c'est là où se mitonne la nouvelle version de Mageia.

    « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

  • # Et maintenant dans le dépôt de test de Mageia 7

    Posté par  (site web personnel, Mastodon) . Évalué à 2.

    Si vous voulez vous amuser avec, c'est par là :

    http://svnweb.mageia.org/packages?view=revision&revision=1487879

    « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.