Muitas vezes, os aplicativos precisam de um bot para responder ao usuário final. O Dialogflow pode usar o Cloud Text-to-Speech com a tecnologia DeepMind WaveNet (em inglês) para gerar respostas de fala do seu agente. Essa conversão de respostas de texto de intent para áudio é conhecida como saída de áudio, síntese de fala, conversão de texto em voz ou TTS.
Neste guia, você verá um exemplo que usa áudio para entrada e saída ao detectar uma intent. Este caso de uso é comum ao desenvolver aplicativos que se comunicam com usuários por meio de uma interface exclusivamente de áudio.
Para uma lista de idiomas compatíveis, consulte a coluna TTS na página "Idiomas".
Antes de começar
Este recurso só é relevante quando se usa a API para interações do usuário final. Se você estiver usando uma integração, ignore este guia.
Faça o seguinte antes de ler este guia:
- Leia os Conceitos básicos do Dialogflow.
- Execute as etapas de configuração.
Criar um agente
Se você ainda não criou um agente, crie um agora:
- Acesse o console do Dialogflow ES.
- Se solicitado, faça login no Console do Dialogflow. Para mais informações, consulte a Visão geral do Console do Dialogflow.
- Clique em Criar agente no menu da barra lateral à esquerda. Se você já tiver outros agentes, clique no nome do agente, role até a parte inferior da página e clique em Criar novo agente.
- Digite o nome do agente, o idioma padrão e o fuso horário padrão.
- Se você já tiver criado um projeto, insira-o. Se você quiser permitir que o Console do Dialogflow crie o projeto, selecione Criar um novo projeto do Google.
- Clique no botão Criar.
Importar o arquivo de exemplo para seu agente
As etapas deste guia fazem considerações sobre o agente. Portanto, você precisa importar um agente preparado para este guia. Ao importar, essas etapas usam a opção restaurar, que substitui todas as configurações, intents e entidades do agente.
Para importar o arquivo, siga estas etapas:
- Faça o download do arquivo
room-booking-agent.zip. - Acesse o console do Dialogflow ES.
- Selecione seu agente.
- Clique no botão de configurações settings ao lado do nome do agente.
- Selecione a guia Exportar e importar.
- Selecione Restaurar do zip e siga as instruções para restaurar o arquivo zip que você baixou.
Detectar intent
Para detectar a intent, chame o método detectIntent no tipo Sessions.
REST
1. Preparar o conteúdo de áudio
Faça o download do arquivo de áudio de entrada de amostra book-a-room.wav, que diz "book a room".
O arquivo de áudio precisa ser codificado em base64 para este exemplo. Assim, será possível fornecê-lo na solicitação JSON abaixo.
Veja a seguir um exemplo do 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 exemplos em outras plataformas, consulte Como incorporar o áudio com codificação Base64 na documentação da API Cloud Speech.
2. Fazer a solicitação de detecção de intent
Chame o método detectIntent no tipo Sessions e especifique o áudio com codificação Base64.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto do Google Cloud
- SESSION_ID: um código da sessão.
- BASE64_AUDIO: conteúdo em base64 do arquivo de saída acima
Método HTTP e URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/agent/sessions/SESSION_ID:detectIntent
Corpo JSON da solicitação:
{
"queryInput": {
"audioConfig": {
"languageCode": "en-US"
}
},
"outputAudioConfig" : {
"audioEncoding": "OUTPUT_AUDIO_ENCODING_LINEAR_16"
},
"inputAudio": "BASE64_AUDIO"
}
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{
"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..."
}
Observe que o valor do campo queryResult.action é room.reservation, e o campo outputAudio contém uma grande string de áudio base64.
3. Reproduzir o áudio de saída
Copie o texto do campo outputAudio e salve-o em um arquivo chamado output_audio.b64.
Esse arquivo precisa ser convertido em áudio.
Veja a seguir um exemplo do Linux:
base64 -d output_audio.b64 > output_audio.wav
Para ver exemplos em outras plataformas, consulte Como decodificar conteúdo de áudio em Base64 na documentação da API Text-to-speech.
Agora é possível reproduzir o arquivo de áudio output_audio.wav e saber se ele corresponde ao texto do campo queryResult.fulfillmentMessages[1].text.text[0] acima.
O segundo elemento fulfillmentMessages é escolhido, porque é a resposta de texto para a plataforma padrão.
Java
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Consulte a seção Detectar respostas de intent para uma descrição dos campos de resposta relevantes.
Detectar respostas de intent
A resposta de uma solicitação de detecção de intent é um tipo DetectIntentResponse.
O processamento normal de detecção de intent controla o conteúdo do campo DetectIntentResponse.queryResult.fulfillmentMessages.
O campo DetectIntentResponse.outputAudio é preenchido com áudio de acordo com os valores das respostas de texto de plataforma padrão encontradas no campo DetectIntentResponse.queryResult.fulfillmentMessages.
Se houver várias respostas de texto padrão, elas serão concatenadas ao gerar o áudio.
Se não houver respostas de texto de plataforma padrão, o conteúdo do áudio gerado estará vazio.
O campo DetectIntentResponse.outputAudioConfig é preenchido com configurações de áudio usadas para gerar o áudio de saída.
Detectar intents de um stream
Ao detectar intents de um stream, você envia solicitações semelhantes ao exemplo que não usa áudio de saída: Como detectar intents de um stream.
No entanto, você fornece um campo OutputAudioConfig para a solicitação.
Os campos output_audio e output_audio_config são preenchidos na última resposta de streaming recebida do servidor da API Dialogflow.
Para mais informações, consulte StreamingDetectIntentRequest e StreamingDetectIntentResponse.
Configurações de fala do agente
É possível controlar vários aspectos da síntese de fala. Veja as configurações de fala do agente.
Usar o simulador do Dialogflow
Você pode interagir com o agente e receber respostas de áudio por meio do simulador do Dialogflow:
- Siga as etapas acima para ativar a conversão automática de texto em voz.
- Digite ou diga "book a room" no simulador.
- Confira a seção de saída de áudio na parte inferior do simulador.