Rhasspy : Configuration de base

La première chose que l’on va faire c’est configurer les services; en tout cas, ceux qu’on peut 🙂

Pour ça, dans le menu de gauche on clique sur les petits engrenages

Le serveur MQTT

Alors, pour l’instant, on va le laisser un peu de côté en termes de jeu. Mais je vais juste te montrer sa configuration si tu souhaites le connecter à un serveur MQTT.

On clique sur le bouton « MQTT » et ça laisse apparaitre les paramètre pour se connecter à un serveur MQTT.

Tu as 2 choix possibles, soit le serveur MQTT est géré en interne par mosquitto, soit tu peux te connecter à un autre serveur MQTT. Ça peut être intéressant par exemple si tu veux te connecter à un « réseau » snips existant car Rhasspy peut aussi s’appuyer sur le même protocole Hermes-MQTT que snips.

Choix initial : Internal

Laissons Internal pour le moment. Je reviendrai dessus quand je ferai mes tests avec snips

Audio recording

C’est ici qu’on définit comment configurer l’enregistrement depuis le micro.

Alors on a pyAudio. C’est une librairie qu’on utilise en python pour enregistrer ce qui vient d’un microphone par exemple. Ça peut être pratique si on veut écrire son propre script pour récupérer la voix et faire des traitements dessus. Cette option offre la possibilité d’envoyer l’audio sur un serveur distant pour traitement de reconnaissance vocal. Je n’en sais pas plus.

Ensuite, nous avons arecord. Classique, on connait l’outil et c’est celui que je vais activer.

Ensuite, nous avons Local Command. Une option qui peut être intéressante par exemple si on souhaite customiser la ligne de commande de l’outil d’enregistrement.

Et le dernier Hermes MQTT. Je n’ai pas testé mais ce n’est pas impossible que ce soit pour récupérer l’audio de hermes/audioServer/<siteId>/audioFrame.

Le choix initial : arecord

Un classique, on maitrise l’outil.

Wake Word

Alors pour être totalement transparent, je n’ai toujours utilisé que le wake word par défaut de snips. Donc c’est un sujet que je n’ai pas encore approfondi.

Néanmoins, Porcupine semble être utilisé par les personnes sur le forum j’ai l’impression.

Snowboy n’évolue plus je crois.

Mycroft Precise vient du projet Mycroft qui est un assistant vocal online (doit se connecter à internet). Néanmoins, je pense que la détection d’un wake word ne devrait pas avoir besoin d’Internet. A tester.

Pocketsphinx, alors lui, je le connais pour avoir essayé de l’utiliser à mes début en reconnaissance vocale et c’était une catastrophe. Bon, je ne connaissais pas trop non plus le sujet, mais les perfs étaient médiocres. Donc, je reste un peu sur cette idée. Peut être faudrait il que je réessaie un jour.

Il reste Local Command et Hermes MQTT qui ont à peu près la même fonction à chaque fois. Local Command permet de faire appel à un programme exterieur et Hermes MQTT qui permet de s’appuyer sur le protocole Hermes (compatible snips). Je ne les listerai donc plus pour les prochains services.

Le choix initial : Disabled

En effet, pour le moment je découvre l’outil. Je reviendrai sur ce point plus tard quand je souhaiterai lancer mon pilote 🙂

Speech To Text

Alors là, il y en a 2 qui me font briller les yeux comme un gamin dans un rayon de jouet : Kaldi et Mozilla DeepSpeech

Kaldi, je le connais pour l’avoir déjà un peu utilisé dans un autre contexte et en plus, je crois que snips s’appuyait plus ou moins dessus. C’est un outil vraiment fiable et efficace s’il est bien configuré et surtout avec de très bon modèles disponibles. Je sais qu’il y a un modèle français qui traine sur internet qui a été très bien entrainé. Je vais regarder ça.

Le second donc c’est Mozilla DeepSpeech. Ça fait longtemps que j’attends un vrai projet pour commencer à jouer avec. Alors, je ne vais pas rentrer trop dans le détail mais DeepSpeech c’est du deep learning, c’est à dire basé sur un réseau neuronal d’intelligence artificielle. Ce qui est important en Deep Learning pour un résultat très efficace, c’est la quantité de données. Il faut qu’elle soit très très très importante. Plus que pour du machine learning standard. Et là, il existe un dataset FR qui fait déjà pas loin de 10 Go . Tu vas me dire : C’est énorme ! Oui, mais non. Ce n’est pas encore assez. Mais par contre, une fois qu’on aura le nombre d’heures nécessaires pour avoir un modèle fiable, alors cette technologie dépassera toutes les autres en reconnaissance vocale. Et en Offline en plus ! Bon, j’ai des doutes que ça tourne correctement sur un raspberry. Ce sera à tester. Par contre, rien ne t’empêche de créer ton propre modèle mais cela prend beaucoup beaucoup de temps à préparer ce genre de dataset. Mais avec juste les phrases nécessaires à reconnaitre, le modèle serait plus petit et donc plus accessible sur un raspberry.

