
Homelab 15 : Home Assistant avec une voix locale, en français
L'assistant vocal de Home Assistant, Assist, est fait de pièces interchangeables : la parole en texte, un agent qui comprend, le texte en parole. Chaque pièce peut tourner à la maison. Le nôtre répond en français, sur notre propre carte graphique, et se replie sur le processeur quand un jeu ou un modèle prend la carte.
Comment ces chiffres ont été obtenus. Mesurés sur nos propres machines (voir le protocole), en général en un seul passage, vitesses relevées par le serveur lui-même ; nous ne publions pas les journaux bruts. Ce sont des ordres de grandeur sur ce matériel, pas des garanties sur le vôtre. Les chiffres extérieurs sont accompagnés de leur source.
Un peu d'histoire
Home Assistant a été lancé en 2013 par Paulus Schoutsen pour piloter une maison sans dépendre du cloud de chaque marque. En 2023, ses créateurs ont déclaré « l'année de la voix » : le protocole Wyoming pour brancher des moteurs de reconnaissance et de synthèse vocales, et Piper, une voix locale rapide. La parole peut désormais aller du micro à l'ampoule sans quitter la maison.
1. Les pièces vocales parlent Wyoming
Home Assistant parle aux moteurs vocaux par le protocole Wyoming. Le projet Rhasspy publie des conteneurs tout prêts : wyoming-whisper pour la reconnaissance (port 10300) et wyoming-piper pour la synthèse (port 10200). Ajoutez-les dans Home Assistant avec l'intégration Wyoming Protocol, puis montez un pipeline Assist qui les utilise.
wyoming-whisper: --model small-int8 --language fr --beam-size 1
wyoming-piper: --voice fr_FR-siwis-medium
Ce duo tourne sur le processeur seul. C'est le plancher : toujours là.
2. Un meilleur duo sur la carte graphique
Sur un GPU, Whisper large-v3-turbo reconnaît bien mieux, et le TTS de Kyutai parle bien plus naturellement. Mesuré sur notre carte : les deux ensemble utilisent 3,9 Go de VRAM ; sur 72 extraits de test en français, turbo a fait 8,3 % d'erreurs de mots en 0,08 s, quand large en faisait 8,5 % en 0,32 s. Turbo est aussi bon et quatre fois plus rapide : nous l'avons gardé.
3. Une adresse, deux moteurs
Home Assistant connaît une adresse par service. Un petit relais écoute là et se connecte au duo GPU quand il répond, sinon au duo CPU. Quand un jeu prend la carte (voir Libérer vos cartes graphiques pour l'IA), le duo GPU est arrêté et la maison continue de parler, juste un peu plus lentement.
4. Un modèle local pour comprendre
Pour l'agent, reliez Home Assistant à votre serveur de modèles local par une intégration de conversation qui parle l'API OpenAI (il en existe plusieurs dans HACS : choisissez-en une maintenue). Donnez au modèle les entités qu'il peut piloter, et rien de plus.
Pièges que nous avons payés
Un port publié par Docker accepte les connexions avant que le programme derrière soit prêt. Notre relais voyait le moteur GPU « en ligne » pendant ses 30 secondes de chauffe et envoyait des requêtes dans le vide. La solution : faire tourner le moteur sur le réseau de l'hôte, sur l'adresse de bouclage, pour que le port refuse tant que le serveur n'écoute pas vraiment, et que le relais se replie.
Après un redémarrage, un conteneur GPU créé avant peut ne plus atteindre la carte (un numéro de périphérique change à chaque démarrage). Le relais sert alors le duo CPU sans rien dire : dégradé, pas cassé. Recréez le conteneur, ou régénérez la description du GPU au démarrage.
Le modèle compile une partie de lui-même au démarrage et a besoin d'un compilateur C dans l'image. Sans lui, le moteur GPU ne démarre jamais.
Sources
Utile ? Dites-nous ce qu'il faut mesurer ensuite.