alexylem / jarvis

Jarvis.sh is a simple configurable multi-lang assistant.
http://openjarvis.com
MIT License
810 stars 197 forks source link

Problème de détection du Hotword #507

Closed schnibel closed 7 years ago

schnibel commented 7 years ago

Bonjour, J'espère sincèrement que je ne pollue pas le fil pour rien. J'ai fait plusieurs recherches sur ma problématique mais ça ne la résoud pas. S'il existe bien des discussions autour de ça, je m'en excuse par avance.

Mon problème est le suivant : J'ai des très grosses difficultés à passer l'étape de reconnaissance du hotword via Snowboy. Il me faut entre 15 et 20 tentatives pour passer cette étape. Une fois l'étape passée, j'ai un taux de reconnaissance qui est de l'ordre de 90% (via Bing). donc c'est frustrant, et ma femme se marre bien parce qu'elle me dit qu'il fait bien ce que je demande, mais seulement quand il a envie de le faire :)

J'ai essayé plusieurs choses :

J'ai bien récupéré les tokens pour Bing et Snowboy et je les ai renseigné bien entendu. J'ai même vérifié dans les fichiers directement, c'est correctement renseigné.

Je suis sous Raspberry 3, avec un Jabra 510 connecté en USB. en mode Troubleshooting, j'entends bien mes phrases complètes, ce qui enlève donc tout un tas de problèmes comme mentionné dans plusieurs posts ici. et enfin, je n'ai pas un fort accent du terroir qui pourrait expliquer la non compréhension.

Voilà, je crois que j'ai tout dit... Pourriez-vous m'aider s'il vous plait :) Merci d'avance

alexylem commented 7 years ago

Ca vient peut-être de la config de ton JABRA, voir #65 et #245

Ca serait aussi intéressant d'avoir le résultat de:

rec /tmp/test.wav
# parle quelques seconds puis Ctrl+C
play /tmp/test.wav

Et vérifie que tu t'entends bien clairement.

Tu pourrais aussi tester ton hotword directement en ligne sur le site: https://snowboy.kitt.ai/dashboard image

Sinon tu peux nous coller le résultat complet de la console après avoir lancé Jarvis en mode Troubleshooting, ou partage une session de ton terminal en utilisant asciinema:

sudo apt-get install -y asciinema && asciinema rec # start session recording
./jarvish.sh -nv # start jarvis directly in troubleshooting mode
Ctrl+D # stop recording
y # yes to upload and get URL to paste here
schnibel commented 7 years ago

Bonjour Alex, Merci pour ta réponse ultra rapide. J'ai fait le test avec le rec et le play, ça se passe très bien. Pas de coupure et c'est clair. J'avais déjà appliqué les #65 et #245, mais ça n'avait pas changé le comportement.

J'avais aussi testé en ligne les hotwords, ça s'était bien déroulé avec ceux que j'avais créé. Par contre, grâce à ton message, j'en ai profité pour récupérer le hotword "jarviss", j'ai fait l'enregistrement et téléchargé le .pmdl. Je viens de déplacer tous les fichiers .pmdl et .umdl présents dans tt_engines/snowboy/resources vers un répertoire de sauvegarde, et j'ai juste mis le nouveau fichier jarviss.pmdl, et reconfiguré le tout. J'ai aussi mis la sensibilité sur 0.45 et le résultat c'est que ça marche bien mieux qu'avant... maintenant il reconnait mon hotword au bout de 4 ou 5 essais... donc cool :)

Voici ce qui sort de la console

pi@jarvis:~/jarvis $ ./jarvis.sh 
cat: /proc/asound/cardr/id: Aucun fichier ou dossier de ce type

------------ Config ------------
jv_branch            master 
jv_version           17.03.26 
jv_arch              armv7l 
jv_os_name           raspbian 
jv_os_version        8 
language             fr_FR 
play_hw              jabra 
rec_hw               hw:1,0 
speaker               
microphone           GN Netcom  
recorder             sox 
trigger_stt          snowboy 
command_stt          bing 
tts_engine           svox_pico 
--------------------------------

