Comment utiliser les wakewords français de Porcupine3 sur un satellite Wyoming Raspberry

Bonjour,

Mon problème

Je souhaite pouvoir utiliser les wakewords français de Porcupine3 à la place de Openwakeword sur mon satellite Raspberry (Wyoming)

J’ai suivi le tuto suivant :

Cela fonctionne comme attendu mais la détection du wakeword n’est pas au top.

Bien que cela fonctionne aussi, je ne souhaite pas utiliser la détection du wakeword au niveau de mon Home Assistant mais en local sur mon satellite (sinon les leds du respeaker ne fonctionnent plus correctement = le module reste éclairé en jaune (en écoute) + le fait de ne pas surcharger le réseau ni home assistant).

J’ai donc voulu intégrer porcupine3 à la place d’openwakeword afin de pouvoir utiliser le mot d’activation « Mon Chouchou ».

Pour y parvenir, j’ai suivi le tuto suivant :

Puis j’ai créé le service

sudo systemctl edit --force --full wyoming-porcupine.service
[Unit]
Description=Wyoming porcupine

[Service]
Type=simple
ExecStart=/home/vocal/wyoming-porcupine3/script/run --uri 'tcp://127.0.0.1:10400' --access-key='MA-CLE-API'
WorkingDirectory=/home/vocal/wyoming-porcupine3
Restart=always
RestartSec=1

[Install]
WantedBy=default.target

Puis modifié le service wyoming-satellite :

[Unit]
Description=Wyoming Satellite
Wants=network-online.target
After=network-online.target
Requires=wyoming-porcupine.service
Requires=4mic_leds.service

[Service]
Type=simple
ExecStart=/home/vocal/wyoming-satellite/script/run --name 'my satellite' --uri 'tcp://0.0.0.0:10700' --mic-command 'arecord -r 16000 -c 1 -f S16_LE -t raw' --snd-command 'aplay -D sysdefault:CARD=vc4hdmi -r 22050 -c 1 -f S16_LE -t raw' --event-uri 'tcp://127.0.0.1:10500' --wake-uri 'tcp://127.0.0.1:10400'

WorkingDirectory=/home/vocal/wyoming-satellite
Restart=always
RestartSec=1

[Install]
WantedBy=default.target

La différence avec OpenWakeWord c’est que je ne trouve pas de clé de type

--wake-word-name 'ok_nabu'

Malheureusement, le système ne détecte que le wakeword « Porcupine ».

Voici à toute fin utile les logs :

 $ journalctl -u wyoming-satellite.service -f
Nov 11 14:15:10 raspberrypivocal systemd[1]: Started wyoming-satellite.service - Wyoming Satellite.
Nov 11 14:15:11 raspberrypivocal run[737]: INFO:root:Ready
Nov 11 14:15:12 raspberrypivocal run[737]: INFO:root:Connected to services
Nov 11 14:15:12 raspberrypivocal run[739]: Recording raw data 'stdin' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
Nov 11 14:16:00 raspberrypivocal run[737]: INFO:root:Connected to server
Nov 11 14:16:00 raspberrypivocal run[737]: INFO:root:Waiting for wake word

 $ journalctl -u wyoming-porcupine.service -f
Nov 11 14:14:53 raspberrypivocal systemd[1]: Started wyoming-porcupine.service - Wyoming porcupine.
Nov 11 14:14:58 raspberrypivocal run[560]: INFO:root:Ready

Merci par avance de votre aide :slight_smile:

Ma configuration


Raspberry Pi 3B+
Linux raspberrypivocal 6.6.51+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.51-1+rpt3 (2024-10-08) aarch64 GNU/Linux
PRETTY_NAME=« Debian GNU/Linux 12 (bookworm) »
NAME=« Debian GNU/Linux »
VERSION_ID=« 12 »
VERSION=« 12 (bookworm) »


J’ai pu utiliser le wakeword français « Mon chouchou » en modifiant le fichier main.py est en remplaçant la ligne "DEFAULT_KEYWORD=« mon chouchou » mais ce n’est pas très propre…

Donc si quelqu’un a l’astuce pour passer le bon paramètre je reste preneur ! Merci :slight_smile:

Bonjour @niimportekoi
Je ne connais pas la mise en oeuvre sur ton archi mais as-tu généré le wake word « mon choucou » sur le site Picovoice — Wake Word Detection & Keyword Spotting
Quans on utilise Porcupine sur HA pour la commande vocale, le fichier ppn généré est déposé dans le dossier HA \192.168.1.32\share\porcupine, j’imagine que tu dois aussi le déposer sur ton PI !
Bob

Bonjour @Bob,

Non c’est un des wakeword par défaut.

vocal@raspberrypivocal:~/wyoming-porcupine3 $ script/run --help
usage: __main__.py [-h] [--uri URI] [--data-dir DATA_DIR] [--custom-wake-words-dir CUSTOM_WAKE_WORDS_DIR] [--system SYSTEM] [--sensitivity SENSITIVITY] [--access-key ACCESS_KEY] [--debug] [--log-format LOG_FORMAT] [--version]

options:
  -h, --help            show this help message and exit
  --uri URI             unix:// or tcp://
  --data-dir DATA_DIR   Path to directory lib/resources
  --custom-wake-words-dir CUSTOM_WAKE_WORDS_DIR
                        Path to directory for custom wake words
  --system SYSTEM       linux or raspberry-pi
  --sensitivity SENSITIVITY
  --access-key ACCESS_KEY
                        Access key for porcupine
  --debug               Log DEBUG messages
  --log-format LOG_FORMAT
                        Format for log messages
  --version             Print version and exit

