PDA

Voir la version complète : navigation par la voix, voice recording, voice recognition



drtpro
27/11/2013, 17h32
Bonjour,
Je débute en Asterisk et j'essaie de programmer un SVI qui lit un message ( du type dites john pour joindre john, jim pour joindre jim et alphonse pour joindre alphonse ) avec interruption des que l'on parle ( donc du background detect) et appel à l'API reconnaissance vocale google speech ( ou autre?) pour reconnaitre le texte john et ensuite appeler l'extension de john, etc.

J'ai écrit ça:
exten => s,n,Monitor(gsm,voicecapture)
exten => s,n,BackGroundDetect(menu1) ; menu1 est le message 'dites john pour joindre john, etc'
exten => s,n,StopMonitor

puis je compte envoyer le fichier voicecapture-in.gsm (après conversion dans un autre format audio approprié si nécessaire) à l'API google. Ce n'est pas optimal puisqu'on risque d'enregistrer surtout du silence si le message à écouter est long. Existe il un moyen de démarrer l'enregistrement au moment ou on parle (mais pas après ) ou de nettoyer le fichier son du silence initial?


Ma question: Existe il une manière plus propre de faire la même chose?
J'ai bien vu ça: https://wiki.asterisk.org/wiki/display/AST/Speech+Recognition+API
mais j'ai l'impression qu'il faut payer une licence même pour faire tourner l'exemple.

Merci pour votre retour qui me permettrait de ne pas réinventer la roue.

guiguizmo
17/10/2017, 15h04
Bonjour,

Je cherche à faire exactement la même chose et j'ai tenté aussi la même chose que toi. As tu pu trouver une solution ?

Merci.

jean
18/10/2017, 01h29
dans ce genre ?
https://www.ibm.com/ms-en/marketplace/voice-gateway

guiguizmo
18/10/2017, 16h44
Oui l'idée est là.

Mais le mieux serait d'utiliser ce qui existe déjà (Monitor(), Google Speech Recog API etc ...)

Je suis parvenu à supprimer le silence du son enregistré par Monitor(), et à envoyer ce fichier à l'API Google. Donc ça fonctionne, mais il y a juste un petit truc qui me gène : j'aurais aimé que l'API Speech Recog travaille en arrière plan sans couper le fichier son lu.

Le fonctionnement actuel est le suivant :

- Monitor
- Lecture d'un fichier son (BackgroundDetect)
- Si l'utilisateur parle, le fichier son lu s'arrête, je nettoie le fichier enregistré par Monitor et l'envoi à Google pour une reconnaissance du texte, la reconnaissance est faite et en fonction du résultat, j'effectue telle ou telle action

Le fonctionnement voulu est le même, mais avec toute la partie traitement de la parole de l'utilisateur en arrière plan de la la lecture du fichier son. Cela permettrait de ne rien faire si la demande de l'utilisateur ne correspond à aucune action définie. Par exemple, si on lit à l'utilisateur une suite de blague, et qu'il voudrait passer rapidement à la suivante, il pourrait dire "suivant". Et dans le cas ou il dirait "précédent", cette action n'étant pas définie dans le dialplan, il ne se passerait rien et la lecture de la blague en cours continuerait.

Bref, c'est clair dans ma tête, peut être que j'explique mal par contre.

Dans tous les cas si certains d'entre vous ont des idées, elle sont les bienvenues.

YBDOMO
19/10/2017, 21h22
Bonsoir,


J'ai trouve ceci qui pourrait être intéressant

http://zaf.github.io/asterisk-speech-recog/

A+