Node-red: Traitement du flux audio

Bonjour,

Wazo Platform propose l’utilisation de node-red dans le cadre de ses apis. Mais il semble que le traitement d’un flux audio n’est pas possible.

Comment peut-on par exemple, enregistrer ce que l’interlocuteur dit en stream, dans le cadre d’un scénario ou nous utilisons un moteur speech-to-text sur node-red ?

Inversement, comment lire un stream dans l’appel provenant d’un text-to-speech node-red sans forcément le créer, puis le convertir, puis le sauvegarder sur le tenant puis le lire avec le playback ?

J’imagine que dans ce cas, il est préférable d’exécuter un programme basé sur une ligne en WebRTC ? Potentiellement, créer un plugin node-red pour connecter une ligne WebRTC et travailler avec ?

Bien à vous.

Salut,

En effet, j’ai jamais pensé à voir pour ramener le flux dans node-red, j’ai ajouté un event dans le module qui provient d’un dev qu’on avait fait dans un hackathon et qui gérait directement le flux vers google et on récupérait le résultat dans un event STT de la websocket. En tout cas c’est pas supporté actuellement, ça doit pouvoir se faire en effet, je le garde en tête si jamais un moment ça me tente de le faire. Après les PR sont aussi bienvenues pour améliorer ce module :).

Sylvain

Au-delà de ramener le flux dans node-red, déjà par l’usage d’api. J’aimerais volontiers faire un PR pour cela, mais je suis développeur web. J’ai donc aucune notion de wazo platform coté backend.

J’imagine que c’est le repo wazo-calld qui peut agir la dessus.

En imaginant un fonctionnement simple ou nous pouvons configurer une clé api (1) Google, (2) Azure ou (3) AWS dans wazo-ui en tant que moteur stt / tts.

Mode détection de mot clés

  1. POST /applications/{application_uuid}/calls/{call_id}/stt/start
  • Avec des options comme voice_timeout = 5, words_list = [sales: {sales, ventes, achat}, support: {tech, assistance, etc…}], engine = 2
  1. Event déclenché dans asterisk pour lancer la reconnaissance vocal
  2. Boucle while sur le résultat. Dès que le mot clé est détecté on émet un event avec la catégorie sinon on dit non reconnu

Mode continuité:

  1. POST /applications/{application_uuid}/calls/{call_id}/stt/start
  • Avec des options comme max_time = 0 (unlimited), engine = 2
  1. Event déclenché dans asterisk pour lancer la reconnaissance vocal
  2. On renvoi tout au traver d’un websocket / stream
  3. DELETE /applications/{application_uuid}/calls/{call_id}/stt/stop

Toutefois, je n’ai aucune compétence là-dessus, mais je pense que c’est une feature essentielle. Si seulement on avait une documentation précise, j’aurais pu me pencher dessus.

Oui j’ai ça ici : GitHub - sboily/wazo-hackathon-wazo-calld-module pour le module calld et GitHub - sboily/wazo-hackathon-asterisk-stream-module pour le module dans Asterisk. Attention j’ai pas retesté depuis un moment, c’est assez vieux. Dans node-red tu as le résultat sur le event STT. Ça marche juste avec Google.

Je vais étudier tout ça, je te tiendrai au courant.