Simon, vous connaissez ?

Posté par . Modéré par Nÿco.
37
26
août
2009
KDE
Depuis un bon moment, la communauté kde recherche une application tierce de reconnaissance vocale qui serait bien intégrée à l'environnement. L'une de ces applications s'appelle simon.

Qu'est-ce que simon ?

Il s'agit d'un système de reconnaissance vocale qui peut être intégré aussi bien à X11 qu'à windows, et qui utilise une architecture basée sur des greffons pour en contrôler l'interface.
Il tire son nom d'un jeu pour enfant "Simon dit", mais dans le cas présent "Simon écoute". Ce nom est en minuscule exprès, car l'organisation financière qui le supporte s'appelle "SIMON listens". C'est aussi un acronyme pour "Speech Interaction MONitor".

Peter Grash, l'un des développeurs de cette application indique à propos de l'origine du projet :

Il était dans une école (en 2006) qui proposait un sujet nommé "project development" pour lequel des groupes d'étudiants devaient développer des projets avec des sociétés externes. Alors qu'il cherchait un projet, il a été contacté par Franz Stieger, un enseignant qui s'occupait d'enfants en difficultés, notamment des problèmes de paralysie spasmodique spasticity. Du fait de leur problèmes moteurs, ces enfants ont des difficultés pour écrire et pour taper au clavier. Franz voulait savoir si un logiciel de reconnaissance vocale pourrait les aider à participer plus dans la classe. Après cet exposé, Peter et 4 de ses camarades ont cherché des logiciels de ce type, mais sont rapidement arrivés à la conclusion qu'aucun des logiciels de reconnaissance vocale existants, qu'ils soient commerciaux ou non, était capable de s'adapter aux éventuels problèmes de diction de leurs sujets de tests. C'est ainsi que le projet est né.

Dès 2007, Peter Grash et son équipe avait déjà un prototype fonctionnel. Le premier mot que simon reconnut était "thunfish" (thon en allemand) qui, quand il était prononcé, affichait une image plein écran d'un thon. Peu de temps après, simon avait deux commandes : exécutables et lieux. Depuis, beaucoup de commandes ont été ajoutées, mais il vaut mieux se référer à la vidéo de démonstration pour s'en faire une idée précise et voir simon en pleine action.

Pour le moment, les commandes sont implémentées sous forme de greffons configurables.

Il est d'ores et déjà disponible en version 0.2, car toujours en développement, mais semble déjà bien fonctionnel, comme le montre la vidéo de démonstration sur la page de la news.

NdM : ceci est une traduction de l'article de Troy Unrau sur KDEnews avec son autorisation, merci à Gyro Gearllose (geo_trouvetout) et Troy ; merci aussi à gnumdk pour son journal sur le sujet. Sous le capot

Simon est écrit en C++ et utilise Qt et KDE pour l'interface graphique. De ce fait, il s'intègre parfaitement à KDE. Peter GRash explique ce choix d'intégration par le fait que d'une part simon était dès le départ une application écrite avec Qt, et d'autre part ils souhaitaient que simon soit utilisable dans un environnement windows. KDE s'est vite imposé à eux comme un choix logique, car l'implémentation originelle, basée sur Qt exploitait beaucoup de bibliothèques Qt qui sont, selon ses mots, des clones bon marchés de leurs équivalents fournis avec KDE. Par ailleurs, les implémentations de ces routines et autres bibliothèques fournies par l'équipe derrière KDE sont beaucoup plus testées, mûres et complètes que celles fournies nativement par Qt.

Qu'il soit intégré à KDE n'empêche nullement simon de fonctionner dans n'importe quel environnement graphique, que ce soit gnome, xfce, kde-3 ou n'importe quel autre, pourvu que les dépendances soient correctement installées.

Peter Grash indique également que la stabilité de simon sous linux souffre du gros bazar qu'est la gestion du son sous linux. "Simon on Windows is a tick more reliable because of the huge mess that is the sound stack on Linux and especially Ubuntu where their questionable pulseaudio setup sometimes breaks simon (portaudio, actually) in the most unbelievable ways.". Ou, voici une traduction libre : "Simon sous windows est plus fiable à cause du gros fatras qu'est la pile de gestion du son sous linux, particulièrement sous ubuntu où leur configuration discutable de pulseaudio fait planter parfois simon (portaudio, en fait) de la plus improbable des façons.

