Hello, c’est plutôt fiable pour le moment. Après à ce stade il faut ouvrir l’assist et appuyer sur le micro pour que HA ‹ entende ›
Ensuite bien définir ses alias !
Merci,
cela fonctionne après avoir revu quelques paramètres des entités. Dont:
- définir des alias
- changer la configuration d’interrupteurs en ‹ lights ›
Par contre j’ai encore un souci avec les groupes :
j’ai des groupes pour :
- toutes les lumières,
- tous les volets,
La requête ‹ éteins les lumières › fonctionne correctement.
Mais celle pour les groupes ne fait rien, mais affiche ‹ Volets fermés ›.
Le group est défini ainsi dans groups.yaml
#group:
volets:
name: Volets
entities:
- cover.roller_shutter
- cover.roller_shutter_2
- cover.roller_shutter_2_2
- cover.roller_shutter_3
- cover.roller_shutter_4
Toute suggestion est la bienvenue.
A+
Bernard
Salut à tous ! Arrivez vous à déclencher des scripts avec assist ?
Hello,
Ca fonctionne avec allume / ouvrir en sentence.
Pour info, la prochaine version de HA intègrera lance / démarre / execute en sentences complémentaires
Tu peux en attendant creer un fichier custom
Assist - Custom Sentences - Home Assistant (home-assistant.io)
language: fr
intents:
HassTurnOn:
data:
- sentences:
- "[Lance|Démarre|Exécute] [le] [script] <name>"
requires_context:
domain: script
slots:
domain: script
response: script
@+
Edit : La sentence « démarre » fonctionne aussi
Bonjour à tous,
N’ayant pas trop suivi les développements, ça marche l’assistant vocal ou on en est toujours au stade de la bidouille ?
Hello.
Ca fonctionne très bien !
Il manque juste une amélioration de la partie Hard (mic-array avec traitement) pour que ce soit parfait. Nabu a annoncé hier soir le dev de leur propre materiel courant 2024.
Il y a une discussion sur ce sujet avec quelques astuces ici :
Projet voice control - Entraide Home Assistant - Home Assistant Communauté Francophone (hacf.fr)
ou ici :
@+
J’y vois encore de la bidouille, mais je me trompe peut-être.
Par exemple, est-ce qu’un micro comme ça pourrait fonctionner connecté sur un NUC ?
Si la bidouille c’est installer des addons, les configurer, parametrer HA, deployer du code sur ESPHome, alors HA n’est que bidouille
J’ai un mic de conférence ANKER sur mon nuc hebergeant HA , un satellite sur base de RPI + Respeaker4, 3 satellites sur base d’ESP32 et tout fonctionne.
Avec la dernière nouveauté du contexte , l’ensemble de mes équipements Assist vont entrer dans une autre dimension
A toi de te faire ta propre idée
@+
Je suis informaticien, pas électronicien, ma limite, c’est le fer à souder…
Donc pas de souci pour installer des trucs, mais pour l’instant, la synthèse n’est pas claire pour moi.
Imaginons que j’achète le micro USB indiqué ci-dessous, quelles seraient les étapes ?
- Brancher le micro sur le NUC
- Paramétrer Promox pour faire un passthrough du micro USB vers la VM HA
Et ensuite, il faut installer quoi en synthèse ? quelles sont les étapes ?
Pour l’utilisation d’un mic usb sur HA, tu as l’info dans le chapitre 4
Year of the Voice - Chapter 4: Wake words - Home Assistant (home-assistant.io)
Ca consiste à installer l’addon Assist-Microphone
Pour la partie générale, installer wyoming , piper pour le TTS, pour le STT faster -whisper ou Vosk ( mon préféré) pour être en local sinon via l’abo nabu-casa, 1 ou plusieurs moteurs de wakeword ( openwakeword, porcupine1, porcupine, snowboy) .
Puis configurer un ou plusieurs assistants avec les pipeline/wakeword de ton choix
En effet, ça ne s’invente pas ! merci pour la synthèse
Autre question, il n’y a pas de contre-indications particulières concernant le micro ? Si je prends un combiné micro-haut-parleur comme ici, ça devrait fonctionner ?
https://www.amazon.fr/gp/product/B09FJ7LWX4/ref=ox_sc_act_title_2
C’est ce modèle que j’utilise connecté à mon NUC
Il est conseillé de mettre à jour son firmware
J’ai réussi à installer tout le bazar (encore merci @Krull56 pour m’avoir donné les pointeurs) et globalement ca fonctionne, sauf que l’assistate (« tournesol ») ne me laisse pas le temps de parler.
Ce qui fonctionne:
- porcupine1 (reconnaît le mot clef « tournesol »)
- Speak to Text: Vosk reconnaît bien ce que je dis
- Text to Speech: Piper qui me dit bien sur le haut-parleur qu’elle n’a rien compris.
Un des problème semble venir de la partie wav qui est coupée dès qu’il y a un 10ème de seconde de blanc, voilà par exemple ce que me traduit vosk dans les log pour la phrase tournesol allume prise tulipe:
DEBUG:root:Unexpected event: type=transcribe, data={'language': 'fr'}
DEBUG:root:Loaded recognizer in 0.00 second(s)
DEBUG:root:Transcript for client 4852291918306: **tournesol aller**
DEBUG:root:Client disconnected: 4852291918306
DEBUG:root:Client connected: 4868515555377
DEBUG:root:Sent info to client: 4868515555377
DEBUG:root:Client disconnected: 4868515555377
DEBUG:root:Client connected: 4886848877064
DEBUG:root:Unexpected event: type=transcribe, data={'language': 'fr'}
DEBUG:root:Loaded recognizer in 0.00 second(s)
DEBUG:root:Transcript for client 4886848877064: tournesol
DEBUG:root:Client disconnected: 4886848877064
DEBUG:root:Client connected: 4900408908370
DEBUG:root:Unexpected event: type=transcribe, data={'language': 'fr'}
DEBUG:root:Loaded recognizer in 0.00 second(s)
DEBUG:root:Client connected: 4900850699370
DEBUG:root:Sent info to client: 4900850699370
DEBUG:root:Transcript for client 4900408908370: tournesol allume
DEBUG:root:Client disconnected: 4900408908370
DEBUG:root:Client disconnected: 4900850699370
Voilà ce que j’ai mis pour Vosk:
Pour Microphone Assist:
Et la log de Microphone Assit:
DEBUG:__main__:Waiting for speech
DEBUG:__main__:Speech detected
DEBUG:homeassistant_satellite.remote:{'type': 'auth_required', 'ha_version': '2023.12.3'}
DEBUG:homeassistant_satellite.remote:{'type': 'auth_ok', 'ha_version': '2023.12.3'}
DEBUG:homeassistant_satellite.remote:{'id': 1, 'type': 'result', 'success': True, 'result': None}
DEBUG:homeassistant_satellite.remote:{'id': 1, 'type': 'event', 'event': {'type': 'run-start', 'data': {'pipeline': '01gzmfs3e6gxksrd5v4vsqseg2', 'language': 'fr', 'runner_data': {'stt_binary_handler_id': 1, 'timeout': 300}}, 'timestamp': '2023-12-18T17:14:28.348212+00:00'}}
DEBUG:homeassistant_satellite.remote:{'id': 1, 'type': 'event', 'event': {'type': 'wake_word-start', 'data': {'entity_id': 'wake_word.porcupine1', 'metadata': {'format': 'wav', 'codec': 'pcm', 'bit_rate': 16, 'sample_rate': 16000, 'channel': 1}, 'timeout': 3}, 'timestamp': '2023-12-18T17:14:28.348317+00:00'}}
DEBUG:__main__:wake_word-start {'entity_id': 'wake_word.porcupine1', 'metadata': {'format': 'wav', 'codec': 'pcm', 'bit_rate': 16, 'sample_rate': 16000, 'channel': 1}, 'timeout': 3}
DEBUG:homeassistant_satellite.remote:{'id': 1, 'type': 'event', 'event': {'type': 'wake_word-end', 'data': {'wake_word_output': {'wake_word_id': 'tournesol', 'timestamp': 1020}}, 'timestamp': '2023-12-18T17:14:29.242428+00:00'}}
DEBUG:__main__:wake_word-end {'wake_word_output': {'wake_word_id': 'tournesol', 'timestamp': 1020}}
DEBUG:root:play ffmpeg: ['ffmpeg', '-i', '/usr/src/sounds/awake.wav', '-f', 'wav', '-ar', '22050', '-ac', '1', '-filter:a', 'volume=0.5', '-']
DEBUG:root:play: ['aplay', '-r', '22050', '-c', '1', '-f', 'S16_LE', '-t', 'raw']
Playing raw data 'stdin' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
DEBUG:homeassistant_satellite.remote:{'id': 1, 'type': 'event', 'event': {'type': 'stt-start', 'data': {'engine': 'stt.vosk', 'metadata': {'language': 'fr', 'format': 'wav', 'codec': 'pcm', 'bit_rate': 16, 'sample_rate': 16000, 'channel': 1}}, 'timestamp': '2023-12-18T17:14:29.242519+00:00'}}
DEBUG:__main__:stt-start {'engine': 'stt.vosk', 'metadata': {'language': 'fr', 'format': 'wav', 'codec': 'pcm', 'bit_rate': 16, 'sample_rate': 16000, 'channel': 1}}
DEBUG:homeassistant_satellite.remote:{'id': 1, 'type': 'event', 'event': {'type': 'stt-vad-start', 'data': {'timestamp': 725}, 'timestamp': '2023-12-18T17:14:29.251656+00:00'}}
DEBUG:__main__:stt-vad-start {'timestamp': 725}
DEBUG:homeassistant_satellite.remote:{'id': 1, 'type': 'event', 'event': {'type': 'stt-vad-end', 'data': {'timestamp': 1655}, 'timestamp': '2023-12-18T17:14:31.015415+00:00'}}
DEBUG:__main__:stt-vad-end {'timestamp': 1655}
DEBUG:homeassistant_satellite.remote:{'id': 1, 'type': 'event', 'event': {'type': 'stt-end', 'data': {'stt_output': {'text': 'tournesol'}}, 'timestamp': '2023-12-18T17:14:31.286421+00:00'}}
DEBUG:__main__:stt-end {'stt_output': {'text': 'tournesol'}}
DEBUG:root:play ffmpeg: ['ffmpeg', '-i', '/usr/src/sounds/done.wav', '-f', 'wav', '-ar', '22050', '-ac', '1', '-filter:a', 'volume=0.5', '-']
DEBUG:root:play: ['aplay', '-r', '22050', '-c', '1', '-f', 'S16_LE', '-t', 'raw']
Playing raw data 'stdin' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
DEBUG:homeassistant_satellite.remote:{'id': 1, 'type': 'event', 'event': {'type': 'intent-start', 'data': {'engine': 'homeassistant', 'language': 'fr', 'intent_input': 'tournesol', 'conversation_id': None, 'device_id': None}, 'timestamp': '2023-12-18T17:14:31.286499+00:00'}}
DEBUG:__main__:intent-start {'engine': 'homeassistant', 'language': 'fr', 'intent_input': 'tournesol', 'conversation_id': None, 'device_id': None}
DEBUG:homeassistant_satellite.remote:{'id': 1, 'type': 'event', 'event': {'type': 'intent-end', 'data': {'intent_output': {'response': {'speech': {'plain': {'speech': "Désolé, je n'ai pas compris", 'extra_data': None}}, 'card': {}, 'language': 'fr', 'response_type': 'error', 'data': {'code': 'no_intent_match'}}, 'conversation_id': None}}, 'timestamp': '2023-12-18T17:14:31.480389+00:00'}}
DEBUG:__main__:intent-end {'intent_output': {'response': {'speech': {'plain': {'speech': "Désolé, je n'ai pas compris", 'extra_data': None}}, 'card': {}, 'language': 'fr', 'response_type': 'error', 'data': {'code': 'no_intent_match'}}, 'conversation_id': None}}
DEBUG:homeassistant_satellite.remote:{'id': 1, 'type': 'event', 'event': {'type': 'tts-start', 'data': {'engine': 'tts.piper', 'language': 'fr_FR', 'voice': 'fr_FR-siwis-medium', 'tts_input': "Désolé, je n'ai pas compris"}, 'timestamp': '2023-12-18T17:14:31.480446+00:00'}}
DEBUG:__main__:tts-start {'engine': 'tts.piper', 'language': 'fr_FR', 'voice': 'fr_FR-siwis-medium', 'tts_input': "Désolé, je n'ai pas compris"}
DEBUG:homeassistant_satellite.remote:{'id': 1, 'type': 'event', 'event': {'type': 'tts-end', 'data': {'tts_output': {'media_id': "media-source://tts/tts.piper?message=D%C3%A9sol%C3%A9,+je+n'ai+pas+compris&language=fr_FR&voice=fr_FR-siwis-medium", 'url': '/api/tts_proxy/393247aa3dd2cd24b4ee2f8550489431d86f0c02_fr-fr_1e55c50379_tts.piper.mp3', 'mime_type': 'audio/mpeg'}}, 'timestamp': '2023-12-18T17:14:31.480755+00:00'}}
DEBUG:__main__:tts-end {'tts_output': {'media_id': "media-source://tts/tts.piper?message=D%C3%A9sol%C3%A9,+je+n'ai+pas+compris&language=fr_FR&voice=fr_FR-siwis-medium", 'url': '/api/tts_proxy/393247aa3dd2cd24b4ee2f8550489431d86f0c02_fr-fr_1e55c50379_tts.piper.mp3', 'mime_type': 'audio/mpeg'}}
DEBUG:root:play ffmpeg: ['ffmpeg', '-i', 'http://192.168.100.175:8123/api/tts_proxy/393247aa3dd2cd24b4ee2f8550489431d86f0c02_fr-fr_1e55c50379_tts.piper.mp3', '-f', 'wav', '-ar', '22050', '-ac', '1', '-filter:a', 'volume=0.5', '-']
DEBUG:root:play: ['aplay', '-r', '22050', '-c', '1', '-f', 'S16_LE', '-t', 'raw']
Playing raw data 'stdin' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
DEBUG:homeassistant_satellite.remote:{'id': 1, 'type': 'event', 'event': {'type': 'run-end', 'data': None, 'timestamp': '2023-12-18T17:14:31.480781+00:00'}}
DEBUG:__main__:run-end None
DEBUG:homeassistant_satellite.remote:Pipeline finished
DEBUG:__main__:Waiting for speech
Une piste ? une idée ? une confif à me proposer de tester ?
Merci à tous !
Hello
Dans la config de Assist-Microphone , j’ai -1 dans le wake buffer seconds (et pas 30 secondes )
Merci, ça marche effectivement beaucoup mieux comme ça !
2 petites questions:
-
Quel modèle pour Vosk ? Pour l’instant, j’ai pris celui-ci: vosk-model-fr-0.22.zip mais il y a peut-être mieux ?
-
Piper me hurle assez souvent qu’il n’a pas compris, il y aurait un moyen quelque part de baisser le volume ? Mon micro/HP Anker S330 est connecté sur un NUC avec Proxmox.
Le modèle, c’est le coeur du système IA, c’est ce qui a été entrainé à faire une tâche à partir de données existantes.
Dans le cas de Vosk, le modèle, c’est ce qui a été entrainé pour faire la détection de voix la plus fiable possible, il y a des modèles entraînés à faire de la reconnaissance en anglais, en espagnol, en français.
Et ici, plusieurs modèles sont proposés:
La question est de savoir lequel est le plus fiable entre:
French | ||||
---|---|---|---|---|
vosk-model-small-fr-0.22 | 41M | 23.95 (cv test) 19.30 (mtedx) 27.25 (podcast) | Lightweight wideband model for Android/iOS and RPi | Apache 2.0 |
vosk-model-fr-0.22 | 1.4G | 14.72 (cv test) 11.64 (mls) 13.10 (mtedx) 21.61 (podcast) 13.22 (voxpopuli) | Big accurate model for servers | Apache 2.0 |
French Other | ||||
vosk-model-small-fr-pguyot-0.3 | 39M | 37.04 (cv test) 28.72 (mtedx) 37.46 (podcast) | Lightweight wideband model for Android and RPi trained by Paul Guyot | CC-BY-NC-SA 4.0 |
vosk-model-fr-0.6-linto-2.2.0 | 1.5G | 16.19 (cv test) 16.44 (mtedx) 23.77 (podcast) 0.4xRT | Model from LINTO project | AGPL |
Le modèle doit être dézippé ici: