Robin Belloncle

Projets, maison et infra, 2026, en cours

Assistant vocal local

Un assistant en français qui remplace Google Assistant dans une maison pilotée par Home Assistant. La voix reste à la maison : mot de réveil, détection de parole, transcription et dictionnaire de commandes tournent sur la tablette ou le serveur, et un modèle de langage n'est appelé qu'en dernier recours, avec le texte de la demande seulement.

La tablette écoute une demande, éteint la lampe de la télé et répond
Sur la configuration d'exemple du dépôt : la tablette écoute, éteint la lampe de la télé et répond. Rien d'un logement réel n'entre dans le moteur.

La tablette, à essayer

Une reproduction de l'écran de la tablette sur la maison d'exemple du dépôt : l'heure, la météo, la santé et la maison en 3D. Faites tourner la maison en la faisant glisser (ou avec les flèches), touchez une pièce pour ouvrir son panneau, touchez une lampe pour l'allumer ou l'éteindre. Les quatre phrases plus bas agissent dessus. Toutes les valeurs sont fictives, générées pour la page comme en mode démonstration de l'appli.

00:00

21°

Séjour et cuisine 22°, 2 allumées, musique

6 420/ 8 000 pas

Sommeil, 7 nuits, 7 h 12 cette nuit

Cœur au repos, 54 bpm

Dans le salon

Marée basse

Les Embruns

Volume du salon 32 %

Essayez une phrase

Quatre demandes sur la maison d'exemple du dépôt, et le chemin que chacune prend dans le moteur en mode normal, où le serveur de la maison transcrit avec Speech-to-Phrase. Les durées sont celles mesurées sur le vrai système. Choisissez une phrase : la tablette l'écoute, réfléchit, répond, et la maison bouge quand il y a une action.

Réponse : La lampe du salon est éteinte.

  1. Mot de réveilentendu sur la tablette, le son part seulement après
  2. Fin de phraseSilero VAD, 0,45 s de silence
  3. TranscriptionSpeech-to-Phrase, 0,9 s, phrase connue de la maison
  4. Dictionnairephrase connue, comprise en 0,1 s
  5. Intentions de Home Assistantpas sollicitées, le dictionnaire a compris
  6. Modèle de langagepas appelé
  7. Sécurité en durpas d'identifiant brut d'appareil, ni serrure ni alarme, rien à plafonner
  8. Home Assistantlight.turn_off sur light.salon

Le trajet d'une phrase

1 Réveil Mot de réveil reconnu sur l'appareil, sans réseau 2 Écoute Détection de voix, fin de phrase après 0,45 s de silence 3 Reconnaissance Speech-to-Phrase sur place, repli en ligne, puis dictionnaire 4 Contexte Qui parle, avec quel rôle, depuis quel appareil 5 Cerveau Dictionnaire d'abord, sinon un modèle de langage qui propose un appel : Claude en ligne ou Qwen local 6 Contrôles de sécurité en dur Code figé, avant tout appel à Home Assistant, que le modèle ne peut pas contourner Domaines interdits : serrures, alarme Ciblage par appareil, étageou étiquette refusé Liste blanche des services Plafond de volume réglable Occupant protégé (éteint) Heures calmes (éteintes) 7 Appel Home Assistant Un service de la liste blanche, une entité connue Plafond revérifié, puis état relu pour confirmer 8 Réponse vocale Piper sur le serveur, ou la voix d'Android, dite par l'appareil qui a entendu AUTORISÉ REFUSÉ Un refus donne une réponse vocale, sans aucun appel à Home Assistant. Occupant protégé et heures calmes sont deux réglages déjà codés, éteints pour l'instant.
Les contrôles de sécurité passent avant tout appel à Home Assistant. Une phrase fréquente passe par le dictionnaire en 0,1 seconde environ. Une phrase inconnue part au modèle avec ses outils, en 2 à 2,5 secondes, puis elle est apprise et passe ensuite par le dictionnaire.

Les machines

