Auto-hébergement, DIY, Domotique, Logiciel, Synology

Utiliser Whisper pour la reconnaissance vocale de Home Assistant

Si comme moi, votre Home Assistant est installé sur un Raspberry Pi, et que vous avez testé la reconnaissance vocale intégrée, vous avez dû rapidement vous rendre compte qu’elle était difficilement utilisable, même avec la puissance (🤪) d’un Raspberry pi 5.

En pratique, les résultats sont plutôt décevants : transcriptions approximatives, latence élevée, et les actions demandées rarement correctement exécutées.

Bonne nouvelle : le protocole Wyoming, conçu par l’équipe de Home Assistant, est justement pensé pour externaliser ces traitements sur une autre machine.

La reconnaissance vocale sur Home Assistant : comment ça marche ?

La reconnaissance vocale de Home Assistant se décompose en trois étapes :

  • Wake word : détection du mot de réveil (« Hey Jarvis » par exemple)
  • STT (Speech-To-Text): transcription de la voix en texte
  • TTS (Text-To-Speech, vous l’auriez deviné) : synthèse vocale pour les réponses

Chacune de ces étapes peut tourner sur une machine différente via le Wyoming Protocol, un protocole développé pour faire communiquer ces services entre eux sur le réseau local.

Ici, le goulot d’étranglement sur un Raspberry Pi, c’est la reconnaissance vocale, très gourmande en ressources. C’est donc elle que l’on va déporter.

Dans ce tuto, nous allons utiliser un NAS Synology en utilisant faster-whisper, un modèle Whisper optimisé pour CPU, ne nécessistant pas de GPU.

Prérequis

  • Home Assistant (sur un Raspberry Pi ou autre)
  • Un NAS Synology avec Container Manager installé
  • Les deux machines sur le même réseau local
  • Architecture x86_64 sur le Synology (ous pouvez vérifier en tapant uname -m depuis un terminal)

Déployer wyoming-faster-whisper sur le Synology

Volume

Créez d’abord un dossier sur votre volume Synology, par exemple /volume1/docker/wyoming-whisper, et montez-le sur /data dans le conteneur. C’est là que les modèles seront téléchargés et mis en cache.

Déployer l’image

Ouvrez Container Manager sur votre DSM, allez dans Registre et téléchargez l’image :

rhasspy/wyoming-faster-whisper

Ensuite, créez un nouveau conteneur avec les paramètres suivants :

Port

  • Local : 10300
  • Distant : 10300

(Vous pouvez évidemment choisir le port qui vous convient : pour ma part, ayant déployé plusieurs instances de Whisper pour tests, j’ai choisi 10300, 10301, 10302 etc. permettant d’exposer à Home Assistant les différents modèles installés)

Commande

Dans le champ de commande du conteneur, collez :

--uri tcp://0.0.0.0:10300 --model base --language fr --device cpu

Choix du modèle

ModèleTailleLatence (CPU)Qualité
tiny~75 Mo~1-2 sCorrecte
base~150 Mo~3-5 sBonne
small~500 Mo~10-15 sTrès bonne

Lancez le conteneur et surveillez les logs : au premier démarrage, il va télécharger le modèle (prévoir 1 à 2 minutes), jusqu’à voir le message « Ready« .

Ajouter l’intégration Wyoming dans Home Assistant

Dans votre instance de Home Assistant, rendez-vous dans

Paramètres > Appareils et services > Ajouter une intégration > Wyoming Protocol

Renseignez :

  • Host : l’IP locale de votre Synology
  • Port : 10300

L’intégration devrait apparaître comme connectée avec le service faster-whisper disponible.

Configurer l’assistant vocal

Dernière étape : nous devons maintenant indiquer à HA d’utiliser le nouveau fournisseur de reconnaissance vocale :

Rendez-vous dans les Paramètres, puis Assistants, et enfin Home, et dans la section Speech-to-text, sélectionnez faster-whisper.

Sauvegardez : vous pouvez maintenant tester les commandes vocales, traitées localement par votre Synology !

Et le TTS (Text-To-Speech) ?

Si vous voulez aussi améliorer la voix de synthèse, vous pouvez déployer wyoming-piper de la même façon sur le port 10200, avec la voix française fr_FR-siwis-medium (~60 Mo).

Le principe est identique : image Docker, port, volume, commande, et l’intégration dans HA se fait via un second Wyoming Protocol pointant sur le port 10200.

Ressources consommées

Pour vous donner une idée de l’empreinte sur le Synology avec le modèle base :

  • CPU : pic lors de la transcription, idle le reste du temps
  • RAM : environ 500 Mo
  • Disque : environ 200 Mo (modèle + données)

Prochaine étape ? Connecter un LLM local via Ollama pour avoir un vrai agent conversationnel, mais ça, c’est pour un prochain article !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *