Les applications ont souvent besoin d'un bot pour communiquer avec l'utilisateur final. Dialogflow peut désormais faire appel à Cloud Text-to-Speech, fourni par DeepMind WaveNet, pour générer des réponses vocales à partir de votre agent. Cette conversion des réponses d'intent textuelles en audio est appelée sortie audio, synthèse vocale ou text-to-speech (TTS).
L'exemple présenté dans ce guide utilise la fonction audio pour les entrées et les sorties lors de la détection d'un intent. Ce cas d'utilisation est courant pour le développement d'applications qui communiquent avec les utilisateurs via une interface purement audio.
Pour obtenir la liste des langues compatibles, consultez la colonne TTS dans le tableau de la page Langues.
Avant de commencer
Cette fonctionnalité n'est disponible que lorsque l'API est utilisée pour les interactions de l'utilisateur final. Si vous utilisez une intégration, vous pouvez ignorer ce guide.
Avant de lire ce guide, procédez comme suit :
- Consultez la section Principes de base de Dialogflow.
- Effectuez la procédure de configuration.
Créer un agent
Si vous n'avez pas encore créé d'agent, créez-en un maintenant :
- Accédez à la console Dialogflow ES.
- Si nécessaire, connectez-vous à la console Dialogflow. Consultez la section Présentation de la console Dialogflow pour plus d'informations.
- Cliquez sur Créer un agent dans le menu de la barre latérale de gauche. (Si vous avez déjà d'autres agents, cliquez sur le nom de l'un d'eux, faites défiler vers le bas, puis cliquez sur Créer un agent.)
- Saisissez le nom de l'agent, la langue par défaut et le fuseau horaire par défaut.
- Si vous avez déjà créé un projet, saisissez son nom. Si vous souhaitez autoriser la console Dialogflow à créer le projet, sélectionnez Créer un projet Google.
- Cliquez sur le bouton Créer.
Importer le fichier d'exemple dans l'agent
Dans la mesure où les étapes de ce guide sont fondées sur certaines hypothèses concernant votre agent, vous devez importer un agent préparé pour ce guide. Lors de l'importation, ces étapes utilisent l'option de restauration qui écrase l'ensemble des paramètres, des intents et des entités de l'agent.
Pour importer le fichier, procédez comme suit :
- Téléchargez le fichier
room-booking-agent.zip
. - Accédez à la console Dialogflow ES.
- Sélectionnez votre agent.
- Cliquez sur le bouton des paramètres settings à côté du nom de l'agent.
- Sélectionnez l'onglet Exporter et importer.
- Sélectionnez Restaurer depuis un fichier ZIP et suivez les instructions pour restaurer le fichier ZIP que vous avez téléchargé.
Détecter un intent
Pour détecter l'intent, appelez la méthode detectIntent
du type Sessions
.
REST
1. Préparez le contenu audio
Téléchargez l'exemple de fichier input_audio book-a-room.wav
, qui énonce la phrase "book a room".
Pour cet exemple, le fichier audio doit être encodé en base64 afin de pouvoir être inclus dans la requête JSON ci-dessous.
Voici un exemple avec 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
Pour voir des exemples sur d'autres plates-formes, consultez la page Intégrer du contenu audio encodé en base64 dans la documentation de l'API Cloud Speech.
2. Effectuez une requête de détection d'intent
Appelez la méthode detectIntent
du type Sessions
et spécifiez les données audio encodées en base64.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet Google Cloud
- SESSION_ID : un ID de session
- BASE64_AUDIO : contenu base64 du fichier de sortie spécifié ci-dessus
Méthode HTTP et URL :
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/agent/sessions/SESSION_ID:detectIntent
Corps JSON de la requête :
{ "queryInput": { "audioConfig": { "languageCode": "en-US" } }, "outputAudioConfig" : { "audioEncoding": "OUTPUT_AUDIO_ENCODING_LINEAR_16" }, "inputAudio": "BASE64_AUDIO" }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "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..." }
Notez que la valeur du champ queryResult.action
est room.reservation
, et que le champ outputAudio
contient une grande chaîne audio en base64.
3. Lisez la sortie audio
Copiez le texte figurant dans le champ outputAudio
et enregistrez-le dans un fichier nommé output_audio.b64
.
Ce fichier doit être converti en audio.
Voici un exemple avec Linux :
base64 -d output_audio.b64 > output_audio.wav
Pour voir des exemples sur d'autres plates-formes, consultez la page Décoder le contenu audio avec un code en base64 dans la documentation de l'API Text-to-speech.
Vous pouvez maintenant lire le fichier audio output_audio.wav
et constater que son contenu correspond au texte du champ queryResult.fulfillmentMessages[1].text.text[0]
ci-dessus.
Le second élément fulfillmentMessages
est choisi, car il s'agit de la réponse textuelle destinée à la plate-forme par défaut.
Java
Pour vous authentifier auprès de Dialogflow, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Pour vous authentifier auprès de Dialogflow, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Pour vous authentifier auprès de Dialogflow, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Pour obtenir une description des champs de réponse pertinents, consultez la section Réponses de détection d'intent.
Réponses de détection d'intent
La réponse à une requête de détection d'intent est du type DetectIntentResponse
.
Le traitement normal de détection d'intent contrôle le contenu du champ DetectIntentResponse.queryResult.fulfillmentMessages
.
Le champ DetectIntentResponse.outputAudio
contient des données audio basées sur les valeurs des réponses textuelles de la plate-forme par défaut trouvées dans le champ DetectIntentResponse.queryResult.fulfillmentMessages
.
Si plusieurs réponses textuelles par défaut existent, elles seront regroupées lors de la génération du contenu audio.
Si aucune réponse textuelle de plate-forme par défaut n'existe, le contenu audio généré sera vide.
Le champ DetectIntentResponse.outputAudioConfig
contient les paramètres audio utilisés pour générer la sortie audio.
Détecter l'intent d'un flux
Lors de la détection d'intent à partir d'un flux, vous envoyez des requêtes similaires à l'exemple qui n'utilise pas le contenu audio de sortie : Détecter l'intent d'un flux.
Vous fournissez toutefois un champ OutputAudioConfig à la requête.
Les champs output_audio
et output_audio_config
sont renseignés dans la toute dernière réponse de streaming reçue du serveur de l'API Dialogflow.
Pour en savoir plus, consultez les sections StreamingDetectIntentRequest et StreamingDetectIntentResponse.
Paramètres de l'agent pour la synthèse vocale
Vous pouvez contrôler différents aspects de la synthèse vocale. Consultez les paramètres de synthèse vocale de l'agent pour en savoir plus.
Utiliser le simulateur Dialogflow
Vous pouvez interagir avec l'agent et recevoir des réponses audio via le simulateur Dialogflow :
- Suivez la procédure ci-dessus pour activer la synthèse vocale automatique.
- Saisissez ou dites "book a room" dans le simulateur.
- Consultez la section contenu audio de sortie au bas du simulateur.