Spesso le applicazioni hanno bisogno di un bot per rispondere all'utente finale. Dialogflow può utilizzare Cloud Text-to-Speech basato su DeepMind WaveNet per generare risposte vocali dall'agente. Questa conversione dalle risposte testuali degli intent in audio è nota come output audio, sintesi vocale, sintesi vocale o TTS.
Questa guida fornisce un esempio di utilizzo dell'audio per l'input e l'output quando viene rilevato un intent. Questo caso d'uso è comune per sviluppare app che comunicano con gli utenti tramite un'interfaccia puramente audio.
Per un elenco delle lingue supportate, consulta la colonna TTS nella pagina Lingue.
Prima di iniziare
Questa funzionalità è applicabile solo quando si utilizza l'API per le interazioni con l'utente finale. Se utilizzi un'integrazione, puoi saltare questa guida.
Prima di leggere questa guida, segui questi passaggi:
- Leggi le nozioni di base di Dialogflow.
- Esegui la procedura di configurazione.
Crea un agente
Se non hai ancora creato un agente, creane uno ora:
- Vai alla console Dialogflow ES.
- Se richiesto, accedi alla console di Dialogflow. Per ulteriori informazioni, consulta Panoramica della console Dialogflow.
- Fai clic su Crea agente nel menu della barra laterale sinistra. Se hai già altri agenti, fai clic sul nome dell'agente, scorri verso il basso e fai clic su Crea nuovo agente.
- Inserisci il nome, la lingua e il fuso orario predefinito dell'agente.
- Se hai già creato un progetto, inseriscilo. Se vuoi consentire alla console di Dialogflow di creare il progetto, seleziona Crea un nuovo progetto Google.
- Fai clic su pulsante Crea.
Importa il file di esempio nell'agente
I passaggi di questa guida fanno ipotesi sul tuo agente, pertanto devi import un agente preparato per questa guida. Durante l'importazione, questi passaggi utilizzano l'opzione restore, che sovrascrive tutte le impostazioni, gli intent e le entità dell'agente.
Per importare il file:
-
Scarica il file
room-booking-agent.zip
. - Vai alla console Dialogflow ES.
- Seleziona l'agente.
- Fai clic sul pulsante delle impostazioni settings accanto al nome dell'agente.
- Seleziona la scheda Esporta e importa.
- Seleziona Ripristina da file ZIP e segui le istruzioni per ripristinare il file ZIP che hai scaricato.
Rilevamento dell'intento
Per rilevare l'intento, chiama il metodo detectIntent
nel tipo Sessions
.
REST
1. Preparare i contenuti audio
Scarica il
file input_audio di esempio per book-a-room.wav
,
che dice "prenota una stanza".
Per questo esempio, il file audio deve essere codificato in base64,
quindi può essere fornito nella richiesta JSON riportata di seguito.
Ecco un esempio di 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
Per esempi su altre piattaforme, consulta la pagina relativa all'incorporamento dell'audio codificato in Base64 nella documentazione dell'API Cloud Speech.
2. Esegui il rilevamento della richiesta di intento
Richiama il metodo detectIntent
sul tipo Sessions
e specifica l'audio codificato in Base64.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- SESSION_ID: un ID sessione
- BASE64_AUDIO: i contenuti base64 del file di output sopra
Metodo HTTP e URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/agent/sessions/SESSION_ID:detectIntent
Corpo JSON della richiesta:
{ "queryInput": { "audioConfig": { "languageCode": "en-US" } }, "outputAudioConfig" : { "audioEncoding": "OUTPUT_AUDIO_ENCODING_LINEAR_16" }, "inputAudio": "BASE64_AUDIO" }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "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..." }
Tieni presente che il valore del campo queryResult.action
è room.reservation
e il campo outputAudio
contiene una stringa audio base64 di grandi dimensioni.
3. Riproduci audio in uscita
Copia il testo dal campo outputAudio
e salvalo in un file denominato output_audio.b64
.
Questo file deve essere convertito in audio.
Ecco un esempio di Linux:
base64 -d output_audio.b64 > output_audio.wav
Per esempi su altre piattaforme, consulta Decodifica di contenuti audio codificati in Base64 nella documentazione dell'API Text-to-Speech.
Ora puoi riprodurre il file audio output_audio.wav
e sentire che corrisponde al testo nel campo queryResult.fulfillmentMessages[1].text.text[0]
in alto.
Viene scelto il secondo elemento fulfillmentMessages
,
perché è la risposta testuale per la piattaforma predefinita.
Java
Per eseguire l'autenticazione in Dialogflow, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per eseguire l'autenticazione in Dialogflow, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Per eseguire l'autenticazione in Dialogflow, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Consulta la sezione Rileva le risposte dell'intent per una descrizione dei campi delle risposte pertinenti.
Rileva le risposte di intent
La risposta per una richiesta di rilevamento di intent è di tipo DetectIntentResponse
.
L'elaborazione dell'intent di rilevamento normale controlla il contenuto del campo DetectIntentResponse.queryResult.fulfillmentMessages
.
Il campo DetectIntentResponse.outputAudio
viene compilato con l'audio in base ai valori delle risposte testo della piattaforma predefinite che si trovano nel campo DetectIntentResponse.queryResult.fulfillmentMessages
.
Se esistono più risposte predefinite,
verranno concatenate durante la generazione dell'audio.
Se non esistono risposte predefinite della piattaforma,
i contenuti audio generati saranno vuoti.
Il campo DetectIntentResponse.outputAudioConfig
viene compilato con le impostazioni audio
utilizzate per generare l'audio di output.
Rilevamento dell'intento da uno stream
Quando rilevi l'intent da un flusso, invii richieste simili all'esempio che non utilizzano l'audio di output: rilevamento dell'intent da uno stream.
Tuttavia, devi fornire un campo OutputAudioConfig per la richiesta.
I campi output_audio
e output_audio_config
vengono compilati nell'ultima risposta di streaming che ricevi dal server API Dialogflow.
Per ulteriori informazioni, consulta StreamingDetectIntentRequest e StreamingDetectIntentResponse.
Impostazioni agente per il parlato
Puoi controllare vari aspetti della sintesi vocale. Vedi le impostazioni vocali dell'agente.
Utilizzare il simulatore Dialogflow
Puoi interagire con l'agente e ricevere risposte audio tramite il simulatore Dialogflow:
- Segui i passaggi riportati sopra per attivare la sintesi vocale automatica.
- Digita o pronuncia "prenota una camera" nel simulatore.
- Consulta la sezione relativa all'output dell'audio nella parte inferiore del simulatore.