Quelqu’un a un exemple de sentences avec un ET (optionnel) du genre ?
« Allume la lumière et la télévision du salon »
intent qui marche donc aussi pour
« Allume la lumière du salon »
« Allume la télévision du salon »
Le mien ne prend que le 2 ième objet :
[OnOff]
action = ( allume | éteint | mets | arrête | ouvre | ferme)
object = ( lampe | lumière| tv | télé | télévision | ventilation | radiateur | chauffage | mibox | mediacenter | matrix | tout )
room = ( cuisine | salon | salle de bain | salle de bains | garage |)
(<action>){action} [ le | la ] (<object>){object} [ et [ le | la ] (<object>){object} ] [ du | de la | dans la | dans le | au ] (<room>){room}
Bonjour à tous
Ci-dessous, ma sentence volet et mes slots pour ce que cela vaut.
Ma logique a été d’en mettre un maximum possible dans Rhasspy sur RPI dédié pour simplifier mes scenarios dans mon jeedom sur un autre RPI et de ne pas trop le surcharger…
Je ne sais si pas si c’est très très clean, d’autant que je n’avais pas vu ce post auparavant avec de bons exemples, notamment ceux de Raqpub.
Je suis parti sur une logique d’une sentence par type d’équipements et un scénario associé. Ceci pour affiner au mieux les phrases aux différentes variations d’une personne à l’autre.
Ma sentence pour les volets
[VoletsJeedom]
($action_volets) {action_rhas} [$nbdevolets_rhas] {nb_de_volet_rhas} [(volet | volets | fenêtres | fenêtre)] {objet_rhas} [ (de: | la: | du: | de l: | de la: | d en) ] [ ($pieces) ] {piece_rhas} [à: | à la] [(0…100 | $position)] {position_rhas} [pourcent]
Cela permet d’être assez flexible dans la manière de demander les mêmes actions avec ou sans indication de % d’ouverture.
Dans le scenario, s’il est détecté qu’une position est donnée alors les actions up ou down sont ignorées. Cela peut amener à des bizarreries du style : le volet est à 10%, la phrase = descend le volet à 50%, et bien le volet va monter.
Si pas de position, alors on regarde l’action up ou down et j’associe une position de 0 ou 100 en fonction. Derrière des scenarios sont appelés pour positionner les volets en passant un tag position. Cela permet d’avoir un script Jeerhasspy pas trop usine à gaz.
Pour les slots d’action:
(baisse | baisser | ferme | fermer | descends | descendre):down
(met | mettre | positionne | positionner | règle | régler):set
(monte | monter | ouvre | ouvrir )
Cela doit permettre d’adresser pas mal de cas d’usage.
Pour les pièces, avec plusieurs volets roulants dans la même pièce, cela peut -être tordus.
La définition de la pièce cible est en partie définit dans Rhasspy grace aux synonymes et en partie dans le scenario Jeerhasspy s’il subsiste un doute.
(salon | séjour):salon_volet1et2et3
(entrée | devant):salon_volet3
(cuisine):cuisine_volet4
(salle à manger | table):salon_volet2
(chambre | chambre une | chambre des parents):ch1_volet1
(chambre 2 | chambre 2 | chambre de Louise):ch2_volet4
(rez de chaussée | bas):rdc_volet1et2et3et4
(premier | premier étage | étage | haut):etage_volet1et2et3et4
(maison):touslesvolets
(chambre 3 | chambre trois | bureau |chambre d’ami):ch3_volet2et3
(télévision | télé | tv | canapé):salon_volet1
(terasse):salon_volet1et2
Pour la position des volets, comme on ne va pas positionner au volet près, j’ai créés les slots suivants
(moitié | mi hauteur):50
(trois quart):75
(deux tiers):66
(quart):25
(tiers):33
A toutes fins utiles.
J’ai encore un peu d’optimisation à faire + exploiter des tags que j’ai prévu mais pas encore exploités dans mes scenarii.
Et puis, faut que je regarde « match » et « ask »
states = ($states){state}
light_name = (la lumière){name}
rooms=($rooms){house_room}
<states> <light_name> [<rooms>]
Ce qui me permet quelque chose d’assez générique, qui me permet de préciser une pièce ou non. je penses rajouter un slot pour avoir une liste d’appareil et ensuite tout sera gérer dans un seul scénario pour allumer éteindre en fonction de la pièce et de l’appareil, augmenter d’iminuer les intensité lumineuse etc…
Je suis très content de cette découverte de rhasspy et merci @kiboost pour le boulot sur le plugin
Je penses que les slots peuvent être très utiles, reste a voir comment bien les utiliser, je pensais pas exemple faire un slot de tout les films que je possède afin de pouvoir rien qu’a la voix dire a kodi de mettre tel ou tel film
Autre avantage des slots ce sont des sentences comme les autres au final
j’ai le sentiment de faire la brebis galeuse, mais en faisant un copier coller de vos sentences.ini et du slot YesNo proposé, j’ai cette erreur sur rhasspy :
FileExistsError: [Errno 17] File exists: ‹ /profiles/fr/slots ›
une idée de ce que cela pourrait être ?
Bon, je m’auto-réponds, j’ai supprimé le fichier slots et recréé le slot YesNo, cette fois-ci c’est passé… N’empêche ça me parait un peu ésotérique, cette histoire
Pour aider ceux uqi auront le même problème :
J’ai eu le même soucis, alors je ne sais pas si c’est à cause d’une vielle install d’essai ou si c’est un bug à la première utilisation des slots mais j’avais un fichier slots dans le répertoire /profiles/fr/ alors que Rhasspy 2.5 attend un répertoire slots dans lequel il mettra un fichier par slot. J’ai donc fait comme toi, effacé le fichier slots, enregistré ma config dans Rhasspy et il a créé le répertoire et ses sous fichiers sans problème.
je prend le train en marche et j’essaie de m’y mettre également, j’ai mis un docker rhasspy sur raspbian côte à côte avec jeedom
j’ai réussi également à importer l’assistant sans problème via le plugin dans jeedom, le micro et mes enceintes sont fonctionnelles également sur le raspberry
j’ai configuré les paramètres (j’ai pris ceux par défaut dans la doc) via la page web d’administration rhasspy, jusque là ca as l’air pas trop mal
En revanche, j’ai toujours pas pigé la philosophie d’interactions entre rhasspy et jeedom, est-ce que quelqu’un peut me « dégrossir » les étapes essentielles pour lancer des commandes à la voix ?
typiquement, j’aimerai juste commencer à allumer/éteindre mon poele de cette manière pour tester, voir si j’arrive un peu a quelque chose
Perso, un truc à côté duquel j’étais complètement passé à côté, c’est la configuration des équipements (master, satellites) depuis le plugin rhasspy. C’est documenté pourtant, mais cette partie est pas ultra intuitive car je m’attendais à ce que ça roule tout seul lors de l’importation de l’assistant. Il suffit de cliquer pourtant sur un bouton et le tour est joué ^^ à partir de là mes scénarios jeedom ont bien été exécuté suite à la reconnaissance de l’intention dans rhasspy. Mais on s’éloigne un peu du sujet de ce topic qui est les sentences et les slots. Si tu veux, rejoins un des discords parmi nextdom, domotech ou communauté domotique DIY, y a plein de gens de bonnes volontés pour aider
Je vous propose un module à adjoindre à sentences.ini
à l’heure actuelle la dernière version (2.5.8) utilise Kaldi FST et permet d’avoir des intents avec des plages de nombres
tel que
<[testnombre]
test (1…10) {value}
Mais j’ai remarqué que si on as besoin d’une plage assez large … l’entrainement prends énormément de temps et le fichier /profiles/fr/kaldi/language_model.txt gonfle de manière exponentielle.
j’ai donc cherché une solution qui soit plus rapide et moins gourmande en utilisant les nombres sous forme texte
je me suis inspiré d’autres posts et voici le résultat pour 1 à 9999 (modifiable à millions etc …) :
new sentences files → nom Chiffres
Je vois que tu es en 2.5.8 est-ce que tu es sur pi3B et si oui est-ce que c’est suffisamment performant et est-ce que la reco vocale marche bien ?
(Je suis resté en 2.4.19 )