Las aplicaciones a menudo necesitan un bot para responder al usuario final. Las aplicaciones de Dialogflow a menudo necesitan un bot para responder al usuario final. Dialogflow te permite usar Cloud Text-to-Speech con tecnología de DeepMind WaveNet para generar respuestas de voz de tu agente. Esta conversión de respuestas de texto de intent a audio se llama salida de audio, síntesis de voz,
Puedes usar audio tanto para la entrada como para la salida cuando detectas un intent. Esto es común cuando se desarrollan apps que se comunican con los usuarios a través de una interfaz solo de audio.
Para obtener una lista de los idiomas compatibles, consulta la columna TTS en la página Idiomas.
Antes de comenzar
Esta función solo es aplicable cuando se usa la API para las interacciones del usuario final. Si usas una integración, puedes omitir esta guía.
Antes de comenzar, completa los siguientes pasos:
- Lee los conceptos básicos de Dialogflow.
- Realiza los pasos de configuración.
Crea un agente
- Ve a la consola de Dialogflow ES.
- Accede a la consola si se te solicita. Para obtener más información, consulta la descripción general de la consola de Dialogflow.
- En el menú de la barra lateral, expande Loading agents.
- Haz clic en Create new agent.
- Ingresa el nombre del agente, el idioma predeterminado y la zona horaria predeterminada.
- Ingresa un proyecto existente. Para permitir que la consola de Dialogflow cree un proyecto, selecciona Crear un proyecto de Google nuevo.
- Haz clic en Crear.
Detecta intents
Para detectar un intent, llama al método detectIntent en el tipo Sessions.
REST
1. Prepara el contenido de audio
Descarga el archivo input_audio de muestra book-a-room.wav, que dice “book a room”. El archivo de audio debe estar codificado en Base64 para este ejemplo, por lo que se puede proporcionar en la solicitud JSON a continuación.
El siguiente es un ejemplo de Linux:
wget https://cloud.google.com/dialogflow/es/docs/data/book-a-room.wav base64 -w 0 book-a-room.wav > book-a-room.b64
Para ver ejemplos en otras plataformas, consulta Cómo incorporar audio codificado en Base64 en la documentación de la API de Cloud Speech.
2. Realiza una solicitud de intent de detección
Llama al método detectIntent en el tipo Sessions y especifica el audio codificado en Base64.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud.
- SESSION_ID: Es un ID de sesión.
- BASE64_AUDIO: Es el contenido en base64 del archivo de salida anterior.
Método HTTP y URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/agent/sessions/SESSION_ID:detectIntent
Cuerpo JSON de la solicitud:
{
"queryInput": {
"audioConfig": {
"languageCode": "en-US"
}
},
"outputAudioConfig" : {
"audioEncoding": "OUTPUT_AUDIO_ENCODING_LINEAR_16"
},
"inputAudio": "BASE64_AUDIO"
}
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{
"responseId": "b7405848-2a3a-4e26-b9c6-c4cf9c9a22ee",
"queryResult": {
"queryText": "book a room",
"speechRecognitionConfidence": 0.8616504,
"action": "room.reservation",
"parameters": {
"time": "",
"date": "",
"duration": "",
"guests": "",
"location": ""
},
"fulfillmentText": "I can help with that. Where would you like to reserve a room?",
"fulfillmentMessages": [
{
"text": {
"text": [
"I can help with that. Where would you like to reserve a room?"
]
}
}
],
"intent": {
"name": "projects/PROJECT_ID/agent/intents/e8f6a63e-73da-4a1a-8bfc-857183f71228",
"displayName": "room.reservation"
},
"intentDetectionConfidence": 1,
"diagnosticInfo": {},
"languageCode": "en-us"
},
"outputAudio": "UklGRs6vAgBXQVZFZm10IBAAAAABAAEAwF0AAIC7AA..."
}
Ten en cuenta que el valor del campo queryResult.action es room.reservation y que el campo outputAudio contiene una cadena de audio en base64 grande.
3. Reproduce el audio de salida
Copia el texto del campo outputAudio y guárdalo en un archivo llamado output_audio.b64. Este archivo necesita convertirse en audio.
El siguiente es un ejemplo de Linux:
base64 -d output_audio.b64 > output_audio.wav
Para ver ejemplos en otras plataformas, consulta Cómo decodificar contenido de audio codificado en Base64 en la documentación de la API de Text-to-Speech.
Ahora puedes reproducir el archivo de audio output_audio.wav y escuchar que coincide con el texto del campo queryResult.fulfillmentMessages[1].text.text[0] anterior.
Se elige el segundo elemento fulfillmentMessages porque es la respuesta de texto de la plataforma predeterminada.
Java
Para autenticarte en Dialogflow CX, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Para autenticarte en Dialogflow CX, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Para autenticarte en Dialogflow CX, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Para obtener más información sobre los campos de respuesta relevantes, consulta la sección Respuestas de detección de intent.
Respuestas de detección de intent
La respuesta para una solicitud de detección de intent es un tipo DetectIntentResponse.
El procesamiento de la detección del intent normal controla el contenido del campo DetectIntentResponse.queryResult.fulfillmentMessages.
El campo DetectIntentResponse.outputAudio se completa con el audio en función de los valores de las respuestas de texto de la plataforma predeterminada que se encuentran en el campo DetectIntentResponse.queryResult.fulfillmentMessages:
- Si existen múltiples respuestas de texto predeterminadas, se concatenarán cuando se genere el audio.
- Si no existen respuestas de texto de la plataforma predeterminada, el contenido de audio generado estará vacío.
El campo DetectIntentResponse.outputAudioConfig se propaga con la configuración de audio usada para generar el audio de salida.
Detecta intents en una transmisión
Cuando se detecta un intent de una transmisión, envías solicitudes similares al ejemplo que no usa audio de salida: Detecta intents en una transmisión de audio.
Sin embargo, debes proporcionar un campo OutputAudioConfig a la solicitud. Los campos output_audio y output_audio_config se propagan en la respuesta de transmisión final que obtienes del servidor de la API de Dialogflow. Para obtener más información, consulta StreamingDetectIntentRequest y StreamingDetectIntentResponse.
Configuración del agente para voz
Puedes controlar varios aspectos de la síntesis de voz. Consulta la configuración de agentes.
Usa el simulador de Dialogflow
Puedes interactuar con el agente y recibir respuestas de audio a través del simulador de Dialogflow:
- Sigue las instrucciones en Configuración de voz del agente para habilitar el texto a voz automático.
- Escribe o di "reservar una habitación" ("book a room") en el simulador.
- Consulta la sección audio de salida en el simulador.