Je voudrais faire mon propre assistant vocal local

Bonjour, je confirme que Vosk est plus à l’aise avec le Français que Whisper…

utilise porcupine1 avec un déclencheur perso, c’est top.

Bon alors Vosk a fini par fonctionner (après quelques reboot)
Donc effectivement, vosk+porcupine marche beaucoup mieux; merci pour les infos.

1 « J'aime »

Est-ce que quelqu’un ici a déjà installé whisper et/ou piper sur un serveur distant (en mode API/SaaS) et intégré au pipeline assist ?
Je galère à trouver des ressources à ce sujet

J’ai déjà réussi à intégrer Ollama, il ne me manque plus qu’un stt fiable et un bon tts rapide pour faire mon assistant badass capable de répondre à n’importe quelle question.

Hello,

Tu saurais expliquer comment tu créer un custom wake word Français pour porcupine STP ?

J’ai bien trouvé ça, mais pour du français, c’est compliqué : Create your own wake word - Home Assistant

Merci !

Salut,
tu te connecte sur le site https://console.picovoice.ai/, créer un compte.
Choisir create wake word

Tu choisi la langue et le mot et fait un enregistrement de ta voix.
Tu télécharge le fichier.
Tu copier le fichier *.ppn dans le dossier /Share/porcupine/.

Redémarre HA et choisie ton nouveau Wake word.

Quelqu’un a déjà utilisé Snowboy ou une alternative à Pocupine ?
J’ai beaucoup de mal avec le concept de « il faut créer un compte chez nous pour utiliser notre code », et je suis entrain de coder un truc en python pour gérer toute la partie assistant sur un rpi avec un microphone et des HP sur la prise jack
Pipeline : Wakeword → STT → LLM → TTS
(chaque wakeword a son pipeline, dans un fichier de config JSON)

Salut,
j’ai utiliser Snowboy et je suis passer sur porcupine1.
Pas besoin de compte avec snowboy.

Je suis toujours sur snowboy, ils n’ont toujours pas validé mon compte pour le wake Word porcupine…

Il faut bien tester et ajuster la sensibilité de snowboy, pour qu’il ne se déclenche pas à tout bout de champ, mais qu’il reconnaisse tout de même son nom.

Mais pour l’instant, je suis assez mitigé… Ça fait un assistant vocal qui répond bien à des commandes très précises (avec quelques problèmes de rexonnaissance), mais ce n’est absolument pas intuitif ni intelligent.

Bref, mon côté geek s’amuse, mais en l’état ce n’est pas mettable en production à la maison, ma femme et mon fils vont m’arracher les yeux…

J’ai commencé à regarder du côté de local Ai, mais pas évident à mettre en place au vu de mes maigres compétences…

J’ai essayé d’installer snowboy, mais « pip install snowboy » foirrasse lamentablement.
J’ai essayé une autre méthode à base de compilation, mais à la fin j’ai systématiquement la même erreur :
No module named ‹ snowboydetect ›

… je lâche l’affaire; j’ai un peu fait le tour de tout ce qui se fait en bibliothèque de wakeword, et je refuse d’utiliser du code/système propriétaire dans un projet open source. Je n’ai pas trouvé de solution viable avec du code robuste.

Passe par là, ça te simplifiera la vie :wink:

Tu utilises bien porcupine 1 ? Ou bien tu es sur le 3 ?
De ce que j’ai glané sur le net, le 1 ne semble pas permettre de custom wake word.

Je l’utilise, et j’ai bien tenté d’en mettre différents dans le répertoire, mais impossible de les avoir quand je tente de sélectionner je wake word… (et j’ai tenté de reboot, minuscules, restart module, …)

Merci d’avance :slight_smile:

image



image

je me suis gourrer d’addon , j’ai pas celle de rhasspy. Je la testerais, elle est plus a jour.

Faut choisir le bon support, un RPI4 tu choisi rapsberry pi ( pas linux ou windows )

1 « J'aime »

Merci beaucoup.
Avec le bon add-on, ça fonctionne beaucoup mieux :slight_smile:
Pour les type de wake-word, j’ai un peu tout testé comme ça ne voulait pas fonctionner.
Au final, c’est jar-vis_fr_linux_v3_0_0.ppn pour moi, je suis sur un NUC, dans une VM proxmox :+1:

1 « J'aime »

Alors… petit point sur l’avancement de mon projet, et mes premiers pas dans Python :

Coté matériel, il faut un RPI3 avec un micro USB tout beubeuh et un haut parleur sur la prise jack.

