Snips : alternative à la reconnaissance vocale Google?


#1

J’ai l’impression que c’est une bonne nouvelle : http://linuxfr.org/news/snips-ouvre-sa-technologie-nlu

Des chances de pouvoir l’intégrer dans Gladys selon vous ?


#2

Au vue de l’article (corrige moi si je le trompe) Snips a publié la partie analyseur de texte de sa techno hors c’est justement ce que fait Gladys :stuck_out_tongue:

La partie que Gladys ne fait pas et pour laquelle on a besoin de Google c’est le speech-to-text pour transformer un son en texte :slight_smile:


#3

Tu as raison. J’espérais trop trouver une solution hors ligne, dommage !


#4

On finira par trouver ! :slight_smile:


#5

Normalement il devrait mettre en open source leur modele de speech to text au dernière nouvelle; pour information, j’ai vu qu’il y avait un module snips pour jeedom. Actuellement cela semble l’approche la plus prometteuse.


#6

Pour l’avoir vu tourner dernièrement en live, je me suis aussi demandé si on pouvait pas l’utiliser pour Gladys. Mais j’ai pas encore eu le temps de voir ça plus en détails…


#7

ça a pas l’air très compliqué, toute la doc est en ligne :slight_smile:

Si certains sont chaud pour mettre le nez dedans et tester, ça serait top !


#8

C’est pas mieux de creuser du côté de Reconnaissance vocale Wit.ai ?


#9

Je pense pas, comme je disais sur le post, Wit.ai c’est Facebook désormais et ça va être shutdown il me semble.

Snips me semble plus prometteur!


#10

Je vais creuser ! Je fais plein de python en ce moment donc ca me bote bien, et ca l’air prometteur.

D’autant plus que c’est censé marcher hors connexion, en revanche, il semblerait qu’il faille trouver une méthode pour mapper l’api Snips à l’api Gladys… a voir, je creuse le sujet !

J’avais mis en stand by la reco vocale pour cause de fiabilité, on tient peut etre la l’avenir :smiley:


#11

Je viens de débuter une formation Python.
Je suis encore totalement nul mais dès que je me sens un peu capable j’aimerai vraiment travailler avec toi sur le sujet. :slight_smile:


#12

Je ne suis pas sûr d’avoir compris. Le code du speech to text a été rendu public ?


#13

Non ce n’est pas le cas


#14

Hello,

J’ai commencé à regarder un peu le fonctionnement, et je viens avec succès de faire fonctionner la démo.

Alors, de ce que j’ai compris, j’ai installé tout sur un RPI dans ma chambre, mais on devrait pouvoir foncionner en client-serveur, car le système embarque des échanges MQTT sur mosquitto.
Donc pensé pour le multi room. :+1:

Coté Voice To Text, en fait, il semblerait que l’on doit créer des Skills (avec de phrases), le model est alors entrainé (sur les serveurs de Snips ? pas encore regardé ce point) puis une fois installé sur ton satellitte (ton client), la reconnaissance de ces phrases peut se faire, avec l’assocation à des Intents (nos commandes de service Gladys).

Cela signifie-t-il que l’on doit appeler des phrases précises, à la manière de Sarah, je ne sais pas encore.

Va falloir que je vois comment on associe ces Intents à nos Actions, comment on va pouvoir passer la main au Brain de Gladys finalement… Mais ca me semble prometteur.

La reconnaissance du wakeword “Hey snips” marche d’enfer, à voir si c’est aussi performant sur un Wakeword personnel (ie: Hey Gladys :slight_smile: )

En revanche, la voix du TTS est robotique :wink:
Car Snips peut aussi répondre, donc de la même manière, si l’on veut que les réponses viennent de Gladys, faut que je creuse.

Sinon, un type de chez Snips à du Jeedom chez lui, il a fait un Skill Jeedom et y a des discussions sur le forum Jeedom, donc les voyants sont aux vert :slight_smile:

Pour ceux qui veulent tester, suivez ce tuto :

https://snips.gitbook.io/getting-started/

En fait, tu peux installer sur un serveur déporté, l’utilitaire sam, fait en nodeJS, puis tu peux addresser tes satellites depuis ce serveur, ca me semble assez propre.

to be continued…

edit: je viens de tester “Hey Gladys” en wakeword, ca marche d’enfer aussi :smile:


#15

