Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Commandes rapides avec snowboy #15

Closed
physicien opened this issue Jun 26, 2016 · 25 comments
Closed

Commandes rapides avec snowboy #15

physicien opened this issue Jun 26, 2016 · 25 comments
Assignees

Comments

@physicien
Copy link

physicien commented Jun 26, 2016

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 avec google ou wit
  • ALLUME BAR => Commande rapide (écoute permanente, action directe)
  • TEMPERATURE PIECE => Commande rapide (écoute permanente, action directe)
@alexylem alexylem reopened this Jun 26, 2016
@alexylem alexylem self-assigned this Jun 26, 2016
@physicien
Copy link
Author

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.

@NYGHOST
Copy link

NYGHOST commented Jul 20, 2016

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?

@alexylem
Copy link
Owner

alexylem commented Jul 20, 2016

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.

@NYGHOST
Copy link

NYGHOST commented Jul 20, 2016

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

@alexylem
Copy link
Owner

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 😄

@NYGHOST
Copy link

NYGHOST commented Jul 26, 2016

je reviens aux news concernant l'implémentation des commandes via snowboy

@alexylem alexylem added this to the Prochainement milestone Jul 26, 2016
@alexylem
Copy link
Owner

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é 😄

@alexylem
Copy link
Owner

alexylem commented Jul 29, 2016

⚠️ 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.

@Smanar
Copy link

Smanar commented Jul 29, 2016

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.

@alexylem
Copy link
Owner

alexylem commented Jul 29, 2016

D'ou la nécessité de suivre la recommandation de snowboy et utiliser des hotwords d'au moins 3 ou 4 syllables:

👎 Pas conseillé

  • Jarvis (2) Bon dans la pratique ca marche quand même pas trop mal 😄
  • Hé (1)
  • Al (1)
  • Bye (1)

👍 Conseillé

  • Salut Jarvis (4)
  • Hé Jarvis (4)
  • Tu es la? (3)
  • Tu m'écoutes? (3)
  • Allume le bar (4)
  • Au revoir (3)

@alexylem
Copy link
Owner

alexylem commented Jul 29, 2016

Je commence à regarder pour l'implémentation dans jarvis, c'est possible mais ca ne va pas être facile... allez je me lance!

@alexylem
Copy link
Owner

alexylem commented Jul 29, 2016

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à"
[...]
  1. Il n'a qu'à entrainer un nouveau hotword snowboy et le nommer ainsi:
    "Allume le bar" > allume le bar.pmdl
  2. Placer les modèles dans le dossier resources de snowboy
$> ls stt_engines/snowboy/resources/
allume_le_bar.pmdl jarvis.pmdl snowboy.umdl
  1. Au lancement de jarvis, initialiser snowboydecoder avec le trigger + tous les pmdl
  2. A la détection d'un hotword, l'ordre sera le nom du fichier (sans l'extension .pmdl)
Alex: allume le bar
  1. Si c'est le trigger, on passe en mode conversation, sinon, on regarde dans les commandes:
[[ "allume le bar" == ALLUME*LE*BAR ]] # match!
  1. La commande correspondante sera donc exécutée

@physicien
Copy link
Author

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.

@alexylem
Copy link
Owner

alexylem commented Jul 29, 2016

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à

@alexylem
Copy link
Owner

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

@alexylem
Copy link
Owner

Terminé et ca fonctionne à merveille, je mets à jour la doc avant de committer

@alexylem
Copy link
Owner

Voici comment créer des commandes rapides:
https://github.com/alexylem/jarvis/wiki/snowboy#commandes-rapides

Tableau des moteurs de reconnaissance vocale mis à jour:
image

@trarizakaria
Copy link

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

@alexylem
Copy link
Owner

alexylem commented Mar 2, 2017

@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

@trarizakaria
Copy link

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

@alexylem
Copy link
Owner

alexylem commented Mar 3, 2017

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.

@trarizakaria
Copy link

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é.

@alexylem
Copy link
Owner

alexylem commented Mar 3, 2017

Je ne trouve pas la reconnaissance vocale de Google sur jarvis depuis ces derniers MAJ.

Il a été enlevé, voir #95

@ghost
Copy link

ghost commented Feb 10, 2018

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 :

  1. recorded my new hotword in snowboy website.
  2. tested it.
  3. downloaded the file which is in .pmdl format with file name all in lower_case .
  4. placed it in stt_engines/snowboy/resources/
  5. restarted openjarvis as well as rpi too.

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.

@ghost ghost mentioned this issue Feb 10, 2018
@Oliv4945
Copy link
Collaborator

@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= ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants