As aplicações precisam frequentemente de um bot para responder ao utilizador final. O Dialogflow pode usar o Cloud Text-to-Speech com tecnologia DeepMind WaveNet para gerar respostas de voz do seu agente. Esta conversão de respostas de texto de intenção em áudio é conhecida como saída de áudio, síntese de voz, conversão de texto em voz ou TTS.
Este guia fornece um exemplo que usa áudio para entrada e saída ao detetar uma intenção. Este exemplo de utilização é comum quando desenvolve apps que comunicam com os utilizadores através de uma interface puramente de áudio.
Para ver uma lista de idiomas suportados, consulte a coluna TTS na página Idiomas.
Antes de começar
Esta funcionalidade só se aplica quando usa a API para interações do utilizador final. Se estiver a usar uma integração, pode ignorar este guia.
Antes de ler este guia, deve fazer o seguinte:
- Leia as noções básicas do Dialogflow.
- Realize os passos de configuração.
Crie um agente
Se ainda não tiver criado um agente, crie um agora:
- Aceda à consola do Dialogflow ES.
- Se lhe for pedido, inicie sessão na consola do Dialogflow. Consulte a vista geral da consola do Dialogflow para mais informações.
- Clique em Criar agente no menu da barra lateral esquerda. (Se já tiver outros agentes, clique no nome do agente, desloque a página para baixo e clique em Criar novo agente.)
- Introduza o nome do agente, o idioma predefinido e o fuso horário predefinido.
- Se já tiver criado um projeto, introduza esse projeto. Se quiser permitir que a consola do Dialogflow crie o projeto, selecione Criar um novo projeto Google.
- Clique no botão Criar.
Importe o ficheiro de exemplo para o seu agente
Os passos neste guia baseiam-se em pressupostos sobre o seu agente. Por isso, tem de importar um agente preparado para este guia. Quando importa, estes passos usam a opção restaurar, que substitui todas as definições, intenções e entidades do agente.
Para importar o ficheiro, siga estes passos:
-
Transfira o ficheiro
room-booking-agent.zip. - Aceda à consola do Dialogflow ES.
- Selecione o seu agente.
- Clique no botão Definições settings junto ao nome do agente.
- Selecione o separador Exportar e importar.
- Selecione Restaurar do ZIP e siga as instruções para restaurar o ficheiro ZIP que transferiu.
Detetar intenção
Para detetar a intenção, chame o método detectIntent no tipo Sessions.
REST
1. Prepare conteúdo de áudio
Transfira o ficheiro de áudio de entrada de exemplo
book-a-room.wav
que diz "reservar um quarto".
O ficheiro de áudio tem de estar codificado em base64 para este exemplo,
para que possa ser fornecido no pedido JSON abaixo.
Segue-se 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 noutras plataformas, consulte o artigo Incorporar áudio codificado em Base64 na documentação da API Cloud Speech.
2. Faça um pedido de deteção de intenção
Chame o método detectIntent no tipo Sessions e especifique o áudio codificado em base64.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu projeto do Google Cloud
- SESSION_ID: um ID da sessão
- BASE64_AUDIO: o conteúdo base64 do ficheiro 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 do pedido:
{
"queryInput": {
"audioConfig": {
"languageCode": "en-US"
}
},
"outputAudioConfig" : {
"audioEncoding": "OUTPUT_AUDIO_ENCODING_LINEAR_16"
},
"inputAudio": "BASE64_AUDIO"
}
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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..."
}
Tenha em atenção que o valor do campo queryResult.action
é room.reservation
e o campo outputAudio contém uma string de áudio base64 grande.
3. Reproduzir áudio de saída
Copie o texto do campo outputAudio e guarde-o num ficheiro com o nome output_audio.b64.
Este ficheiro tem de ser convertido em áudio.
Segue-se um exemplo do Linux:
base64 -d output_audio.b64 > output_audio.wav
Para ver exemplos noutras plataformas, consulte o artigo Descodificar conteúdo de áudio codificado em Base64 na documentação da API Text-to-Speech.
Agora, pode reproduzir o ficheiro de áudio output_audio.wav e ouvir que 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 predefinida.
Java
Para se autenticar no Dialogflow, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Para se autenticar no Dialogflow, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Para se autenticar no Dialogflow, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Consulte a secção Respostas de deteção de intenção para ver uma descrição dos campos de resposta relevantes.
Detete respostas de intenção
A resposta a um pedido de deteção de intenção é do tipo DetectIntentResponse.
O processamento normal de intenções de deteção controla o conteúdo do campo DetectIntentResponse.queryResult.fulfillmentMessages.
O campo DetectIntentResponse.outputAudio é preenchido com áudio com base nos valores das respostas de texto da plataforma predefinida encontradas no campo DetectIntentResponse.queryResult.fulfillmentMessages.
Se existirem várias respostas de texto predefinidas,
estas são concatenadas quando o áudio é gerado.
Se não existirem respostas de texto da plataforma predefinidas, o conteúdo de áudio gerado estará vazio.
O campo DetectIntentResponse.outputAudioConfig é preenchido com as definições de áudio usadas para gerar o áudio de saída.
Detetar a intenção a partir de uma stream
Quando deteta a intenção de uma stream,
envia pedidos semelhantes ao exemplo que não usa áudio de saída:
Detetar a intenção de uma stream.
No entanto, fornece um campo OutputAudioConfig ao pedido.
Os campos output_audio e output_audio_config são preenchidos na última resposta de streaming que recebe do servidor da API Dialogflow.
Para mais informações, consulte os artigos
StreamingDetectIntentRequest
e
StreamingDetectIntentResponse.
Definições do agente para a voz
Pode controlar vários aspetos da síntese de voz. Consulte as definições de voz do agente.
Use o simulador do Dialogflow
Pode interagir com o agente e receber respostas de áudio através do simulador do Dialogflow:
- Siga os passos acima para ativar a conversão automática de texto em voz.
- Escreva ou diga "reservar um quarto" no simulador.
- Consulte a secção Áudio de saída na parte inferior do simulador.