Déclenchement vocal d'interactions via Android

Bonjour la communauté.

Pour ceux qui, comme moi, s’amusent à gérer leur maison/jeedom par la voix, peut-être cette app « maison » présentera-t-elle de l’intérêt: je l’ai appelée « domotix » en attendant mieux et elle interagit avec, eh oui, les interactions de jeedom.

Quickstart:
Une courte vidéo (https://youtu.be/zSZmVpTghXU) en indique le fonctionnement pour les pressés. Sinon, voici,résumé, le

Contexte:

  • J’ai essayé de nombreuses solutions de stt (reconnaissance vocale) mais me suis chaque fois heurté à la qualité du matériel d’enregistrement. Peut-être n’ai-je pas mis le prix, je ne me suis pas équipé non plus de microphones spatiaux ou autres produits sans doute efficaces mais aussi coûteux.
  • Google home a alors débarqué chez moi et j’ai été bluffé justement par le petit nombre de faux-positifs qu’il offrait. A partir de ce moment, en combinaison avec le plugin gsh en mode standalone (merci au concepteur), mon jeedom procure un vrai confort d’utilisation …
  • Pourquoi changer une équipe qui gagne? Parce que depuis quelque temps, des applications dans lesquelles on s’investit deviennent soit payantes (IFTTT), soit caduques (dialogflow), et ça, pour rester poli, ça me gonfle, moi qui essaie au maximum de ne pas être « cloud-dépendant ». Même GH modifie de temps en temps des paramètres de configuration et, comme dit Loïc, le mode standalone de gsh durera le temps que Google le voudra!!
  • « Fort » de cette analyse, j’ai cherché une solution pour rester en local, avoir une bonne reconnaissance vocale à bas prix, un tts tout aussi accessible, le tout donnant le moins de faux-positifs possibles. Le smartphone s’imposait.
  • MON problème: j’ai touché à une petite vingtaine de langages, en maîtrise plutôt bien 3, 4 mais me lancer dans android studio n’a pas été (et n’est toujours pas) ma tasse de thé.

Premier essai:
J’ai trouvé un bout de code basé sur « speechrecognizer » qui se lance comme un service sur smartphone et écoute donc en permanence un « wake word » (hotword,mot d’appel,etc.). Si je me souviens bien, il s’agit de l’entreprise picovoice. J’y ai ajouté (en suant sang et eau) le même code mais lancé comme app et écoutant l’ordre à transmettre à jeedom (via api http). L’app se fermait alors et redonnait le contrôle au service initial.
Ca donnait quelque chose comme :

  • Copperfield
  • oui
  • ouvre le portail
  • voilà
  • Copperfield
  • etc.

Ca marchait bien, plus de « ok google », échanges beaucoup plus naturels du coup mais… donnait quand même pas mal de faux-positifs (notamment avec les dialogues à la télé). J’ai alors fait des essais en cherchant le wake word idéal. Pour cela j’ai dû créer des comptes sur le site: on y exerce le mot d’appel (choixpeau magique, Bernardo, Vladimir, …) et on télécharge puis stocke sa signature (ou son empreinte, je ne sais plus le terme employé) dans le smartphone.
Picovoice vante son produit comme travaillant localement, donc pas de latence due au transit par le net. C’est vrai! Mais au lancement du service, je me suis rendu compte qu’une connexion internet vérifiait la validité du compte… Et là, à un moment donné, je me suis retrouvé exclu car n’ayant pas respecté les règles des conditions générales. Je me souviens leur avoir écrit que je faisais des essais et que le plan « free » devait s’appliquer. Ils m’ont répondu par la même formule lapidaire « non-respect des conditions générales ». Il y a donc un truc qui m’échappe et j’ai laissé tomber (d’autant qu’on se retrouve encore dépendant du cloud, même si ce n’est qu’au lancement et que le service fonctionnant non-stop consomme de la batterie)

Deuxième essai:
C’est alors qu’a débarqué dans ma vie l’IA, l’intelligence artificielle. Là aussi, bluffé par ses potentialités, je me suis dit que si je ne m’y entendais pas dans les arcanes d’android, je pouvais peut-être me dépatouiller en mettant bout à bout des morceaux de code générés par plus doué que moi.
C’est ainsi qu’a commencé cette aventure (que je recommande vivement!):

  1. Peux-tu me créer le code android mettant l’appareil en écoute dès le lancement de l’application, permettant le lancement de routines suivant les ordres que je donne et s’auto éteignant après 1 minute d’inactivité ?
  2. Quel code pour faire une requête de type get dans android?
  3. J’aimerais que mon app se lance avec un raccourci (touche du smartphone éventuellement)

Voilà quelques questions posées à chatgpt qui m’ont permis de partir de 0 et n’avoir que le strict minimum pour satisfaire mes besoins. On me dira à raison que du coup, le code n’est pas optimisé et qu’il consomme peut-être aussi trop de batterie. Sans doute, mais comme il n’est lancé qu’un temps limité à 30 sec, à moi, il convient comme ça.

Fonctionnement:

  • double-pression sur le bouton power (un peu comme un talkie-walkie)
  • l’app se lance et écoute
  • je donne l’ordre vocal
  • l’app transmet grâce à l’URL fournie par l’équipe jeedom l’interaction au module du même nom
  • l’app répond « ok » ou « pas compris la demande »
  • l’app écoute
  • l’app se ferme après 30 secondes
    Rem: comme j’avais écrit sur le raspberry hébergeant jeedom un programme en python relié à l’api « OPENAI », j’ai ajouté la possibilité de faire une demande vocale à chatgpt, le programme m’envoyant la réponse dans ma boîte mail.

Voilà. Je suis assez content de moi. Ce que je n’arrive pas à faire, c’est déclencher le programme même si l’écran est verrouillé (oui, je sais, c’est plus secure ainsi mais ce serait tellement plus convivial de voir une tâche exécutée juste après l’avoir demandée).

Todo:

  • je ne désespère pas de trouver un jour un moyen d’appeler domotix par la voix plutôt que par une pression sur l’icône ou une double-pression sur power…
  • pouvoir passer à travers l’écran verrouillé sans perdre la protection ce ce verrou (?)

Voici la vidéo: https://youtu.be/zSZmVpTghXU
… et l’apk pour Android >= 9.0(comme d’hab, autoriser les sources inconnues) : (https://)
[EDIT : ]… Lien désactivé ce 23 septembre, une nouvelle version totalement repensée bientôt disponible.
[EDIT 2:] J’ai procédé à une refonte complète de « domotix » rebaptisé en « jeedomix » car une recherche google m’a appris ce que je redoutais: le nom était déjà utilisé…
La philosophie générale qu’on peut lire à l’origine de ce post est maintenue mais comme le programme est désormais un service (écoute non-stop), je me détourne de domotix et me consacre désormais à jeedomix pour lequel je me suis permis un nouveau post:
Interactions par la voix sur Android.

Merci de m’avoir lu,

Claude

4 « J'aime »

Bonjour,

Merci pour le partage et bravo pour l’accomplissement.

Une question me brûle les lèvres: puisque tu utilises jeedomconnect, pourquoi ne pas avoir tester/utiliser la reconnaissance vocale incluse dans cette app et qui permet également de lancer des interactions jeedom?

Oui, c’est vrai, j’aurais dû mentionner ce merveilleux jeedomconnect dans ma présentation. Je l’ai utilisé. Pourquoi l’ai-je délaissé? Il faudrait que je m’y replonge, est-ce pour m’épargner éviter une manoeuvre (appui sur l’icône puis seulement le micro?)
Merci pour ton retour :slight_smile:

C’est vrai que plugin-jeedomconnect est vraiment TOP !
Mais ceci dit, je te comprends @leglaude car moi aussi je me fais exclure quelquefois du compte Picovoice et en plus je ne peux pas créer de wakeword perso car ils ne fonctionnent plus apparemment (changement côté pico je pense) car j’ai essayé avec un ancien (encore merci @tomitomas !) et ca ne pose pas de problème. Mais du coup vu que les wakeword standard sont en anglais je suis obligé de mettre 'presque" à fond la sensibilité dans l’appli et cela me génère évidemment des faux positifs…

Cela serait top (comme avec JC) !
Bravo pour ton travail en tout cas :+1:

PS : si quelqu’un a un wakeword Jarvis ou Alexa mais en francais sur Pico je suis preneur ! :smirk:
David

alexa.pdf (2,7 Ko)
Merci pour ton retour :slightly_smiling_face:
J’ai ce fichier qui date de février 2023. J’ai dû mettre l’extension .pdf en lieu et place de .ppn pour pouvoir le télécharger. J’espère que ça te conviendra (ce fichier est -il ou non lié au compte que j’avais à l’époque? Ne contient-il pas l’empreinte de MA voix?.. Je ne sais pas trop comment fonctionne picovoice)

Bonjour @leglaude, Merci pour ton fichier.
En fait Jeedom Connect a besoin d’un .Zip avec le fichier .ppn et un fichier.txt. (license)
J’ai donc fait un Zip avec un fichier lisence.txt que j’avais mais sans succès… :unamused:
En tout cas, merci pour ce partage ! :+1:
David

Bonjour avez vous continuer à travailler sur cette application ?

Bonjour

Oui, je maintiens mon idée d’utiliser la reconnaissance vocale d’android qui marche super bien (pour moi en tout cas - n’ayant pas de retour autre :slight_smile: - et qui n’a aucune latence par rapport à google home.
Du coup, je me lance dans une 2e application qui agirait comme un service (écoute permanente d’un mot-clé de mon choix, ex « JARVIS ») et qui lancerait domotix, lui aussi écoutant l’ordre donné (ex « allume la télé »). Le contrôle retournant à l’appli appelante au bout d’un temps t.
J’emploie le conditionnel parce que « ça marche » mais le retour au service ne se fait pas :-(. J’ai essayé plusieurs solutions proposées par ChatGPT sans succès (problèmes d’instructions obsolètes, ou au contraire nécessitant une version récente d’android…). Enfin, je ne désespère toujours pas.

Bonjour,

Super, :+1: tu utilises quoi pour la reconnaissance de mots clés ?
Cela sera configurable ?
et le temps de retour t aussi?
En tout cas, bravo pour investissement et je suis impatient si tu arrives a faire cela ! :wink:

Une classe native d’android (SpeechRecognizer) qui écoute en permanence un mot-clé, oui configurable par l’utilisateur.
Le temps t est actuellement fixé à 30 sec avant extinction de domotix (pour permettre l’envoi potentiel de plusieurs directives à jeedom) mais pourquoi pas configurable aussi…
Merci pour ton encouragement mais ma « maîtrise » android n’est pas du tout à la hauteur, les multiples tentatives de cet après-midi sont restées vaines: le retour à l’application appelante ne se fait toujours pas. Heureusement j’ai toujours domotix qui se lance d’un double appui sur power pour me consoler.
Je me mets en pause pour quelques jours du coup.

2 « J'aime »

Je réponds ici en une fois aux mails récemment reçus concernant le message d’erreur
« Vous n’êtes pas autorisé à effectuer cette action ». Il s’agit plus que probablement d’une mauvaise/incorrecte clé API: Voici les saisies d’écran qui le montrent (pour être sûrs de votre paramètre à entrer dans domotix, taper l’URL complète de votre interaction dans un navigateur (faites comme moi, quoi):

J’ai procédé à une refonte complète de « domotix » rebaptisé en « jeedomix » car une recherche google m’a appris ce que je redoutais: le nom était déjà utilisé…
La philosophie générale qu’on peut lire à l’origine de ce post est maintenue mais comme le programme est désormais un service (écoute non-stop), je me détourne de domotix et me consacre désormais à jeedomix pour lequel je me suis permis un nouveau post:
Interactions par la voix sur Android.

1 « J'aime »