Pour circonvenir ces problèmes, l'équipe met à disposition des paquets mis à jour pour ubuntu qui devraient permettre à simon de fonctionner correctement sur cette distribution. Des paquets sont également disponibles pour OpenSuse et il est également possible de l'installer soi-même en utilisant la chaîne habituelle de compilation de KDE, et en suivant les instructions sur le wiki (cf. 3ème lien).

Reconnaissance vocale

simon utilise plusieurs technologies pour réaliser cette reconnaissance vocale. En voici un aperçu :

Le processus complet de reconnaissance vocale est principalement un problème de statistique. Le son est enregistré et comparé à un modèle qui comprends deux parties, un modèle acoustique et un modèle de langage.

Le modèle de langage contient des informations concernant le langage utilisé. Ce qui peut être à peu près n'importe quoi : de l'anglais, du français, de l'allemand ou un langage complètement créé, peu importe. Ce modèle défini des "mots" et de quels sons ils sont composés. Le son est représenté sous forme de phonèmes. Il existe des alphabets phonétiques parfaitement définis, tel l'IPA ou l'X-SAMPA mais il n'y a aucune contrainte, et chacun est libre d'utiliser celui qu'il souhaite, qu'il soit normalisé ou non.
Le modèle de langage définit également quelles combinaisons sont valides, une sorte de grammaire.

Le modèle acoustique définit comment ces phonèmes sonnent. Ceci est réalisé en fournissant une quantité appréciable de discours transcrits à un algorithme d'apprentissage. La sortie de cette procédure d'entraînement est un modèle caché de Markov HMM. Ainsi, pendant le processus de reconnaissance vocale, le microphone enregistre la voix qui est ensuite numérisée sous forme d'onde. Cette forme d'onde est comparée aux données du modèle acoustique pour estimer quels phonèmes ont été prononcés. Ces phonèmes sont ensuite - grâce à l'aide du modèle de langage - transformés en mots et "phrases".

Simon ne dispose pas d'un modèle prédéfini, au contraire des autres solutions de reconnaissance vocale du marché. À la place, il laisse l'utilisateur se créer son propre dictionnaire simplement. Ainsi, simon ne dépend d'aucun langage existant, ni d'aucune prononciation particulière et laisse le choix complet à l'utilisateur.

