Service Rhasspy

Bonjour tout le monde !

Je suis actuellement sur le développement et plus particulièrement l’intégration de rhasspy sur gladys.
(Permet de reconnaitre la voix / reconnaitre des phrases / parler)

Contexte

Pour se faire il faut donc faire quelques modifications dans Gladys. Actuellement pour parler avec Gladys il est nécessaire de passer par la box Discussion, on parle avec Gladys et Gladys répond à l’utilisateur via un websocket.

Du coup le service rhasspy lui va faire tourner un docker, récupérer les messages via websocket et les envoyer à Gladys. Le problème c’est que pour envoyer des messages à Gladys il faut être un utilisateur. Sauf que la réponse doit revenir sur le service rhasspy.

Specification fonctionnelle

En tant qu’utilisateur, je souhaite :

  • pouvoir parler avec Gladys et avoir une réponse oral.
  • Parler avec Gladys de manière sécurisée et que toutes les données soient gardées en local
  • Avoir un historique de toutes les demandes effectuées

Création d’utilisateur applicatif

Tout en gardant le fonctionnement de Gladys discussion, on peut envisager de créer un utilisateur applicatif lié au service Rhasspy. Cet utilisateur pourra communiquer avec Gladys et donc recevoir les réponses de Gladys sans que cela apparaisse dans une box discussion. (En effet associer une voix et un utilisateur est très difficilement envisageable pour le moment).

L’utilisateur applicatif sera un utilisateur “caché” qui n’aura pas les mêmes droits qu’un utilisateur standard. Il communiquera uniquement avec le système afin de réaliser des actions.

Fonctionnement du service

Le système va installer de manière transparente un conteneur avec toutes les configurations nécessaires au bon fonctionnement des services de reconnaissance / parole.

Un utilisateur applicatif sera crée par le service et affecté au service.

Le service sera connecté en websocket à rhasspy. Lorsque l’on reçois un message, celui-ci est envoyé à Gladys, gladys interprète ce message et renvoie une réponse. Cette réponse sera transmise à rhasspy pour qu’elle soit exécuté à l’oral.

Retour ?

J’aimerai avoir vos avis sur le petit texte que j’ai écris juste au dessus. Avez vous d’autres idées de fonctionnement ? Merci :slight_smile:

1 « J'aime »

Je suis pas très chaud pour l’utilisateur applicatif, c’est un “hack” et c’est pas trop la philosophie de la v4 :slight_smile:

Je ne sais pas comment fonctionne Rhasppy, mais je suis sûr qu’il y a moyen de communiquer avec Gladys autrement qu’avec un faux utilisateur.

MQTT ? HTTP ?

A mon avis ça serait sûrement plus facile à mettre en place.

Le soucis c’est pas rhasspy. Le service rhasspy (codé sur gladys) reçois facilement les informations du conteneur rhasspy. Le problème c’est Gladys core. En gros je dois appeller la fonction que tu as développé pour parler avec Gladys. Mais cette fonction a besoin d’un utilisateur.

Donc soit on change rien de cette fonction, soit on créer quelque chose a part qui permette de communiquer avec Gladys sans avoir d’utilisateur.

Ici la fonction est restrictive pour mon cas d’usage. Moi j’aurai besoin plutot d’une fonction où j’envoie le message, et gladys répond le message de retour.

Rien n’empêche de créer une autre fonction, c’est ce qu’on disait dans l’autre topic :slight_smile:

L’usage est complètement différent, ici on parle d’une commande « anonyme » vocale, l’autre fonction est fait pour des appels textuels authentifié.

Ah oui complètement ca me va aussi ! :smiley:

Par contre, avant de te lancer dans le développement, je te recommande de faire une spec fonctionnelle et technique, c’est vraiment la meilleure façon de mettre à plat ce qu’on veut avant de coder.

Exemple de spec: Multi-utilisateurs - #6 by pierre-gilles

Perso j’utilise https://whimsical.com pour les maquettes, je trouve ça pratique. L’idée c’est pas de faire du pixel perfect, c’est juste de voir ensemble ce qui va être ajouté à l’UI, pour pouvoir avoir une idée de ce qu’on fait avant de foncer dans le dev.

L’avantage de whimsical, c’est que c’est simple, ça te pousse pas à faire une UI bloated.

Pour la spec technique, le but c’est d’expliquer techniquement ce qu’on va faire avant de le faire (modélisation DB, route d’API, etc…)

1 « J'aime »

Merci pour le truc de maquette je savais pas quoi utiliser.

Du coup actuellement je fais un POC pour avoir des idées de chose à prévoir. Mais oui je prends pas trop de temps à faire quelque chose de propre pour le moment et à côté je fais le spec :slight_smile:

Je préfère sur ce genre de développement un peu particulier de bien comprendre comment fonctionne le conteneur :slight_smile:

Bon j’essaye mais en fait je suis plus que nul je suis pas vraiment designer. Y a-t-il des personnes qui savent faire de l’UX ? (designer une page web de manière grossière pour que je m’en inspire) ? :smiley:

T’as besoin de quoi ?

En fait j’ai en tête ce que je dois développer côté back end. Par contre niveau UI / UX je suis très très mauvais. Et les maquettes que j’ai faites c’est juste moche :smiley:

Du coup si qq pas nécessairement dev et qui a du temps aime bien faire ça, ca serait super cool :smiley:

En gros une maquette de la vue du service Rhasspy. Je vois avec lui ce que le service sait faire pour qu’il puisse pondre quelque chose