https://d226lax1qjow5r.cloudfront.net/blog/blogposts/introducing-voice-api-speech-recognition/Blog_Speech-Recognition_1200x600.png

Présentation de la reconnaissance vocale Voice API

Publié le May 25, 2021

Temps de lecture : 4 minutes

Nous avons récemment annoncé un nouveau système de reconnaissance automatique de la parole (ASR) qui permet à votre application de comprendre ce que les humains disent lorsqu'ils parlent. Cette fonctionnalité vous permet de créer une gamme complète d'interactions vocales, allant de simples IVR avec navigation vocale, à des robots et assistants vocaux sophistiqués.

En utilisant le SVI, vous pouvez fournir aux clients le service le plus rapide possible, permettre facilement des opérations de libre-service basées sur la voix, tout en offrant une expérience utilisateur supérieure et en réduisant les coûts d'exploitation. Dans cet article, nous allons vous montrer comment créer une application SVI simple dans laquelle un utilisateur peut naviguer en utilisant uniquement sa Voice.

Vonage API Account

To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.

Avant de commencer

Pour commencer, assurez-vous d'avoir un compte API Voice et d'avoir créé une application vocale.

Nous utiliserons Node.js pour cet exemple, ainsi que l'outil Express et les paquets body-parser. Pour plus de facilité, vous pouvez utiliser la commande NPM ci-dessous pour les installer dans votre projet :

npm install express body-parser

Bien que cet exemple utilise Node.js, il est possible de recréer la même fonctionnalité en utilisant votre langage de code/framework préféré en utilisant le même NCCO comme nous le montrons ci-dessous.

Rédiger le code

La reconnaissance vocale est activée par la commande NCCO input qui permet également de capturer les tonalités DTMF. En supposant que vous ayez déjà attribué un numéro à votre application, créez un nouveau fichier appelé index.js et commencez par implémenter le webhook answer comme indiqué dans le code ci-dessous :

'use strict'
 
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
const http = require('http')
 
app.use(bodyParser.json())
 
app.get('/webhooks/answer', (request, response) => {
 
  const ncco = [{
      action: 'talk',
      text: 'Thank you for calling Example Inc.! Please tell us how we can help you today. Say Sales to talk to the sales department, Support to get technical support.',
      bargeIn: true
    },
    {
      action: 'input',
      eventUrl: [
        `${request.protocol}://${request.get('host')}/webhooks/asr`
      ],
      speech: {
        uuid: [request.query.uuid],
        context: ["Sales", "Support"]
      }
    }
  ]
 
  response.json(ncco)
})

Dans l'extrait de code ci-dessus :

uuid est l'identifiant de l'appel (segment) et est un paramètre obligatoire pour cette action. Vous pouvez obtenir cet UUID à partir des paramètres de la requête du webhook de réponse.

bargeIn: true dans l'action de conversation permet à l'utilisateur de commencer à parler à tout moment pendant la lecture du message vocal, ce qui peut s'avérer utile si l'utilisateur a déjà entendu ce message lors d'un appel précédent.

context dans l'action input augmente la précision de la reconnaissance vocale et convient aux cas de type IVR.

Lorsque l'utilisateur prononce le nom du service et que le mot est reconnu par Vonage, vous recevrez un rappel de webhook à l'adresse event_url que vous avez spécifié dans l'action input action. Le corps de la requête pour ce rappel contient les résultats de la reconnaissance vocale et ressemble à ceci :

{
  "speech": {
    "timeout_reason": "end_on_silence_timeout",
    "results": [
      {
        "confidence": "0.9320692",
        "text": "sales"
      }
    ]
  },
  "dtmf": {
    "digits": null,
    "timed_out": false
  },
  "from": "15557654321",
  "to": "15551234567",
  "uuid": "abfd679701d7f810a0a9a44f8e298b33",
  "conversation_uuid": "CON-64e6c8ef-91a9-4a21-b664-b00a1f41340f",
  "timestamp": "2020-04-17T17:31:53.638Z"
}

Ensuite, vous devez implémenter un webhook qui décide de ce qu'il faut faire avec les informations renvoyées par ASR :

app.post('/webhooks/asr', (request, response) => {
 
  console.log(request.body)
 
  var department = ""
 
  if (request.body.speech.results)
    department = request.body.speech.results[0].text
 
  var departmentNumber = ""
 
  switch (department) {
    case 'sales':
      departmentNumber = "15551234561"
      break;
    case 'support':
      departmentNumber = "15551234562"
      break;
    default:
      break;
  }
 
  var ncco = ""
 
  if (departmentNumber != "") {
    ncco = [{
      "action": "connect",
      "from": "15551234563",
      "endpoint": [{
        "type": "phone",
        "number": departmentNumber
      }]
    }]
  } else {
    ncco = [{
      action: 'talk',
      text: `Sorry, we didn't understand your message. Please try again.`
    }, {
      action: 'input',
      eventUrl: [
        `${request.protocol}://${request.get('host')}/webhooks/asr`
      ],
      speech: {
        uuid: [request.body.uuid],
        context: ["Sales", "Support"]
      }
    }]
 
  }
 
  response.json(ncco)
})

Dans l'extrait ci-dessus, vous devez remplacer les valeurs departmentNumber par d'autres numéros de téléphone afin que vous puissiez recevoir un appel à destination et en provenance d'un de vos numéros de compte Nexmo.

Enfin, créez votre serveur Node.js :

const port = 3000
app.listen(port, () => console.log(`Listening on port ${port}`))

Tester votre application

Pour commencer à tester localement, vous devrez exposer votre serveur local au reste du monde de manière à ce que vos fichiers answer et event_url soient accessibles. Vous pouvez utiliser Ngrok pour ce faire en suivant la procédure suivante Tester avec Ngrok dans notre documentation.

Lorsque votre application est en cours d'exécution, appelez le numéro associé à l'application que vous avez créée dans le tableau de bord. Vous entendrez le message d'accueil avec les options IVR et pourrez vous connecter à l'un de vos numéros en prononçant le nom du service.

Essayez d'ajouter d'autres options et différents mots à capturer, par exemple, au lieu d'annoncer les options dans le message d'accueil, gardez la question assez générique et essayez ensuite d'analyser la réponse de l'utilisateur en recherchant les mots "ventes", "support" ou même "acheter" pour convertir le SVI en un assistant intelligent.

Quelle est la prochaine étape ?

Si vous avez des questions ou des commentaires, n'hésitez pas à nous en faire part sur notre Community Slack ou en nous contactant à l'adresse suivante support@nexmo.com

Partager:

https://a.storyblok.com/f/270183/250x250/a153431b0e/victorshisterov.png
Victor ShisterovChef de produit Voice API

Victor est chef de produit pour l'API Voice de Vonage, avec sept ans d'expérience dans l'industrie des télécommunications, et développeur de logiciels depuis son enfance. Il est passionné par l'idée de rendre les choses techniquement complexes faciles à comprendre et à utiliser, en faisant en sorte que les API puissantes soient auto-descriptives et cohérentes. Lorsqu'il n'invente pas et ne code pas, il construit des modèles réduits et joue d'instruments de musique folkloriques.