La création du modèle de prononciation et des modèles de sorties sont tout un art. Le modèle acoustique est entraîné par le HTK toolkit (cf. lien 4) qui doit être installé séparément et Julius (cf. lien 5) est utilisé pour la reconnaissance (une version modifiée de ce dernier est fournie avec simon.

Simon est volontairement fourni sans modèle de diction, et même si cela peut paraître déroutant au départ, il s'agit pour les auteurs de s'affranchir de tous les problèmes que peuvent occasionner les modèles faits par d'autres au prix d'un travail à fournir par l'utilisateur. En effet, pour rendre simon utilisable, il ne suffit pas de l'installer. Il faut également lui apprendre les vocables, phonèmes utilisés, leur prononciation, etc. Ceci ouvre des portes aux utilisateurs qui sont généralement exclus des systèmes existants, soit par manque d'une base d'utilisateurs suffisamment conséquente, soit du manque total d'utilisateurs/développeurs.

Cependant, des pistes de recherches sont explorées par l'équipe de développement pour d'une part laisser à simon sa flexibilité mais en lui ajoutant des modèles par défaut, si ceci s'avérait nécessaire. Aucun code n'est encore sorti de cette idée pour l'instant. Il est également envisagé d'essayer d'utiliser les modèles de VoxForge dès que possible. VoxForge est un projet qui vise à créer des modèles de voix indépendants.

VoxForge n'a pas suffisamment de modèles pour autoriser la diction proprement, mais il s'agit d'un projet GPL qui pourrait bénéficier des utilisateurs de simon qui souhaiteraient contribuer.

Version en cours et projets d'avenir

L'objectif de la version 0.2 de simon était la stabilité. Et il a été pleinement atteint. L'entière flexibilité du système est vraiment sa killer-feature. Pour les besoins des tests, l'équipe de développement a rapidement créé un modèle qui assignait des commandes aux sons de toux, bâillements, ronflements, sifflements, claquements de langue, etc. Après cinq minutes d'apprentissage, l'équipe était capable de surfer sur le web juste en toussant dans le microphone !

Simon est maintenant un projet en cours de maturation, et n'est plus un simple sujet d'étude. Il est le fruit du travail d'une équipe de trois développeurs Peter Grasch, Franz Stieger et Matthias Stieger qui travaillent presque à plein temps sur le projet. Bien sûr l'objectif à long terme est la diction complète, mais en attendant, l'objectif de la version 0.3 à venir est l'intégration de la fonctionnalité de KDE "get new stuff" et d'améliorer le processus de reconnaissance en prenant en considération les scores du module de reconnaissance. La possibilité de télécharger de nouvelles commandes, des textes d'entraînement, et des mots de vocabulaires plus simplement contribueront à créer une communauté grandissante autour de simon. Par exemple, si vous souhaitez juste pouvoir contrôler amarok, vous récupérez le paquet idoine depuis une liste, lisez quelques textes pour enrtaînner le modèle acoustique, et c'est parti !

Problèmes de licenses

Il y a a ce jour deux problèmes avec les dépendances de simon. D'une part HTK qui est distribué sous une license non compatible avec la GPL, et d'autre part Julius qui est publié sous une license incompatible avec la GPL (une réminiscence de la vieille licence BSD).

L'objectif serait de faire intégrer simon avec kde, pour qu'il soit intégré par défaut, mais ces deux logiciels posent problème. Concernant HTK, il nécessite un enregistrement sur le site pour pouvoir le télécharger, et bien que le code soit disponible, et même que l'équipe du projet encourage les améliorations par les développeurs du monde entier, il n'est libre et il n'est pas possible de redistribuer les modifications apportées.

Ces problèmes vont empêcher simon d'être intégré par défaut dans les diverses distributions pour l'instant.

Conclusion

Simon fournit une manière unique d'interagir avec son environnement de travail, même si la diction n'est pas encore disponible, et il s'intègre parfaitement à KDE. L'installation requiert l'obtention et l'installation manuelle de HTK pour des problèmes de licences. Cependant, si suffisamment d'utilisateurs le demandent, il sera peut-être possible d'arriver à un arrangement avec l'équipe derrière HTK, un système de double licence probablement.
En attendant, tous ceux qui sont intéressés par le projet, ou simplement ceux qui en auraient besoin pour améliorer leur rapport à l'informatique sont encouragés à l'essayer.
  • # C'est le truc qui nous manquait

    Posté par (page perso) . Évalué à -1.

    "Il s'agit d'un système de reconnaissance vocale qui peut être intégré aussi bien à X11 qu'à windows"
  • # Amarok?

    Posté par (page perso) . Évalué à 10.

    Par exemple, si vous souhaitez juste pouvoir contrôler amarok,

    Ça va être pratique, il va falloir hurler plus fort que la musique pour la mettre moins fort?

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: Amarok?

      Posté par . Évalué à 3.

      Ou parler directement dans le micro.
      Et fais attention au larsen pendant que tu y es.
      • [^] # Re: Amarok?

        Posté par . Évalué à 7.

        Le retour du son n'est pas utile pour ce genre d'application. Sans retour pas de larsen.
        • [^] # Re: Amarok?

          Posté par (page perso) . Évalué à 10.

          Sauf si tu t'appelle Nicky. Parce que Nicky Larsen....

          hop hop hop ~~~~>[]
        • [^] # Re: Amarok?

          Posté par . Évalué à 2.

          En effet mais j'avais validé quand j'y ai pensé. /o\
          Et puis flûte ! Un troll n'en est pas vraiment un quand il est parfaitement exact d'un point de vue technique.
    • [^] # Re: Amarok?

      Posté par . Évalué à 2.

      Ça va surtout être très fun pour l'embêter quand elle/il écoute des horreurs.
      On pourrait pas avoir la même fonctionnalité pour les gens
      sans l'option débattre, gueuler très fort ? :)
    • [^] # Re: Amarok?

      Posté par (page perso) . Évalué à 10.

      Si tu cris : TA GUEULE, il met la fonction mute.
      • [^] # Re: Amarok?

        Posté par (page perso) . Évalué à 8.

        En fait le plus pratique pour ne pas se défoncer les cordes vocales serait de cliquer sur un bouton dans l'interface pour que Amarok lise «ta_gole.ogg» et qu'il en parle à Simon pour décider de la bonne action à suivre.

        Adhérer à l'April, ça vous tente ?

        • [^] # Re: Amarok?

          Posté par (page perso) . Évalué à 4.

          Et ensuite, pour éviter d'avoir a appuyer sur le bouton, il faudrait pouvoir dire "Lit ta_gole.ogg", pour que la lecture du fichier se lance, pour que la commande soit reçu, pour que le volume soit baissé.
      • [^] # Re: Amarok?

        Posté par (page perso) . Évalué à 3.

        Ah oui, mais que va-t-il se passer en écoutant cette chanson ?
        http://www.jamendo.com/fr/track/22065
        • [^] # Re: Amarok?

          Posté par (page perso) . Évalué à 2.

          Tu peux reconfigurer en mettant "auriez-vous l'obligeance de bien vouloir baisser le son, dans la mesure du possible" et ça roule.
        • [^] # Re: Amarok?

          Posté par (page perso) . Évalué à 3.

          Non ça ne va pas être possible là : tu te dois d'adapter tes goût musicaux en fonction de Simon sinon il va te taper dessus et c'est un violant le Simon.

          Bref écoute du classique et il ne t'embêtera pas !
  • # Libre mais modifications non redistribuables ?

    Posté par (page perso) . Évalué à 7.

    bien que le code soit libre […], il n'est pas possible de redistribuer les modifications apportées.

    C'est moi, ou il y a une contradiction dans la phrase ?
  • # Simon ou Jacques ?

    Posté par . Évalué à 10.

    Le fameux jeu pour enfants, traduit dans la langue de Chirac, c'est "Jacques a dit".

    J'imagine que ça peut donner des idées pour nommer le module français.
  • # Phonèmes on diphones ?

    Posté par (page perso) . Évalué à 5.

    C'est bizarre que ce soit basé sur de la reconnaissance à base de phonème, mes cours de reconnaissance de langue m'avaient expliqué que ça marchait très mal et qu'il fallait des diphones.

    Toujours d'après ces même cours, un phonème change énormément suivant le phonème que le suit ou le précède. C'est pour ca qu'on fractionne en diphones. Par exemple, pour « bidon d'huile », on découperai en : __bi - idon - ondui - uile - eeu__
  • # Thunfisch !

    Posté par (page perso) . Évalué à 2.

    Et non thunfish ! C'est dit.
  • # ViaVoice

    Posté par (page perso) . Évalué à 3.

    ViaVoice est un très vieux projet IBM pour lequel on été investi de très grosses ressources pendant (à mon avis) une vingtaine d'années.
    Ce projet ayant été abandonné aux environs de 2000, j'avais suggéré à un dirigeant d'IBM d'en libérer les sources. Je ne sais pas si il y a eu une relation, mais quelques semaines plus tard, IBM annonçait l'ouverture d'une grosse partie des sources de ViaVoice. Allez sur http://www.ibm.com/developerworks/ibm/library/i-voice/

    Je pense que la reconnaissance vocale est une tâche énorme qui n'est plus à la portée d'une entreprise mais qui demande une coopération ouverte et large pour pouvoir progresser.

    J'avais fait en 2001un texte qui montrait ce besoin de coordination et dans quel sens faire évoluer des travaux qui existent un peu partout avec très peu de cohérence et un énorme gâchis : http://pjarillon.free.fr/eurolang/cetral-propos.fr.html
  • # coquille

    Posté par . Évalué à 1.

    dans :

    Version en cours et projets d'avenir

    lisez quelques textes pour enrtaînner le modèle acoustique,

    lisez quelques textes pour entraîner le modèle acoustique,

    voilou

Suivre le flux des commentaires

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