DEBUG: program_startup hook
jarviss: Bonjour. Heureux de vous revoir.
DEBUG: start_speaking hook
DEBUG: stop_speaking hook
jarviss: Waiting to hear 'jarviss'
christophe: (listening...)
DEBUG: models=jarviss
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
INFO:snowboy:Ticks: [2, 20, 5, -1]
INFO:snowboy:Keyword 1 detected at time: 2017-03-28 14:25:12
INFO:snowboy:Ticks status: 2 7 0 1
DEBUG: modelid=0
jarviss
DEBUG: entering_cmd hook
jarviss: Je vous écoute !
DEBUG: start_speaking hook
DEBUG: stop_speaking hook
christophe: (listening...)
DEBUG: start_listening hook
utils/timeout.sh 10 rec -V1 -q -r 16000 -c 1 -b 16 -e signed-integer --endian little /dev/shm/jarvis-record.wav gain 10 silence 1 0.1 1 1 0.5 1 trim 0 5
DEBUG: speech duration was 20 (10 = 1 sec)
DEBUG: stop_listening hook
DEBUG: curl https://speech.platform.bing.com/recognize/query?version=3.0&requestid=20f5f7b2-fb2c-4ae7-8ec3-66053b5e2404&appid=D4D52672-91D7-4C74-8AD8-42B1D98141A5&format=json&locale=fr-FR&device.os=linux&scenarios=ulm&instanceid=E043E4FE-51EF-4B74-8133-B728C4FEA8AA&result.profanitymarkup=0
DEBUG: json={"version":"3.0","header":{"status":"success","scenario":"ulm","name":"ajoute le message suivant coucou comment ça va","lexical":"ajoute le message suivant coucou comment ça va","properties":{"requestid":"3ff5eb5f-ca4a-400c-9db7-ec63504e6b74","HIGHCONF":"1"}},"results":[{"scenario":"ulm","name":"ajoute le message suivant coucou comment ça va","lexical":"ajoute le message suivant coucou comment ça va","confidence":"0.9451393","properties":{"HIGHCONF":"1"}}]}
ajoute le message suivant coucou comment ça va
$> say "Message ajouté" && "$(curl -G --fail --silent "http://127.0.0.1:8080/AddMemo?memoTitle=messages" --data-urlencode "item=${BASH_REMATCH[1]}")"
jarviss: Message ajouté
DEBUG: start_speaking hook
DEBUG: stop_speaking hook
./jarvis.sh: ligne 626: {"status":"success","item":{"memoTitle":"messages","level":"INFO","item":"coucou comment ca va","timestamp":"2017-03-28T12:25:25.896Z"}} : commande introuvable
jarviss: Ouh là là, il y a eu une erreur
DEBUG: start_speaking hook
DEBUG: stop_speaking hook
christophe: (listening...)
DEBUG: start_listening hook
utils/timeout.sh 10 rec -V1 -q -r 16000 -c 1 -b 16 -e signed-integer --endian little /dev/shm/jarvis-record.wav gain 10 silence 1 0.1 1 1 0.5 1 trim 0 5
DEBUG: speech duration was 18 (10 = 1 sec)
DEBUG: stop_listening hook
play FAIL formats: can't open output file `default': snd_pcm_hw_params error: Input/output error
ERROR: play command failed
HELP: Verify your speaker in Settings > Audio > Speaker

DEBUG: program_exit hook

Merci encore pour votre aide.

PS : Ne focalise pas sur l'erreur "commande introuvable", je vais investiguer après. Cela fait suite à une commande que j'envoie à un serveur distant et qui répond "{"status":"success","item":{"memoTitle":"messages","level":"INFO","item":"coucou comment ca va","timestamp":"2017-03-28T12:25:25.896Z"}}". Tout se passe bien du côté du serveur, mais Jarvis semble vouloir faire quelque chose avec la réponse renvoyée.

alexylem commented 7 years ago

Si ca marche au 4ème ou 5ème essai c'est que ca vient clairement de l'entrainement de ton hotword.

schnibel commented 7 years ago

Je confirme, je viens de refaire des entrainements, et ça se passe beaucoup mieux. avec Snowboy, j'ai essayé de très nombreuses fois, ça passait très mal, même à l'américaine :) là, j'ai Jarviss, et ça se passe bien avec mes enfants et moi, mais encore mal avec ma femme. On peut clore l'issue selon moi :)

merci pour ton aide...

wikijm commented 7 years ago

@schnibel Content que cela fonctionne pour toi désormais 👍 Je clôture pour cette fois, mais sache que tu es en mesure de clôturer toi-même les tickets que tu as crée (simple clic sur le bouton "Close and comment" en bas de page).

schnibel commented 7 years ago

Merci, je ne savais pas, sinon je l'aurais fait :) je ferai mieux la prochaine fois :)

wikijm commented 7 years ago

Pas de soucis, GitHub demande un petit temps de prise en main 😉

alexylem commented 7 years ago

ça se passe bien avec mes enfants et moi, mais encore mal avec ma femme

L'entrainement est fait avec ta voix. C'est normal que ca ne marche pas (ou au mieux moins bien) avec la voix des autres. Pour cela, je te conseille d'upvoter #190