vocal@raspberrypivocal:~/wyoming-porcupine3 $ cd wyoming_porcupine3/data/resources/fr/raspberry-pi/
vocal@raspberrypivocal:~/wyoming-porcupine3/wyoming_porcupine3/data/resources/fr/raspberry-pi $ ls
 framboise_raspberry-pi.ppn  'mon chouchou_raspberry-pi.ppn'   parapluie_raspberry-pi.ppn   perroquet_raspberry-pi.ppn   tournesol_raspberry-pi.ppn


Je ne sais tout simplement pas quelle option utiliser pour qu’il le prenne en compte à la place du wakeword ‹ Porcupine › qui est par défaut.

Bonjour,
tu as porcupine1 déjà installer avec rhasspy/wyoming-satellite

image

Il ne te convient pas ?

J’éviterai les espacces déjà : ‹ mon chouchou_raspberry-pi.ppn ›
Sur HA il faut redémarrer Porcupine pour que le wake word soit prit en compte, sur ton PI, je ne saurais dire !
Bob

Bonjour @WarC0zes,

Je n’ai pas installé Rhasspy, j’ai uniquement suivi le tuto qui permet d’installer wyoming satellite et qui indique seulement comment intégrer openwakeword.

Donc je ne pense pas avoir accès à l’écran que tu montres.

EDIT :
J’ai finalement trouvé comment accéder à cet écran :

cd wyoming-satellite/
python3 -m installer

Par contre je n’ai pas réussi la procédure d’installation avec ce tuto, le wakeword ne fonctionnait pas :frowning:

J’ai intégré porcupine 3 car il semble qu’il soit un peu mieux que le 1.

@Bob Les wakeword français sont fournis de base avec le package (le nommage avec l’espace est tel quel après l’installation).

Pour clarifier, j’ai bien pu faire fonctionner le wakeword ‹ mon chouchou › mais j’ai du modifier le code python du package porcupine ce qui n’est pas propre (fichier main.py).

Je ne comprend pas qu’il n’y ai pas d’argument pour indiquer quel wakeword on veut utiliser au démarrage du service porcupine.

Pour openwakeword, il faut ajouter

--wake-word-name 'ok_nabu'

dans la définition du service wyoming satellite mais cela ne marche pas avec porcupine.

Je m’attendais donc à avoir un paramètre à ajouter dans mon service porcupine à ce niveau pour définir le wakeword que l’on veut utiliser

ExecStart=/home/vocal/wyoming-porcupine3/script/run --uri 'tcp://127.0.0.1:10400' --access-key='MA-CLE-API'

mais la commande help n’en fourni aucun :

vocal@raspberrypivocal:~/wyoming-porcupine3 $ script/run --help
usage: __main__.py [-h] [--uri URI] [--data-dir DATA_DIR] [--custom-wake-words-dir CUSTOM_WAKE_WORDS_DIR] [--system SYSTEM] [--sensitivity SENSITIVITY] [--access-key ACCESS_KEY] [--debug] [--log-format LOG_FORMAT] [--version]

options:
  -h, --help            show this help message and exit
  --uri URI             unix:// or tcp://
  --data-dir DATA_DIR   Path to directory lib/resources
  --custom-wake-words-dir CUSTOM_WAKE_WORDS_DIR
                        Path to directory for custom wake words
  --system SYSTEM       linux or raspberry-pi
  --sensitivity SENSITIVITY
  --access-key ACCESS_KEY
                        Access key for porcupine
  --debug               Log DEBUG messages
  --log-format LOG_FORMAT
                        Format for log messages
  --version             Print version and exit

T’as réussi à avancer sur ton problème avec Porcupine ?

Car moi, je galère à ce que mon RPi se mette à l’écoute avec openWakeWord !

Salut,

Je n’ai pas de problème de fonctionnement avec les briques wyoming-satellite + porcupine3 que ce soit sur RPI3B+ & Respeaker4 ou RPI Zéro 2W & Respeaker2.
Je n’ai juste toujours pas trouvé comment changer le wakeword par défaut en un autre wakeword sans modifier le code source de porcupine3 (je n’ai pas trouvé le paramètre au lancement du script), mais cela fonctionne comme je le souhaite.

Pour openwakeword, si je peux te donner un conseil, c’est de faire un test en jouant le fichier « ok_nabu.wav » que tu trouveras sur ce répo :

Personnellement, je n’arrivais pas à l’activer, je pensais que opernwakeword ne fonctionnait pas mais en fait il reconnaissait tout simplement pas mon accent (pourri) :slight_smile: alors qu’en jouant le fichier wav sur mon ordinateur à côté du raspi, il détectait au quart de tour !

J’ai vu ton problème de connectivité sur un autre forum, cela me fait penser à deux choses :

  • soit tu utilises un adaptateur (transfo) secteur qui n’est pas assez puissant (ça m’a déjà causé des pbs de WIFI par le passé sur des RPI)
  • soit un soucis de routeur : plage DHCP trop petite où trop d’appareils wifi à gérer (j’avais des décos sur des appareils wifi pas configurés en IP statique à cause de l’un puis l’autre pb)

Essai peut-être de passer ton satellite et ton serveur HA en ethernet si ce n’est pas déjà le cas.

Sinon, personnellement j’ai essayé différents tutos pour l’installation du satellite wyoming mais sans succès, celui que j’ai mis en lien par contre fonctionne bien je l’ai répété sur plusieurs appareils plusieurs fois (RPI 0 2 W / RPI3B+ & Respeaker 2/4).

1 « J'aime »