Alors pour répondre à certaines de tes questions, je dirais que l’idée, si on veut faire un truc “simple” dans un premier temps, c’est de récupérer les phrases catch par snips (avec les intent) et les envoyer à Gladys comme le fait gladys-voice.
Après, c’est Gladys qui gère les actions et qui peut répondre avec ses modules comme speak :wink:

Pour les phrases précise, je dirais que non. C’est comme pour Gladys. Ou plutôt DialogFlow de Google. Tu lui donnes plein de phrase en entrée histoire de l’entraîner, en lui précisant les éléments à retrouver dedans (comme un nom d’utilisateur, une date ou un lieu par exemple) ainsi que l’intent qui doit être produit.
Une fois train, tu peux lui donner une phrase autres mais qui a globalement la même structure et qui est proche et il devrait bien le classifier.
Plus il y a de phrase, mieux il s’en sort of course ^^

Enfin, ça, c’est ce que j’ai compris en regardant rapidement leur Doc et leur site il y a quelques semaines hein ^^
En tout cas, c’est cool si ça marche bien ^^

Il ne se déclenche pas trop souvent avec de faux positifs ? (Ma Gladys-voice adore démarrer dès qu’elle entend un bruit de papier plastique :rofl:)


#16

Bon, j’ai lu de la literature sur Snips ce soir, je n’ai trouvé nul part la possibilité que Snips fasse du Voice To Text afin que le brain de Gladys parse ce texte en retour.

La force de snips, c’est exactement ce que fait Gladys, c’est pour une phrase donnée, en sortir ce qu’ils appellent des “intents”.

Derrière, à chacun de coder les “apps” pour en faire quelque chose.
La ou il sont avancé, c’est que Snips sait décoder des valeurs, des dates, des localisations, du texte dans les phrases.
Tu peux dire “Je veux du rose dans ma chambre a 20% de luminosité” et c’est censé marcher.

J’ai eu aucun faux positifs pour le moment sur le Wakeword, et il me détecte à chaque fois, c’est hyper performant surle wakeword.

Je ne sais pas vraiment comment aborder la chose.
Je me dit qu’il faudrait peut etre écrire un module qui:

  • liste les phrases du brain de Gladys et transforme cela en format snips
  • lance un apprentisage snips
  • et lorsque snps envoit le résultat d’une demande, le module fasse transiter vers le bon service gladys

Je ne veux pas refaire une application snips pour chaque fonction de gladys…


#17

Un truc à tester, lorsque Snips ne reconnait pas la phrase, il te renvoit un None intent:

{
  "input": "foo bar",
  "intent": null,
  "slots": null
}

Mais dedans, on a l’input identifié, c’est à dire la phrase prononcée, on devrait pouvoir retraiter cela en passant ce champ input au brain.classify.

Peut-être que cela peut marcher, en revanche, je trouve dommage de se passer de la capacité de Snips à traiter les informations dedans.
Voici un exemple de parsing réalisé sur une phrase:

{
  "input": "Hey, lights on in the lounge !",
  "intent": {
    "intentName": "turnLightOn",
    "probability": 0.4879843917522865
  },
  "slots": [
    {
      "range": {
        "start": 22,
        "end": 28
      },
      "rawValue": "lounge",
      "value": {
        "kind": "Custom",
        "value": "living room"
      },
      "entity": "room",
      "slotName": "room"
    }
  ]
}

Snips est performant, mais du coup on bypasserait complètement le brain de Gladys…

@pierre-gilles un avis ? :smiley:


#18

Si la reconnaissance d’intent est plus puissante que celle qu’on a actuellement ( à comparer aussi avec cette lib que j’avais en tête => https://github.com/axa-group/nlp.js ), et que c’est facile à intégrer, why not utiliser snips!

Faudrait faire un petit poc et voir les implications. C’est pas forcément smart de perdre le code du brain en interne, car le brain en interne est super utile pour la reconnaissance de texte quand tu chat avec Gladys.

Après bon, on peut tout à fait faire une intégration snips à côté (qui bypass donc le brain), pas obligatoire à utiliser!


#19

Des que je rentre de vacances, j’essaye un poc.
NLP remplacerait Limdu en fait d’après toi?

Cette lib semble faire ce que snips fait… ca mérite réflexion. Et je suis clairement d’accord que le brain est utile a minima pour le chat.


#20

Pourrait remplacer oui :slight_smile: