Las aplicaciones a menudo necesitan un bot para responder al usuario final. Dialogflow Las aplicaciones suelen necesitar un bot para responder al usuario final. Dialogflow te permite usar Cloud Text-to-Speech con la tecnología de DeepMind WaveNet para generar respuestas de voz de tu agente. Esta conversión de respuestas de texto de intents en audio se denomina salida de audio, síntesis de voz,
Puedes usar audio para la entrada y 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 puramente de audio.
Para obtener una lista de los idiomas admitidos, 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 pasos que se indican a continuación:
- 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 Cargando agentes.
- 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 la intención, 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, de modo que se pueda proporcionar en la solicitud JSON que se muestra 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 Incorpora 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..."
}
Observa que el valor del campo queryResult.action es room.reservation
y el campo outputAudio contiene una cadena de audio 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 para 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 pertinentes, consulta la sección Respuestas de intents de detección.
Respuestas de detección de intent
La respuesta para una solicitud de detección de intent es un tipo DetectIntentResponse.
El procesamiento normal de intents de detección controla el contenido del campo DetectIntentResponse.queryResult.fulfillmentMessages.
El campo DetectIntentResponse.outputAudio se propaga con audio según
los valores de las respuestas de texto de la plataforma predeterminada que se encuentran en el
campo DetectIntentResponse.queryResult.fulfillmentMessages:
- Si existen varias respuestas de texto predeterminadas, se concatenan cuando se genera el audio.
- Si no existen respuestas de texto de la plataforma predeterminada, el contenido de audio generado está 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 detectas un intent a partir de una transmisión, envías solicitudes similares al ejemplo
que no usa audio de salida:
Detecta un intent a partir de una transmisión.
Sin embargo, debes proporcionar un campo OutputAudioConfig a la solicitud. Los campos output_audio y output_audio_config se
completan 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 voz del agente.
Usa el simulador de Dialogflow
Puedes interactuar con el agente y recibir respuestas de audio con el simulador de Dialogflow:
- Para habilitar la función de texto a voz automática, sigue las instrucciones que se indican en Configuración de voz del agente.
- Escribe o di "reservar una habitación" ("book a room") en el simulador.
- Consulta la sección Audio de salida en el simulador.