Spesso le applicazioni hanno bisogno di un bot per comunicare con l'utente finale. Dialogflow può utilizzare Cloud Text-to-Speech basato su DeepMind WaveNet per generare risposte vocali dall'agente. Questa conversione delle risposte di testo dell'intento in audio è nota come output audio, sintesi vocale, conversione del testo in voce o TTS.
Questa guida fornisce un esempio che utilizza l'audio sia per l'input sia per l'output durante il rilevamento di un'intenzione. Questo caso d'uso è comune quando si sviluppano 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 se l'API viene utilizzata per le interazioni con gli utenti finali. Se utilizzi un'integrazione, puoi saltare questa guida.
Prima di leggere questa guida, devi:
- Leggi le nozioni di base su Dialogflow.
- Esegui i passaggi 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 la panoramica della console di Dialogflow.
- Fai clic su Crea agente nel menu della barra laterale a 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 dell'agente, la lingua predefinita e il fuso orario predefinito.
- Se hai già creato un progetto, inseriscilo. Se vuoi consentire alla console 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 descritti in questa guida fanno delle supposizioni sul tuo agente, quindi 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 il tuo agente.
- Fai clic sul pulsante settings delle impostazioni 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 scaricato.
Rilevare l'intenzione
Per rilevare l'intenzione, chiama il metodo detectIntent
sul tipo
Sessions
.
REST
1. Preparare i contenuti audio
Scarica il
book-a-room.wav
file input_audio di esempio,
che dice "prenota una stanza".
Per questo esempio, il file audio deve essere codificato in base64,
in modo da poter 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 Incorporare audio codificato in base64 nella documentazione dell'API Cloud Speech.
2. Fai una richiesta di rilevamento dell'intenzione
Chiama il metodo detectIntent
sul tipo
Sessions
e specifica l'audio codificato in base64.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto Google Cloud
- SESSION_ID: un ID sessione
- BASE64_AUDIO: i contenuti base64 del file di output riportato 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 lunga stringa audio base64.
3. Riproduci l'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 del contenuto audio codificato in Base64 nella documentazione dell'API Text-to-Speech.
Ora puoi riprodurre il file audio output_audio.wav
e ascoltare se corrisponde al testo del campo queryResult.fulfillmentMessages[1].text.text[0]
qui sopra.
Viene scelto il secondo elemento fulfillmentMessages
, poiché è la risposta di testo per la piattaforma predefinita.
Java
Per autenticarti a Dialogflow, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per autenticarti a Dialogflow, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Per autenticarti a Dialogflow, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Per una descrizione dei campi di risposta pertinenti, consulta la sezione Rileva le risposte all'intent.
Rileva le risposte all'intent
La risposta per una richiesta di rilevamento dell'intento è di tipo DetectIntentResponse
.
L'elaborazione normale dell'intent di rilevamento controlla i contenuti del campo DetectIntentResponse.queryResult.fulfillmentMessages
.
Il campo DetectIntentResponse.outputAudio
viene compilato con l'audio
in base ai valori delle risposte di testo della piattaforma predefinita
trovate nel campo DetectIntentResponse.queryResult.fulfillmentMessages
.
Se esistono più risposte di testo predefinite, queste verranno concatenate durante la generazione dell'audio.
Se non esistono risposte di testo 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'intento da uno stream, invii richieste simili all'esempio che non utilizza l'output audio: Rilevamento di intenti da uno stream.
Tuttavia, fornisci un campo
OutputAudioConfig
alla richiesta.
I campi output_audio
e output_audio_config
vengono compilati nell'ultima risposta in streaming che ricevi dal server dell'API Dialogflow.
Per ulteriori informazioni, consulta
StreamingDetectIntentRequest
e
StreamingDetectIntentResponse.
Impostazioni dell'agente per il parlato
Puoi controllare vari aspetti della sintesi vocale. Consulta le impostazioni vocali dell'agente.
Utilizzare il simulatore di Dialogflow
Puoi interagire con l'agente e ricevere risposte audio tramite il simulatore Dialogflow:
- Segui i passaggi precedenti per attivare la sintesi vocale automatica.
- Digita o di' "prenota una stanza" nel simulatore.
- Consulta la sezione Audio in uscita nella parte inferiore del simulatore.