SATELLITES SERVEUR DE LA MAISON, TOUJOURS ALLUMÉ SERVICES EN LIGNE Appli Android Ce qui tourne sur la tablette toujours autonome option Réveilmot de réveil, sur place Fin de phraseTranscriptionDictionnaireVoix détection de voixCanary, sur la tablettecommandes de la maisonsynthèse d'Android Sécurité en durmêmes cas que le serveur Petit LLMVision LiteRT : Gemma ou Qwenvisages, désactivée Le son ne part qu'après le mot. Les actions passent par Home Assistant. Navigateur Client web, le même assistant servi par le PC fixe, pour l'instant Home Assistant et l'assistant Le système complet tourne ici, la maison se passe du reste Appli de l'assistant, le même moteur en profil serveur Liaison chiffrée avec les satellites, appareils appairés Un seul moteur, trois profils : serveur, PC, appli Fin de phraseReconnaissanceCerveauVoixPage d'administrationHome Assistant détection de voix, réveil ici seulement en optionSpeech-to-Phrase, repli Voxtral en lignedictionnaire, puis Claude en lignePiperdans Home Assistant, avec ses comptesAPI, services en liste blanche Sécurité en duravant tout appel, le modèle ne la contourne pas Claude, par l'APIVoxtral, par l'APISources publiquesMaison d'exemple Cerveau, quand ledictionnaire ne suffit pasTranscription de replide Speech-to-PhraseMétéo marine et ventinterrogées par le moteurPièces du fichier d'exempleLumières, volets, enceintesTélé, chauffage, capteurs CHIFFRÉ PC fixe, poste de développement Facultatif : la maison tourne sans lui Client webCanary et LLM localMême moteur, profil PC sur le réseau privé, PC seulLM Studio ou llama-server, Qwenessais, satellites de test LLM local, facultatif
Une colonne par machine. Le serveur de la maison, toujours allumé, porte tout le système. Le PC fixe, en pointillé, n'est qu'un poste de développement dont la maison se passe.

Ce qui tourne où

Le détail, composant par composant
ComposantMachinePoids et tempsVersion en ligne
Mot de réveil, openWakeWordTablette2,4 Mo, 25 ms par bloc sur un cœurInutile
Détection de parole, Silero VADTablette ou serveur2,3 Mo, tourne partoutInutile
Transcription, Speech-to-PhraseServeur de la maison0,7 à 1,4 s sur une petite machineRepli si rien n'est reconnu
Dictionnaire de commandesTablette ou serveurQuelques dizaines de msInutile
Voix, PiperServeur63 Mo, 0,7 s sur un petit serveurAucune
Modèle de langage, Claude HaikuEn ligne, appelé par le serveur2 à 2,5 s, environ 0,001 $ par phraseC'est lui l'alternative
Modèle local, Qwen sur llama-serverPC, facultatif6,5 Go de mémoire vidéo, 2,7 à 3,8 sClaude Haiku

Ce que j'ai décidé

Le modèle local échouait presque une fois sur deux, et le PC qui l'héberge s'éteint parfois sans prévenir. J'ai donc inversé l'ordre : le dictionnaire et les intentions de Home Assistant d'abord, le modèle seulement en repli. Chaque phrase que le modèle réussit est apprise et ne repasse plus par lui. Le serveur de la maison est le serveur nominal, le PC ne sert qu'au développement.

La sécurité est codée en dur, dans le moteur Python comme dans l'appli Android, avec les mêmes cas de test. Elle refuse un service hors de la liste blanche, un appareil visé par son identifiant brut, un volume au-delà du plafond. Elle ne s'affaiblit jamais, quel que soit le modèle qui a compris la phrase.

Comment le dépôt est tenu

Le moteur ne contient rien d'un logement réel : adresses, appareils, pièces, prénoms et mot de réveil vivent dans un dépôt de configuration à part. Les tests tournent sur une maison d'exemple. Un garde-fou refuse les secrets et les données d'usage. Les deux applications portent le même numéro de version, qui change avec le code, partout en même temps.

1 748 tests automatiques, et les mêmes cas de sécurité vérifiés sur Android.

Dépôt public en préparation Tous les projets