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

Einführung der Voice API-Spracherkennung

Zuletzt aktualisiert am May 25, 2021

Lesedauer: 3 Minuten

Vor kurzem haben wir eine neue Automatische Spracherkennungsfunktion (ASR) angekündigt, die es Ihrer Anwendung ermöglicht, zu verstehen, was Menschen sagen, wenn sie sprechen. Mit dieser Funktion können Sie eine ganze Reihe von Sprachinteraktionen erstellen, von einfachen IVRs mit Sprachnavigation bis hin zu ausgefeilten Voice Bots und Assistenten.

Mithilfe von ASR können Sie Ihren Kunden den schnellstmöglichen Service bieten, sprachbasierte Selbstbedienungsfunktionen einrichten und gleichzeitig ein hervorragendes Benutzererlebnis bieten sowie die Betriebskosten senken. In diesem Beitrag zeigen wir Ihnen, wie Sie eine einfache IVR-App erstellen, durch die ein Benutzer nur mit seiner Stimme navigieren kann.

Vonage API-Konto

Um dieses Tutorial durchzuführen, benötigen Sie ein Vonage API-Konto. Wenn Sie noch keines haben, können Sie sich noch heute anmelden und mit einem kostenlosen Guthaben beginnen. Sobald Sie ein Konto haben, finden Sie Ihren API-Schlüssel und Ihr API-Geheimnis oben auf dem Vonage-API-Dashboard.

Bevor Sie beginnen

Vergewissern Sie sich zunächst, dass Sie über ein Vonage API-Konto verfügen und eine Sprachanwendung erstellt haben.

Wir verwenden Node.js für dieses Beispiel, sowie die Express Webanwendungs-Framework und die body-parser-Pakete. Zur Vereinfachung können Sie den unten stehenden NPM-Befehl verwenden, um sie in Ihr Projekt zu installieren:

npm install express body-parser

Obwohl in diesem Beispiel Node.js verwendet wird, ist es möglich, dieselbe Funktionalität mit der von Ihnen bevorzugten Code-Sprache/dem von Ihnen bevorzugten Framework nachzubilden, indem Sie dasselbe NCCO verwenden, wie wir unten zeigen.

Schreiben des Codes

Die Spracherkennung wird durch den Befehl NCCO input Befehl aktiviert, der auch für die Erfassung von DTMF-Tönen geeignet ist. Angenommen, Sie haben Ihrer Anwendung bereits eine Nummer zugewiesen, erstellen Sie eine neue Datei namens index.js und beginnen Sie mit der Implementierung des answer Webhook wie im folgenden Code gezeigt:

'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)
})

Im obigen Codeschnipsel:

uuid ist die Kennung des Anrufs (Bein) und ein erforderlicher Parameter für diese Aktion. Sie können diese UUID aus den Antwort-Webhook-Abfrageparametern erhalten.

bargeIn: true in der Gesprächsaktion ermöglicht es dem Benutzer, jederzeit mit dem Sprechen zu beginnen, während die Text-to-Speech-Nachricht abgespielt wird, was sinnvoll sein kann, wenn der Benutzer diese Nachricht bereits bei einem früheren Anruf gehört hat.

context in der input Aktion erhöht die Genauigkeit der Spracherkennung und ist für IVR-ähnliche Fälle geeignet.

Wenn der Benutzer den Abteilungsnamen sagt und das Wort von Vonage erkannt wird, erhalten Sie einen Webhook-Rückruf an die event_url den Sie in der input Aktion angegeben haben. Der Anfragekörper für diesen Rückruf enthält die Spracherkennungsergebnisse und sieht wie folgt aus:

{
  "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"
}

Als nächstes müssen Sie einen Webhook implementieren, der entscheidet, was mit den von ASR zurückgegebenen Informationen geschehen soll:

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)
})

Im obigen Schnipsel sollten Sie die departmentNumber Werte durch andere Telefonnummern ersetzen, damit Sie einen Anruf an und von einer Ihrer Nexmo Account Nummern erhalten können.

Erstellen Sie schließlich Ihren Node.js-Server:

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

Testen Ihrer Anwendung

Um mit dem Testen vor Ort zu beginnen, müssen Sie Ihren lokalen Server für den Rest der Welt zugänglich machen, damit Ihre answer und event_url Webhooks erreicht werden können. Sie können dazu Ngrok verwenden, indem Sie die Testen mit Ngrok Anleitung in unserer Dokumentation folgen.

Rufen Sie bei laufender Anwendung die Nummer an, die mit der von Ihnen im Dashboard erstellten Anwendung verbunden ist. Sie hören die Begrüßungsnachricht mit den IVR-Optionen und können eine Verbindung zu einer Ihrer Nummern herstellen, indem Sie den Namen der Abteilung sagen.

Versuchen Sie, weitere Optionen und verschiedene Wörter zur Erfassung hinzuzufügen, z. B. anstatt die Optionen in der Begrüßung anzukündigen, halten Sie nur die Frage recht allgemein und versuchen Sie dann, die Antwort des Benutzers zu analysieren, indem Sie nach den Wörtern "Verkauf", "Support" oder sogar "Kaufen" suchen, um die IVR in einen intelligenten Assistenten zu verwandeln.

Was kommt als Nächstes?

Sollten Sie Fragen oder Feedback haben, lassen Sie es uns auf unserem Community Slack wissen oder kontaktieren Sie uns unter support@nexmo.com

Teilen Sie:

https://a.storyblok.com/f/270183/250x250/a153431b0e/victorshisterov.png
Victor ShisterovVoice API Produktmanager

Victor ist Produktmanager für Vonage Voice API mit sieben Jahren Erfahrung in der Telekommunikationsbranche und Softwareentwickler seit seiner Kindheit. Seine Leidenschaft ist es, technisch komplexe Dinge einfach zu verstehen und zu nutzen, indem er leistungsstarke APIs selbstbeschreibend und konsistent hält. Wenn er nicht gerade erfindet und programmiert, baut er maßstabsgetreue Modelle und spielt Volksmusikinstrumente.