애플리케이션에 최종 사용자에게 응답하는 봇이 필요한 경우가 많습니다. Dialogflow 애플리케이션에 최종 사용자에게 응답하는 봇이 필요한 경우가 많습니다. Dialogflow를 사용하면 DeepMind WaveNet으로 구동되는 Cloud Text-to-Speech를 사용하여 에이전트에서 음성 응답을 생성할 수 있습니다. 인텐트 텍스트 응답에서 오디오로의 이러한 변환을 오디오 출력, 음성 합성,
인텐트를 감지할 때 입력 및 출력에 오디오를 사용할 수 있습니다. 이는 순수 음성 인터페이스를 사용하여 사용자와 통신하는 앱을 개발할 때 일반적입니다.
지원되는 언어 목록은 언어 페이지에서 TTS 열을 참고하세요.
시작하기 전에
이 기능은 최종 사용자 상호작용에 API를 사용할 때만 적용됩니다. 통합을 사용 중인 경우 이 가이드를 건너뛸 수 있습니다.
시작하기 전에 다음 단계를 완료하세요.
- Dialogflow 기본사항 읽기
- 설정 단계 수행
에이전트 만들기
- Dialogflow ES 콘솔로 이동합니다.
- 메시지가 표시되면 콘솔에 로그인합니다. 자세한 내용은 Dialogflow 콘솔 개요를 참고하세요.
- 사이드바 메뉴에서 로딩 에이전트를 펼칩니다.
- 새 에이전트 만들기를 클릭합니다.
- 에이전트 이름, 기본 언어, 기본 시간대를 입력합니다.
- 기존 프로젝트를 입력합니다. Dialogflow 콘솔에서 프로젝트를 만들도록 하려면 새 Google 프로젝트 만들기를 선택합니다.
- 만들기를 클릭합니다.
인텐트 감지
인텐트를 감지하려면 Sessions 유형에서 detectIntent 메서드를 호출합니다.
REST
1. 오디오 콘텐츠 준비
'book a room'이라고 말하는 book-a-room.wav 샘플 input_audio 파일을 다운로드합니다. 이 예시에서 오디오 파일은 base64로 인코딩되어야 하므로 아래의 JSON 요청으로 오디오 파일을 제공할 수 있습니다.
다음은 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
다른 플랫폼의 예는 Cloud Speech API 문서의 Base64 인코딩 오디오 삽입을 참고하세요.
2. 인텐트 감지 요청하기
Sessions 유형에서 detectIntent 메서드를 호출하고 base64 인코딩 오디오를 지정합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트 ID
- SESSION_ID: 세션 ID
- BASE64_AUDIO: 위에서 생성된 출력 파일의 base64 콘텐츠
HTTP 메서드 및 URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/agent/sessions/SESSION_ID:detectIntent
JSON 요청 본문:
{
"queryInput": {
"audioConfig": {
"languageCode": "en-US"
}
},
"outputAudioConfig" : {
"audioEncoding": "OUTPUT_AUDIO_ENCODING_LINEAR_16"
},
"inputAudio": "BASE64_AUDIO"
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{
"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..."
}
queryResult.action 필드의 값은 room.reservation이고 outputAudio 필드에는 긴 base64 오디오 문자열이 포함되어 있습니다.
3. 출력 오디오 재생
outputAudio 필드의 텍스트를 복사하여 output_audio.b64라는 파일에 저장합니다. 이 파일을 오디오로 변환해야 합니다.
다음은 Linux 예입니다.
base64 -d output_audio.b64 > output_audio.wav
다른 플랫폼의 예는 TTS(텍스트 음성 변환) API 참고 리소스에서 Base64 인코딩 오디오 콘텐츠 디코딩을 참고하세요.
이제 output_audio.wav 오디오 파일을 재생하여 위 queryResult.fulfillmentMessages[1].text.text[0] 필드의 텍스트와 일치하는 음성을 들을 수 있습니다.
두 번째 fulfillmentMessages 요소가 기본 플랫폼의 텍스트 응답이므로 선택됩니다.
Java
Dialogflow CX에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Dialogflow CX에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Dialogflow CX에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
관련 응답 필드에 대한 자세한 내용은 인텐트 감지 응답 섹션을 참고하세요.
인텐트 감지 응답
인텐트 감지 요청에 대한 응답은 DetectIntentResponse 유형입니다.
일반적인 인텐트 감지 처리는 DetectIntentResponse.queryResult.fulfillmentMessages 필드의 콘텐츠를 제어합니다.
DetectIntentResponse.outputAudio 필드는 DetectIntentResponse.queryResult.fulfillmentMessages 필드에서 검색된 기본 플랫폼 텍스트 응답 값을 기반으로 하는 오디오로 채워집니다.
- 기본 텍스트 응답이 여러 개 있는 경우 오디오를 생성할 때 서로 연결됩니다.
- 기본 플랫폼 텍스트 응답이 없으면 생성된 오디오 콘텐츠가 비게 됩니다.
DetectIntentResponse.outputAudioConfig 필드는 출력 오디오를 생성하는 데 사용되는 오디오 설정으로 채워집니다.
스트림의 인텐트 감지
스트림에서 인텐트를 감지할 때는 출력 오디오를 사용하지 않는 예시(스트림에서 인텐트 감지)와 유사한 요청을 보냅니다.
하지만 OutputAudioConfig 필드를 요청에 제공합니다. output_audio 및 output_audio_config 필드는 Dialogflow API 서버에서 가져오는 최종 스트리밍 응답에서 채워집니다. 자세한 내용은 StreamingDetectIntentRequest 및 StreamingDetectIntentResponse를 참조하세요.
음성의 에이전트 설정
음성 합성의 여러 측면을 제어할 수 있습니다. 에이전트 음성 설정을 참고하세요.
Dialogflow 시뮬레이터 사용
Dialogflow 시뮬레이터를 사용하여 에이전트와 상호작용하고 오디오 응답을 받을 수 있습니다.
- 상담사 음성 설정의 안내에 따라 자동 TTS(텍스트 음성 변환)를 사용 설정합니다.
- 시뮬레이터에 'book a room'을 입력하거나 말합니다.
- 시뮬레이터에서 출력 오디오 섹션을 확인합니다.