Bonjour la communauté, je vois que le sujet Projet voice control a été fermé et trouve cela dommage, car j’ai l’impression que les choses bougent enfin sur le terrain de la commande vocale 100% traitée en local!
Utilisateur de Home Assistant depuis un bon moment, j’avais tenté l’expérience Rhasppy il y a quelques années et autant dire qu’il m’avait franchement déçu, j’avais donc laissé tomber et m’étais rabattu sur alexa et son copain google, la première répondant au final davantage à mes besoins somme toute assez simples, à base d’interrupteurs, de streaming audio et de listes de courses à remplir dans Bring!…
Rien de bien sorcier au final et je me suis donc dit que des progrès avaient peut-être été réalisés du côté de l’open source et sans forcément recourir à des LLM gourmands en ressources et franchement overkill pour mes usages.
J’ai donc installé Piper, openwakeword, speech to phrase et Music Assistant en containers docker, les trois premiers interfacés à Home Assistant (également en docker sur un autre serveur local) via l’intégration Wyoming Protocol.
Résultat, la reconnaissance vocale fr du STT speech-to-phrase est assez épatante, rien à voir avec whisper et ses élucubrations sans queue ni tête qui me rendaient fou..! Sorti de l’anglais, ce truc n’est vraiment pas utilisable ou en tout cas, peu pertinent dans un usage avec Home Assistant…
N’ayant pas d’Atom Echo, ESP32 S3 Box 3, nabu casa ou Satellite1, j’ai ensuite installé View Assist companion App sur une vieille tablette, avec les intégrations HA View Assist companion app et View Assist, ceci afin de tester les wake words. Là encore, agréablement surpris du résultat même si View Assist est pour le moment très limité en wake words et je n’ai pas l’impression que l’on puisse en ajouter, il y a les classiques Jarvis, Mycroft, Rhasppy, Alexa et bien sûr, OK Nabu… Moi qui avait ajouté Hey potato à la liste, ce sera peut-être pour plus tard.
Quelques customisations plus tard, comme un fichier yaml de custom-sentences contenant des dizaines de todo-items pour pouvoir dire “ajoute du beurre salé à la liste de courses”, diverses radios FIP ainsi que ma médiathèque Jellyfin dans Music Assistant et je me retrouve avec sensiblement le même usage que j’avais d’Amazon Alexa.
Voilà où j’en suis, encore une fois, speech to phrase n’est pas conçu pour autre chose que la gestion d’une installation Home Assistant, on ne peut rien lui demander qui sorte des clous pré programmés dans ses dizaines de fichiers yaml “sentences”, mais il est du coup assez facile de l’étoffer avec ses propres commandes, ou juste retranscrire en français celles qui manquent par rapport aux commandes anglaises, plus nombreuses. Par exemple, la phrase d’ajout d’items à une liste n’existe pas dans le fichier sentences français, alors qu’elle est bien présente en english!
J’ai donc bricolé un truc qui me convient mais qui, je pense, ne peut pas vraiment être proposé en PR sur le github (voir plus bas).
Je me demandais donc si d’autres personnes avaient testé speech to phrase, depuis 1 mois ou deux ou si vous aviez arrêté les frais avant de devenir fou à hurler des commandes incomprises par whisper…
Il serait intéressant de partager nos sentences en français et de participer à l’amélioration des commandes existantes sur le github speech-to-phrase!
Je commence donc par ma modeste custom sentence pour l’ajout d’items à une liste via speech-to-phrase, à placer dans un dossierqui lui soit accessible et indiqué via le compose du container, par exemple.
language: "fr"
intents:
ExtraSentencesFR:
data:
- sentences:
- "ajoute[r] [du|de la|des] {todo_item} à [la|ma] liste {name}"
- "ajoute[r] [du|de la|des] {todo_item} à [la|ma] liste"
- "met[s] [du|de la|des] {todo_item} [dans|à] {name}"
- "ajoute [dans|à] {name} [du|de la|des] {todo_item}"
domains:
- "todo"
Grâce à ça et au blueprint d’Alfriedo, je peux synchroniser l’ajout de pommes, de poires et de scoubidous à Bring! et Kitchenowl (penser à installer leurs intégrations respectives).
Ah, et aussi, dans le même dossier custom-sentences/fr, pensez à éditer un yaml contenant un énorme listing de tous les termes que vous prévoyez d’ajouter à vos listes (pommes, poires, scoubidous…), c’est la contrepartie d’avoir un système local sans LLM…