De voz a texto
El reconocimiento automático del habla (ASR) permite a las aplicaciones utilizar la voz en casos como IVR, identificación y distintos tipos de bots/asistentes de voz. Con esta función, la aplicación transcribe la voz del usuario (en forma de texto) una vez que espera que el usuario responda a una pregunta diciéndola en lugar de introduciendo dígitos (DTMF) y, a continuación, puede continuar el flujo de la llamada de acuerdo con su lógica de negocio basada en lo que ha dicho el usuario.
Nota: Este servicio es de pago. Encontrará las tarifas exactas en Precios de Voice API en "Funciones programables".
Cómo funciona
Normalmente, la ASR se utiliza junto con un mensaje de audio que se reproduce para el usuario. El mensaje puede ser un archivo de audio o Texto a vozo una combinación de ambos reproducidos secuencialmente. Para activar el ASR, NCCO debe contener un input con los parámetros de voz especificados.
Ejemplo de OCN
[
{
"action": "talk",
"text": "Hello!"
},
{
"action": "talk",
"text": "Please tell us, how can we help you today?",
"bargeIn": true
},
{
"eventUrl": [
"https://api.example.com/callbacks/events"
],
"eventMethod": "POST",
"action": "input",
"type": [ "speech" ],
"speech": {
"language": "en-gb",
"context": [
"support",
"buy",
"credit",
"account"
],
"endOnSilence": 0.5,
"saveAudio": true,
"sensitivity": "90"
}
}
]
En Guía de referencia de las OCNN contiene información sobre todos los parámetros posibles que pueden utilizarse junto con el ASR input Acción de la OCNC.
Tipo de entrada
Establecer type como speech sólo para entrada de voz, o [ "dtmf", "speech" ] aceptar tanto la palabra como DTMF.
Idioma
El idioma esperado del habla del usuario debe especificarse como el language parámetro (en-US por defecto).
Idiomas admitidos
| Idioma | Código |
|---|---|
| Afrikaans (Sudáfrica) | af-ZA |
| Albanés (Albania) | sq-AL |
| Amárico (Etiopía) | am-ET |
| Árabe (Argelia) | ar-DZ |
| Árabe (Bahréin) | ar-BH |
| Árabe (Egipto) | ar-EG |
| Árabe (Irak) | ar-IQ |
| Árabe (Israel) | ar-IL |
| Árabe (Jordania) | ar-JO |
| Árabe (Kuwait) | ar-KW |
| Árabe (Líbano) | ar-LB |
| Árabe (Marruecos) | ar-MA |
| Árabe (Omán) | ar-OM |
| Árabe (Qatar) | ar-QA |
| Árabe (Arabia Saudí) | ar-SA |
| Árabe (Estado de Palestina) | ar-PS |
| Árabe (Túnez) | ar-TN |
| Árabe (Emiratos Árabes Unidos) | ar-AE |
| Armenio (Armenia) | hy-AM |
| Azerbaiyano (Azerbaiyán) | az-AZ |
| Euskera (España) | eu-ES |
| Bengalí (Bangladesh) | bn-BD |
| Bengalí (India) | bn-IN |
| Búlgaro (Bulgaria) | bg-BG |
| Birmano (Myanmar) | my-MM |
| Catalán (España) | ca-ES |
| Chino, cantonés (tradicional, Hong Kong) | yue-hant-HK |
| Chino, mandarín (simplificado, China) | zh (cmn-hans-cn) |
| Chino mandarín (tradicional, Taiwán) | zh-TW (cmn-hant-TW) |
| Croata (Croacia) | hr-HR |
| Checa (República Checa) | cs-CZ |
| Danés (Dinamarca) | da-DK |
| Neerlandés (Bélgica) | nl-BE |
| Neerlandés (Países Bajos) | nl-NL |
| Inglés (Australia) | en-AU |
| Inglés (Canadá) | en-CA |
| Inglés (Ghana) | en-GH |
| Inglés (India) | en-IN |
| Inglés (Irlanda) | en-IE |
| Inglés (Kenia) | en-KE |
| Inglés (Nueva Zelanda) | en-NZ |
| Inglés (Nigeria) | en-NG |
| Inglés (Filipinas) | en-PH |
| Inglés (Singapur) | en-SG |
| Inglés (Sudáfrica) | en-ZA |
| Inglés (Tanzania) | en-TZ |
| Inglés (Reino Unido) | en-GB |
| Inglés (Estados Unidos) | en-US |
| Estonio (Estonia) | et-EE |
| Filipino | fil-PH |
| Finlandés (Finlandia) | fi-FI |
| Francés (Canadá) | fr-CA |
| Francés (Francia) | fr-FR |
| Gallego (España) | gl-ES |
| Georgiano (Georgia) | ka-GE |
| Alemán (Alemania) | de-DE |
| Griego (Grecia) | el-GR |
| Gujarati (India) | gu-IN |
| Hebreo (Israel) | he-IL |
| Hindi (India) | hi-IN |
| Húngaro (Hungría) | hu-HU |
| Islandés (Islandia) | is-IS |
| Indonesio (Indonesia) | id-ID |
| Italiano (Italia) | it-IT |
| Japonés (Japón) | ja-JP |
| Javanés (Indonesia) | jv-ID |
| Kannada (India) | kn-IN |
| Jemer (Camboya) | km-KH |
| Coreano (Corea del Sur) | ko-KR |
| Lao (Laos) | lo-LA |
| Letón (Letonia) | lv-LV |
| Lituano (Lituania) | lt-LT |
| Macedonio (Macedonia del Norte) | mk-MK |
| Malayo (Malasia) | ms-MY |
| Malayalam (India) | ml-IN |
| Marathi (India) | mr-IN |
| Mongol (Mongolia) | mn-MN |
| Nepalí (Nepal) | ne-NP |
| Bokmål noruego (Noruega) | nb-NO |
| Persa (Irán) | fa-IR |
| Polaco (Polonia) | pl-PL |
| Portugués (Brasil) | pt-BR |
| Portugués (Portugal) | pt-PT |
| Punjabí (Gurmukhi, India) | pa-guru-IN |
| Rumano (Rumanía) | ro-RO |
| Ruso (Rusia) | ru-RU |
| Serbio (Serbia) | sr-RS |
| Cingalés (Sri Lanka) | si-LK |
| Eslovaco (Eslovaquia) | sk-SK |
| Esloveno (Eslovenia) | sl-SI |
| Español (Argentina) | es-AR |
| Español (Bolivia) | es-BO |
| Español (Chile) | es-CL |
| Español (Colombia) | es-CO |
| Español (Costa Rica) | es-CR |
| Español (República Dominicana) | es-DO |
| Español (Ecuador) | es-EC |
| Español (El Salvador) | es-SV |
| Español (Guatemala) | es-GT |
| Español (Honduras) | es-HN |
| Español (México) | es-MX |
| Español (Nicaragua) | es-NI |
| Español (Panamá) | es-PA |
| Español (Paraguay) | es-PY |
| Español (Perú) | es-PE |
| Español (Puerto Rico) | es-PR |
| Español (España) | es-ES |
| Español (Estados Unidos) | es-US |
| Español (Uruguay) | es-UY |
| Español (Venezuela) | es-VE |
| Sundanés (Indonesia) | su-ID |
| Suajili (Kenia) | sw-KE |
| Suajili (Tanzania) | sw-TZ |
| Sueco (Suecia) | sv-SE |
| Tamil (India) | ta-IN |
| Tamil (Malasia) | ta-MY |
| Tamil (Singapur) | ta-SG |
| Tamil (Sri Lanka) | ta-LK |
| Telugu (India) | te-IN |
| Tailandés (Tailandia) | th-TH |
| Turco (Turquía) | tr-TR |
| Ucraniano (Ucrania) | uk-UA |
| Urdu (India) | ur-IN |
| Urdu (Pakistán) | ur-PK |
| Uzbeko (Uzbekistán) | uz-UZ |
| Vietnamita (Vietnam) | vi-VN |
| Zulú (Sudáfrica) | zu-ZA |
Contexto
Se pueden proporcionar algunas pistas utilizando la función context para mejorar la calidad del reconocimiento. Los valores establecidos podrían ser las palabras o frases esperadas del usuario, por ejemplo, ['one', 'two', 'three'] o ['support', 'order starship'].
Embarque
Si el usuario no llama por primera vez, es posible que ya conozca la pregunta que se le va a hacer, por lo que puede empezar a hablar incluso antes de que termine el mensaje de audio. Para ello, bargeIn del TTS (o stream - cualquiera que sea la acción utilizada para el mensaje) debe activarse.
Se recomienda que el mensaje TTS/audio inicial sea un breve saludo inicial sin activar el bargeIn para mejorar la experiencia del usuario. Si bargeIn está activado para el primer saludo inicial, entonces el usuario puede interrumpirlo inadvertidamente sin oír en absoluto el aviso, ya que el ruido de fondo puede ser interpretado por la aplicación como una interacción activa en esos primeros momentos.
Guardar audio
El audio de la voz puede almacenarse opcionalmente. Para obtener la grabación, la tecla saveAudio debe estar activado, entonces el parámetro recording_url se incluirá en la carga útil de la solicitud de devolución de llamada. Esto puede ser útil para comparar la transcripción con el audio original. Utilice la función Descargar una grabación para descargar el audio.
Ejemplo de carga útil de evento
Una vez que la OCNC input se enviará la llamada de retorno de la entrada:
{
"speech": {
"recording_url": "https://api-us.nexmo.com/v1/files/ee94a327-ab6b-4bef-86bf-cadca33343e9",
"timeout_reason": "end_on_silence_timeout",
"results": [
{
"confidence": "0.9405097",
"text": "Support"
},
{
"confidence": "0.70543784",
"text": "Supper"
},
{
"confidence": "0.5949854",
"text": "Puppy"
}
]
},
"dtmf": {
"digits": null,
"timed_out": false
},
"uuid": "529aa8f0-0ad8-42b0-ad61-b76dca18bb52",
"conversation_uuid": "CON-7347b08d-5f51-478f-bfb2-e8c3fd39509f",
"timestamp": "2020-02-07T11:42:40.933Z"
}
En el cuerpo de la respuesta, se espera una nueva OCNC que contenga las siguientes acciones del flujo de llamada basadas en la lógica de la aplicación y la entrada del usuario (speech.results.text). Véase también Referencia de Webhook para más detalles.