Choix initial : Kaldi

Je pense qu’il a été testé sur raspberry par l’équipe de développement et je sais qu’il est relativement efficace.

Intent Recognition

Il y en a surtout 2 qui vont nous intéresser : Fsticuffs et Fuzzywuzzy . Car ce sont les 2 plus rapides en termes de traitement.

OutilsNombre de phrasesVitesse d’entrainementVitesse de reconnaissanceFléxibilité
fsticuffs1M+Très rapideTrès rapideignore les mots inconnus
fuzzywuzzy12-100rapiderapideReconnaissance de chaines de caractères

J’ai repris le tableau du site de rhasspy.

Le premier est capable de gérer des millions de lignes et de reconnaitre en quelques millisecondes. Par contre, il faut que les phrases soient à l’identique sinon pas de reconnaissance d’intent. Un peu juste je pense pour un assistant vocal. Parfois, juste un mot compris de travers, et l’intent ne serait pas reconnue… A tester

Le second est plus limité en termes de phrase mais par contre, il ne cherche pas spécifiquement la phrase exacte, mais à l’aide d’un algorithme, il va plutôt chercher si une phrase s’en rapproche réellement. Il réagira donc mieux au rôle d’assistant vocal. De plus, Il intègre un paramètre de confidence. Il faut voir ça un peu comme un paramètre qui définit à partir de quel pourcentage (que la phrase soit proche) on estime que c’est validé.

Choix initial : Je vais essayer les 2 et me faire mon avis 🙂

Edit: Pour le moment, j’utilise fsticuffs avec un fichier sentences.ini optimisé. Pour plus d’info, c’est dans cet article

Text To Speech

Alors là, le choix va être vite fait (malheureusement). Espeak, ça fait une voix de robot des années 80. Flite n’existe pas en français. Il nous reste donc picoTTS (celui que l’on connait avec snips) et MaryTTS qui nécessite un serveur web distinct.

Choix initial : PicoTTS

On le connait, on ne sera pas dépaysé pour les tests. Dans le paramètre Language, on oubliera de mettre fr car sinon, on va avoir une voix anglaise qui cause du français. Ça fait saigner les oreilles…

Audio Playing

Hé bien ce sera donc aplay. Outil que l’on connait bien sur ce blog car très utilisé dans les tuto dur les respeaker.

A noter qu’il y a la possibilité de définir la sortie audio sur un périphérique spécifique. Ça peut être intéressant dans certains cas.

Choix initial : Aplay

On connait l’outil

Dialogue management

Alors la gestion des dialogues c’est : qui gère les dialogues. Soit c’est rhasspy, soit c’est sur MQTT via Hermes-MQTT.

Choix initial : Hermes MQTT

Pour commencer, je vais passer sur un dialogue management que je connais puisque c’est celui de snips, Hermes MQTT. Je pense que je ferai un article dédié sur ce sujet quand j’aurai assez joué avec 🙂

Sauvegarde de la configuration

Il nous reste plus qu’à sauvegarder tout ça en cliquant sur Save Settings.

Et si tout se passe bien, Rhasspy redémarre. Si on retourne sur la page d’accueil, on peut désormais voir notre menu des services avec des icônes vertes, donc des services en état de fonctionnement.

Par contre, il nous demande de télécharger des fichiers manquants. Ce qu’li va donc falloir faire en cliquant sur le bouton Download.

S’ensuit ensuite un entrainement de notre assistant personnel.

Jouons maintenant un peu avec ce qu’on vient de configurer pour voir.

2 Comments

  1. Adaptation des « Menu » et des « valeurs » pour la version 2.4.20 :
    – « Audio Recording » -> « Microphone »
    – « Text To Speech » : ‘fr’ -> ‘fr-FR’
    – « Audio Playing » -> « Sounds » mais ATTENTION : Bug ! Impossible de conserver le choix ‘aplay’ avec la valeur ‘ »default:CARD=seeed2micvoicec: Default Audio Device »
    Il m’a fallu saisir manuellement le texte suivant dans le ‘profile’ accessible via l’onglet [Advanced »] :
    « sounds »: {
    « aplay »: {
    « device »: « default:CARD=seeed2micvoicec »
    }
    puis [Save Settings]
    ATTENTION a ne plus cliquer sur [Save Settings] depuis l’onglet [Settings] au risque de faire disparaitre cette modif.Conversion des « Menu »cdans la version 2.4.20 :

  2. Bonjour,
    Merci pour ce document « pas à pas » qui m’a permis de commencer à configurer mon premier assistant vocal avec la version Rhasspy 2.4.20
    Cependant, l’interface graphique ayant beaucoup évoluée (avec quelques bugs) je te propose de fournir si tu le souhaite les copies d’écran équivalentes pour cette nouvelle version.
    En attendant, j’apporterai quelques précisions nécessaires pour que ton « mode d’emploi » soit fonctionnel avec la version 2.4.20 dans les pages suivantes.

Poster un Commentaire

Votre adresse de messagerie ne sera pas publiée.


*


Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.