서론
이전 기사에서 Amazon Connect와 ElevenLabs 모델과의 연동에 대해 검증했습니다.
이번에는 ElevenLabs와 마찬가지로 서드파티 연동을 지원하는 Deepgram과의 연동을 시도해 보겠습니다!
AWS 공식 문서:
Setting up Deepgram speech model preference
Deepgram이란
Deepgram은 딥러닝(Deep Learning)을 활용한 고정밀 음성 인식 API를 제공하는 서비스입니다. Speech-to-Text (STT), Text-to-Speech (TTS), Voice Agent, Audio Intelligence와 같은 음성 API 플랫폼을 제공하고 있습니다.
Deepgram에서 사용할 수 있는 모델
Deepgram은 STT/TTS 모두 여러 모델을 제공합니다. 일본어 대응 모델도 여러 개 있을 뿐만 아니라, 의료용이나 미팅용 등 용도에 따라 특화된 모델도 제공하고 있습니다.
STT (Speech-to-Text)에서 일본어를 지원하는 모델의 예
| 모델 | 모델명 | 특징 | 언어 대응 | 유스케이스 |
|---|
| Flux | flux-general-multi | 대화형 ASR, 턴 검출 기능 통합 | 다국어 (일본어 포함) | 실시간 에이전트, 고객 지원 봇, 턴 기반 익스피리언스 |
| Nova-3 | nova-3 | 스트리밍의 Word Error Rate (WER) 54.2% 감소 / 배치 47.4% 감소 | 다국어 (일본어 포함) | 범용 최고 성능 ASR, 회의, 이벤트 자막, 멀티 스피커, 노이즈 환경 |
그 외에, Nova-2에는 meeting, phonecall, finance, conversationalai 등 폭넓은 용도 특화형 모델이 있는 것으로 보입니다. (다만, 대부분 대응 언어가 영어뿐이었습니다.)
TTS (Text-to-Speech)에서 일본어를 지원하는 모델의 예
TTS에서는 주로 Aura-2라는 시리즈의 모델을 이용할 수 있습니다. 대응 언어 단위로 서로 다른 모델이 준비되어 있으며, 일본어는 성별이나 캐릭터별로 다음과 같은 모델이 준비되어 있는 것으로 보입니다. 공식 문서상으로는 Featured와 All Available로 구분하여 기재되어 있으며, 아마도 Featured가 더 권장되는 모델일 것이라고 추측합니다.
| 카테고리 | 모델명 | 성별 | 연령 | 특징 | 유스케이스 |
|---|
| Featured | aura-2-fujin-ja | 남성 | Adult | 차분함, 자신감 있음, 지식 풍부, 프로페셔널, 매끄러움 | 인터뷰, 캐주얼 채팅, IVR |
| Featured | aura-2-izanami-ja | 여성 | Adult | 친근함, 명료함, 지식 풍부, 정중함, 프로페셔널 | 캐주얼 채팅, 고객 서비스, 인터뷰, IVR |
| All Available | aura-2-uzume-ja | 여성 | Young Adult | 친근함, 명료함, 정중함, 프로페셔널, 신뢰할 수 있음 | 고객 서비스, 인터뷰, IVR, 커머셜 |
| All Available | aura-2-ebisu-ja | 남성 | Young Adult | 차분함, 깊이 있음, 자연스러움, 인내심 있음, 성실함 | 캐주얼 채팅, 고객 서비스 |
Deepgram은 STT/TTS 양쪽 모델을 모두 이용할 수 있으므로, Amazon Connect 컨택트 플로우(Contact Flow)에서도 STT/TTS 모두 Deepgram을 사용해 보겠습니다.
아키텍처 개요
Amazon Connect와 Deepgram을 통합했을 때의 아키텍처는 다음 문서에서 해설되어 있습니다. 기존의 컨택트 플로우나 운영 로직을 변경하지 않고, Amazon Transcribe와 Amazon Polly를 Deepgram의 STT 및 TTS 모델로 심리스(Seamless)하게 교체할 수 있는 것이 장점입니다.
Deepgram 문서:
Amazon Connect and Deepgram
- Connect/Lex → Deepgram (STT): 발신자의 음성이 실시간으로 Deepgram에 스트리밍되며, 실시간 전사 (Transcription)가 실행됩니다.
- Deepgram → Connect/Lex: 전사 결과가 즉시 반환되어 의도 인식 (Intent Recognition) 및 라우팅 로직에 사용됩니다.
- Connect/Lex → Deepgram (TTS): Lex가 텍스트를 Deepgram TTS 모델로 전송하여 자연스러운 음성 응답을 생성합니다.
설정 절차
전제 조건
- Amazon Connect 인스턴스가 생성되어 있음
- Deepgram 계정이 생성되어 있음
단계 1: Deepgram API 키 취득
- Deepgram Console에 로그인
- 왼쪽 네비게이션에서 API Keys를 선택
- Create a New API Key를 클릭
- 생성된 API 키를 로컬에 복사 (이후 과정에서 AWS Secrets Manager에 저장합니다)
단계 2: AWS KMS 키 생성
Connect와 Lex가 Deepgram API 키를 복호화하기 위해 필요합니다.
- **대칭 키 (Symmetric Key)**를 지정하고 키 관리자를 선택합니다 (예: 자신의 IAM 사용자/역할). 키 정책 (Key Policy)을 편집하여 Lex와 Connect로부터의 액세스 권한을 추가로 부여합니다. Lex에서는 STT, Connect에서는 TTS 처리 과정에서 Deepgram API가 호출될 것으로 예상됩니다.
{
"Sid": "Allow Lex and Connect to decrypt Deepgram secret",
"Effect": "Allow",
...
단계 3: AWS Secrets Manager에 시크릿 저장
-
Secrets Manager에서 새로운 시크릿을 저장합니다. 시크릿 유형은 **기타 시크릿 유형 (Other type of secret)**을 지정합니다. 키/값 (Key/Value) 쌍으로 다음을 추가합니다.
-
키: apiToken
-
값: Deepgram의 API 키 설정
-
암호화 키: 방금 생성한 KMS 키를 선택하고 「다음」을 클릭합니다.
-
시크릿 이름을 설정하고, **리소스 액세스 권한 (Resource permissions)**에서 리소스 정책을 편집하여 Connect와 Lex에 액세스 권한을 부여합니다.
{
"Version": "2012-10-17",
"Statement": [
...
- 시크릿 저장이 완료된 후, 시크릿 ARN을 복사해 둡니다.
단계 4: Amazon Lex에서 Deepgram 설정 (STT)
Deepgram을 음성 인식 프로바이더로 설정한 봇을 생성합니다.
-
Amazon Connect 관리 화면에서 일본어로 Amazon Lex 봇 (대화형 AI)을 생성합니다.
-
Amazon Connect AI agent in Connect intent를 활성화합니다.
-
Speech model을 편집하여 다음과 같이 설정합니다.
-
Voice provider: Deepgram을 선택
-
Model ID: 사용할 Deepgram 모델. 이번에는 일본어를 지원하는 nova-3를 선택해 봅니다.
-
Secret ARN: 단계 2에서 생성한 시크릿의 ARN을 설정합니다.
-
Lex 버전을 생성합니다.
단계 5: Amazon Connect의 셀프 서비스 플로우 생성
이전의 ElevenLabs 검증과 마찬가지로, GitHub의 aws-samples에 있는 sample-amazon-connect-starter-kit-japan 패키지로 구축할 수 있는 플로우를 활용합니다.
-
Amazon Connect 관리 화면에서 컨택트 플로우 (Contact Flow) 화면으로 이동하여, 모듈 탭에서 starter-kit_AC_PKG_init_flowModule을 선택합니다.
-
음성 설정 (Set voice) 블록을 선택합니다. 여기서는 TTS로서 Deepgram을 사용하도록 설정합니다.
-
다음과 같이 설정합니다.
-
음성 프로바이더 (Voice Provider): Deepgram
-
Deepgram 모델 (Deepgram Model): aura-2
-
Deepgram 음성 (Deepgram Voice): fujin - 여기에 무엇을 입력해야 할지 처음에는 잘 몰랐으나, 공식 문서에 따르면 aura-2-(Name)-ja로 제공되는 모델 이름의 (Name) 부분을 지정하면 될 것 같습니다.
-
이번에는 Featured 모델 중 남성 음성인 fujin을 선택합니다.
-
Secrets Manager ARN: Secrets Manager에서 복사한 시크릿 ARN
-
언어: 일본어 (일본)
플로우 모듈을 저장 → 공개합니다.
컨택트 플로우 (Contact Flow) 화면의 플로우 탭에서,
starter-kit_AC_PKG_self_service_to_agent_Inbound_flow 플로우를 엽니다.
고객 입력 가져오기 (Get customer input) 블록을 열고 Lex 봇을 단계 4의 절차에서 생성한 봇으로 변경합니다.
단계 5: Deepgram의 STT/TTS 검증!
컨택트 플로우에 연결된 전화번호로 전화를 걸어 실제 음성을 확인해 봅니다.
다음 URL을 통해 실제 음성을 들을 수 있습니다.
나쁘지 않습니다. 약간 텐션이 낮은 느낌도 들지만, 이상하게 밝고 격식을 차린 AI 음성보다 오히려 인간다움이 느껴지는 것 같습니다. 다만, 한편으로는 '繰り上げ返済 (조기 상환)'가 '繰りがみ返済'와 같이 한자 오변환이 발생하는 부분도 있었습니다. 레이턴시 (Latency)에 대해서는 큰 스트레스를 받을 정도는 아니라는 느낌입니다. 이 부분은 Deepgram의 다른 모델도 시도하여 정확도에 변화가 없는지 확인해 보고 싶은 부분입니다.
요약
Amazon Connect의 제3자 (3rd Party) 음성 모델 연동을 사용하여, Deepgram을 통한 STT/TTS를 검증해 보았습니다. 음성 AI 프로바이더는 다양한 스타트업이 존재하므로, AWS 외부의 프로바이더와 즉시 연동할 수 있는 간편함이 매력적이네요. 보이스봇 (Voicebot)을 통한 고객 지원 구현을 검토하고 계신다면 ElevenLabs와 함께 유력한 선택지가 될 것 같습니다.
참고 링크
- Amazon Connect 서드파티 TTS/STT 지원 발표
- Deepgram 공식 문서 - Amazon Connect 통합
- AWS 공식 문서 - Deepgram 설정
- Amazon Connect 관리자 가이드 - 서드파티 STT 설정
Content was rephrased for compliance with licensing restrictions.