J’ai réussi à faire tourner un wakeword efficace sur le RPI, ensuite s’occupe de la communication vers stt, tts, llm, hassio assist via des API selon le wakeword
J’ai un serveur un peu badass dans le cloud sur lequel j’ai installé STT, TTS et LLM via des API, c’est plutôt rapide, j’arrive à donner des ordres avec un temps de réponse < 1 sec (après la fin de la commande vocale) Jusque là, ça ressemble à n’importe quel assistant cloud (Alexa ou OK Google)

J’utilise rhasspy-wake-raven pour la détection de wakewords, c’est pratique, plutôt satisfaisant, j’utilise plusieurs wakewords qui déclenchent différents pipelines.
Le STT est vosk (sur serveur)
Le TTS est Piper (sur serveur)

J’ai installé jusqu’ici ces pipelines sur le même RPI :

  • Wakeword « Alfred » (qui gère ma domotique) → stt → assist → tts
  • Wakeword « Samantha » (qui est une assistante IA) → stt → llm + mes datas → tts
  • Wakeword « Framboise » (qui est une domotique IA) → stt → llm + mes datas → assis → tts
  • Wakeword « Skynet » (qui est une IA dystopique et vile) → stt → llm → tts
  • Wakeword « Hal » (qui n’est jamais coopératif) → stt → réponse négative (« i’m sorry dave… »)
    Les pipelines se configurent facilement dans un fichier json : tout se pipe (pour ceux qui connaissent le shell unix)

Donc pour le moment, c’est pas 100% local et totalement ce que je voulais, mais…

Prochaines étapes :

  • installer un serveur local pour y mettre les API
  • pouvoir utiliser STT ou TTS depuis les intégrations présentes sur un HASSIO
  • commander depuis HASSIO pour activer ou non le micro selon présence dans la pièce, ou déclencher des actions sans passer par assist (ESPHome ?)
  • trouver un moyen de faire de la reconnaissance vocal pour savoir QUI lui parle, et fournir à l’IA les données de la bonne personne le cas échéant
  • tester openwakeword, et surtout savoir s’il gère plusieurs wakewords différents
  • trouver un TTS un peu plus marrant, genre capable de prendre n’importe quelle voix, et vu que j’aurai un serveur local avec un gros GPU (Bark ?)
  • une communication vers MQTT (pour plein de raisons, notamment parce que j’utilise zigbee2mqtt et que je veux pouvoir allumer/éteindre des trucs ou envoyer des notifications)
  • pouvoir utiliser plusieurs RPI dans différentes pièces et synchroniser les configs depuis un RPI maître, ou genre la config directement sur le serveur où sont les API

N’hésitez pas si vous avez des question ou si ce projet vous intéresse, c’est plutôt facile à installer. J’aime bien l’idée en cours chez Nabu Casa pour faire des satellites, mais je préfère l’idée d’un truc indépendant, qui pourrait aussi causer à HA

Je ne sais pas si tu as eu l’occasion de regarder, mais j’étais tombé là dessus, pour monter un LLM en local dans HA : GitHub - acon96/home-llm: A Home Assistant integration that allows you to control your house using an LLM running locally

C’est encore un peu jeune, mais plein de potentiel :wink:

Hello,
Tu peux être en 100 % local directement sur HASSIO ( avec les addons vosk, piper, …etc), donc à part pour le LLM , je ne comprends vraiment pas ce que tu veux obtenir. Surtout que ça communique nativement avec toutes les entités de ton HA.
Pourquoi réinventer les bases ?

Quel rapport entre les satellites ( ESP/ wyoming satellite) et le fait d’être en local ou pas?

@titoumimi : j’ai déjà un LLM et son serveur cloud que j’utilise pour des raison pros, et que j’ai déjà connecté à HA

@Krull56 : je veux pouvoir utiliser mon système sans passer par HA; HA il fait sa vie sur le RPI4, je vais pas le charger avec des trucs en plus; je veux aussi pouvoir faire du DIY genre ça https://www.youtube.com/watch?v=vQ7Hmeume9g

Le truc aussi, c’est que « Year of the voice » est pas tout fini fini, il y a de quoi s’amuser pour le moment, mais c’est pas encore ça pour plein de raisons (mon avis pour le moment)

Salut @Krull56,
tu connais un projet avec un RPI3 pour HA ?

@Krull56 : et aussi, Whisper ou Vosk sur un RPI4 c’est vraiment pas ça !! J’envisage pas un assistant qui répond en 6-8 secondes de STT
Je sais qu’il y a Nabu Casa Cloud, mais j’ai l’infra pour contourner ça.