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.