Closed physicien closed 8 years ago
Côté documentation, un exemple de main.py
utilisant plusieurs hotwords est disponible ici voir Multiple Models and Callbacks.
Pour ce qui est des modèles de hotword (.pmdl
ou .umdl
), ils doivent être ajoutés au dossier ~/jarvis/stt_engines/snowboy/resources
.
Finalement, toutes nouvelle commande doit être ajouté dans le snowboydecoder.py
.
bon je me lance dans un full snowboy petite question, une fois les commandes enregistrées et ajouter a snowboydecoder, comment preciser de ne plus utiliser les autres stt?
Il faudra adapter le core de jarvis puis proposer snowboy
dans Settings > Voice recognition > For commands
. Vu que ca fait pas mal de changement à Jarvis et à snowboydecoder
je pensais le faire moi, mais si tu maitrises le code de jarvis, tu peux le faire toi et proposer un pull request
pour que je l'intègre à la branche principale du projet. Dis-moi et si oui je t'ajoute en contributeur, mais je pense qu'il ne me faut pas plus de quelques heures pour le faire.
je me suis pas mal penché sur le core mais j'ai encore du mal a voir les interactions. il semble déjà que le main ne gere que le hotword, donc j'ai augmenté les models, la je regarde snowboydecoder et Jarvis.sh je bloque sur la reco des mots apres le trigger. j'ai un echec direct "ERROR reco failed
ERROR reco failed
est affiché quand main.py ne retourne pas le bon code erreur (c'est fait maison). Honnêtement je préfère t'épargner cette galère si tu peux attendre ce weekend 😄
je reviens aux news concernant l'implémentation des commandes via snowboy
Pour l'instant je travaille sur #49 mais je commence aussi à réfléchir sur celui la. Je n'ai pas pu avancer dessus le week-end dernier, mais j'ai pas oublié 😄
⚠️ Attention, vu sur: https://snowboy.kitt.ai/docs
You can give HotwordDetector a mixture of multiple personal and universal models as long as your CPU is powerful enough to process them all.
Il y a donc bien un risque de dégrader la détection des hotwords en multipliant les modèles.
Oui, mais pour l'avoir teste sur un raspberry B+, ca ne consomme que tres peu de cpu, bon je pense que a partir de vingt ca ve se faire sentir ^^, mais pour des hotwords de secours je ne pense pas que ce soit un probleme, pour moi le probleme va etre les faux positifs, avec 5/6 hotwords ca va detecter trop souvent.
D'ou la nécessité de suivre la recommandation de snowboy
et utiliser des hotwords d'au moins 3 ou 4 syllables:
👎 Pas conseillé
👍 Conseillé
Je commence à regarder pour l'implémentation dans jarvis, c'est possible mais ca ne va pas être facile... allez je me lance!
Voici mon idée de base pour que ce soit le plus facile possible pour l'utilisateur et le mieux intégré possible:
1) Disons que l'utilisateur de Jarvis à cette commande:
[...]
ALLUME*LE*BAR=echo pl a1 on | nc localhost 1099 && say "Voilà"
[...]
2) Il n'a qu'à entrainer un nouveau hotword snowboy
et le nommer ainsi:
"Allume le bar" > allume le bar.pmdl
3) Placer les modèles dans le dossier resources
de snowboy
$> ls stt_engines/snowboy/resources/
allume_le_bar.pmdl jarvis.pmdl snowboy.umdl
4) Au lancement de jarvis, initialiser snowboydecoder
avec le trigger + tous les pmdl
5) A la détection d'un hotword, l'ordre sera le nom du fichier (sans l'extension .pmdl
)
Alex: allume le bar
6) Si c'est le trigger, on passe en mode conversation, sinon, on regarde dans les commandes:
[[ "allume le bar" == ALLUME*LE*BAR ]] # match!
7) La commande correspondante sera donc exécutée
Penses-tu rendre la commande accessible par deux chemins? Exemple, si je suis dans le mode conversation, je ne veux pas nécessairement en sortir pour lancer la commande depuis un hotword.
Bonne question, la commande sera bien entendu accessible en mode trigger et en mode conversation. Sauf qu'en mode conversation elle ne sera pas reconnue par snowboy
mais par le moteur de reconnaissance vocale choisi pour les commandes:
Jarvis: (waiting to hear "Jarvis")
Alex: allume le bar # commande rapide snowboy
Jarvis: Voilà
Jarvis: (waiting to hear "Jarvis")
Alex: jarvis
Jarvis: Oui?
Alex: allume le bar # commande bing / google / wit
Jarvis: Voilà
Ca progresse...
INFO:snowboy:Silence
"Jarvis"
INFO:snowboy:Keyword 1 detected at time: 2016-07-30 12:02:00
INFO:snowboy:Silence
[...]
"Allume le bar"
INFO:snowboy:Keyword 2 detected at time: 2016-07-30 12:02:03
INFO:snowboy:Silence
Terminé et ca fonctionne à merveille, je mets à jour la doc avant de committer
Voici comment créer des commandes rapides: https://github.com/alexylem/jarvis/wiki/snowboy#commandes-rapides
Tableau des moteurs de reconnaissance vocale mis à jour:
comment ajouter les commandes a snowboydecoder ou le reinitialiser ?? j'ai ajouté les .pmdl au dossier /resources et démarrer jarvis mais ça donne ERROR : snowboy recognition failed. j'ai besoin d'aide et merci d'avance. je suis déçu avec la mauvaise reconnaissance de bing et je veux mettre mes propres commandes
@trarizakaria Merci de créer un nouveau ticket et y 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
merci @alexylem j'ai essayé de désinstaller et réinstaller snowboy et je me trouve avec une autre erreur dés le démarrage (sans l'ajout des fichiers .pmdl )
DEBUG: models=alexa,snowboy
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
donc je crois que je vais refaire l'installation de jarvis sur un "clean" raspbian sur une autre raspberry avant d'ouvrir un ticket.
une question stp comment désinstaller jarvis proprement ainsi que ses dépendances ? je supprime seulement le dossier jarvis et je recommence le clonage. est ce la procédure correcte ??
pour
Ce n'est pas un pb, pour snowboy, voir #364 (ca devrait qd mm marcher) Pour désinstaller Jarvis, oui simplement supprimer le dossier complet. Si tu veux garder ta config, backup le dossier config. Pour supprimer toutes les dépendances, tu peux créer un ticket je pourrais mettre en place un script automatique.
Merci pour les réponses rapides. J'ai réinstallé jarvis et essayé d'enregistrer les nouveaux hotwords en local avec snowboy au lieu de les enregistrer et télécharger depuis leur site. Ça marche bien maintenant. Je ne trouve pas la reconnaissance vocale de Google sur jarvis depuis ces derniers MAJ. Je crois qu'elle est mieux que celle de bing en terme de qualité.
Je ne trouve pas la reconnaissance vocale de Google sur jarvis depuis ces derniers MAJ.
Il a été enlevé, voir #95
Quick orders are not working, even though I did exactly what you (@alexylem) explained in https://www.openjarvis.com/content/snowboy#commandes-rapides Things I did :
jarvis didn't recongnize the second trigger word or quick word Did I miss something in the above step? Is there any changes to be made in snowboydecoder as you mentioned earlier?
initialize snowboydecoderwith trigger + allpmdl
Btw awesome project @alexylem , appreciate you're work. Thanks for making it open-source.
@arjun312 : Please avoid double posting here and in #802
Est-ce qu'une personne ayant réussi à les faire fonctionner pourrait poster le résultat de jarvis -nv
, en particulier la ligne DEBUG: models=
?
Il serait intéressant d'avoir un certain nombre de commandes de base dans le cas où la connection à un serveur distant serait coupée. Pour certaines fonctions de très bas niveau, je ne pense pas qu'il soit nécessaire de passer par un serveur distant. Exemple: si je dis « Bye » dans le but de quitter Jarvis, ou encore si j'ai un thermomètre de branché à ma Pi et que je veux savoir la température qu'il fait dans la pièce. Un hotword pour rediriger vers le STT distant (Google, Wit ou PocketSphinx sur PC) et certaines commandes de base.
JARVIS
=> Trigger pour passe en mode écoute commandes avecgoogle
ouwit
ALLUME BAR
=> Commande rapide (écoute permanente, action directe)TEMPERATURE PIECE
=> Commande rapide (écoute permanente, action directe)