Spesso le applicazioni hanno bisogno di un bot per rispondere all'utente finale. Dialogflow può utilizzare Cloud Text-to-Speech fornito da WaveNet di DeepMind per generare risposte vocali dal tuo agente. La conversione dalle risposte testuali per intenzione ad audio è nota come output audio, sintesi vocale, sintesi vocale o TTS.
Questa guida fornisce un esempio che utilizza l'audio sia per l'input che per l'output quando rileva un intent. 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, vedi la colonna TTS nella pagina Lingue.
Prima di iniziare
Questa funzione è applicabile solo se si utilizza l'API per interazioni con l'utente finale. Se utilizzi un integrazione, puoi saltare questa guida.
Prima di leggere questa guida, devi procedere nel seguente modo:
- Leggi le nozioni di base su 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 Dialogflow. Per ulteriori informazioni, consulta la panoramica della console Dialogflow.
- Fai clic su Create Agent (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 predefiniti 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 in questa guida fanno delle ipotesi sul tuo agente, quindi devi import un agente preparato per questa guida. Durante l'importazione, questi passaggi utilizzano l'opzione ripristina, che sovrascrive tutte le impostazioni, gli intent e le entità dell'agente.
Per importare il file:
-
Scarica il
room-booking-agent.zip
. - Vai alla console Dialogflow ES.
- Seleziona l'agente.
- Fai clic sull' pulsante impostazioni settings accanto al nome dell'agente.
- Seleziona la scheda Esporta e importa.
- Seleziona Ripristina da ZIP e segui le istruzioni per ripristinare il file ZIP che hai scaricato.
Rilevamento dell'intento
Per rilevare l'intento, chiama il metodo detectIntent
nella
Sessions
di testo.
REST
1. Prepara i contenuti audio
Scarica il
book-a-room.wav
il file di input_audio di esempio,
che dice "prenota una camera".
In questo esempio, il file audio deve essere codificato in base64,
in modo che possa essere fornito nella richiesta JSON 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, vedi Incorporamento di audio codificato Base64 nella documentazione dell'API Cloud Speech.
2. Effettua una richiesta di rilevamento dell'intento
Chiama il metodo detectIntent
sulla
Sessions
digita 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 indicato
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 delle seguenti 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..." }
Nota che il valore dell'attributo queryResult.action
è room.reservation
,
mentre il campo outputAudio
contiene una stringa audio in base64 grande.
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, vedi Decodifica dei contenuti audio con codifica Base64 nella documentazione dell'API Text-to-Speech.
Ora puoi riprodurre il file audio output_audio.wav
e ascolta che corrisponde al testo del campo queryResult.fulfillmentMessages[1].text.text[0]
in alto.
Viene scelto il secondo elemento fulfillmentMessages
,
perché è la risposta di testo per la piattaforma predefinita.
Java
Per eseguire l'autenticazione in Dialogflow, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per eseguire l'autenticazione in Dialogflow, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Per eseguire l'autenticazione in Dialogflow, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Per una descrizione dei campi di risposta pertinenti, consulta la sezione Rilevare le risposte di intent.
Rilevamento delle risposte di intent
La risposta a una richiesta di rilevamento di intent è di tipo DetectIntentResponse
.
L'elaborazione di rilevamento normale dell'intent controlla i contenuti del campo DetectIntentResponse.queryResult.fulfillmentMessages
.
Il campo DetectIntentResponse.outputAudio
viene compilato con l'audio
in base ai valori delle risposte testo della piattaforma predefinite
nel campo DetectIntentResponse.queryResult.fulfillmentMessages
.
Se esistono più risposte di testo predefinite,
e verranno concatenati durante la generazione dell'audio.
Se non esistono risposte testuali della piattaforma predefinite,
il contenuto audio generato sarà vuoto.
Il campo DetectIntentResponse.outputAudioConfig
viene compilato con l'audio
utilizzate per generare l'audio di output.
Rilevamento dell'intento da uno stream
Quando rilevi l'intento di uno stream,
invii richieste simili all'esempio che non utilizza l'audio di output:
Rilevamento dell'intent da uno stream.
Tuttavia, devi fornire una
OutputAudioConfig
campo alla richiesta.
I campi output_audio
e output_audio_config
vengono compilati nell'ultima risposta in modalità flusso che ricevi dal server API Dialogflow.
Per ulteriori informazioni, vedi
StreamingDetectIntentRequest
e
StreamingDetectIntentResponse.
Impostazioni dell'agente per la voce
Puoi controllare diversi aspetti della sintesi vocale. Visualizza 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 precedenti per attivare la sintesi vocale automatica.
- Digita o di' "prenota una camera" nel simulatore.
- Vedi la sezione Output audio nella parte inferiore del simulatore.