Microsoft Foundry의 Voice Live API는 음성으로 대화하는 에이전트를 만들기 위한 API로, 음성 인식(Speech Recognition), 응답 생성, 음성 합성(Text-to-Speech)을 통합적으로 다룰 수 있습니다. 나아가 응답을 말할 목소리(Voice)와 아바타 영상까지 선택할 수 있게 되어 다음과 같은 방식으로 활용할 수 있습니다.
- Microsoft가 준비한 표준 아바타 및 음성 모델 그대로 사용하기
- 사진 1장으로 자신의 아바타 만들기 (photo avatar)
- 녹음한 음성으로 자신만의 음성 모델 만들기 (personal voice)
- 촬영한 영상으로 자신의 아바타 만들기 (custom video avatar)
본 기사에서는 아바타 유형을 정리하고, 표준 아바타와 커스텀 사진 아바타의 준비 및 설정 방법을 소개하며, 마지막으로 커스텀 비디오 아바타의 목소리(avatar-sync voice)에 대해 다룹니다. 음성 설정은 아바타와 독립적이므로, Personal Voice는 별도 기사에 정리했습니다.
본 기사는 Voice Live 기능 해설 시리즈의 제6회입니다. 전제 조건으로 SDK 1.2.0과 API 2026-07-15가 필요합니다.
(GA)에 대한 내용은 시작 기사에 모아두었습니다.
[IMG:N]
시리즈 기사 목록 (SDK 1.2.0 / API 2026-07-15)
Voice Live SDK 1.2.0 변경점과 API 2026-07-15 GA
SDK에 타입이 없는 기능 분류 -
Voice Live API로 대화의 '간격'을 다루기
먼저 말하기/말 더듬거림 기다리기/가로채기/대기 시간에 말하기 -
Voice Live의 음성 입력 품질 향상시키기
노이즈 억제・에코 제거・Live-Reference AEC 선택 방법 -
Voice Live에서 MCP 서버 도구 사용하기
function calling과의 차이점 및 병렬 도구 호출 -
Voice Live에서 Foundry 에이전트를 도구로 호출하기
chat-supervisor 패턴 사용법과 전단 모델(pre-model) 선택 방법 -
30초의 음성으로 '자신의 목소리'를 만들어 Microsoft Foundry 에이전트에게 말하게 하기
Personal Voice 신청부터 구현까지 - Voice Live API 아바타 활용법 (본 기사)
표준・커스텀 사진・커스텀 비디오 설정 및 구현 -
Voice Live의 아바타 영상을 WebSocket으로 받기
WebRTC와의 차이점과 영상 형식
특별편: Voice Live의 WebRTC 음성 연결에 .NET의 SIPSorcery로 연결하기
SDP를 한 줄씩 나열한 기록
검증에 사용된 코드는 이곳에서 공개하고 있습니다.
본 기사는 2026년 10월 시점의 정보입니다. 대상은 Voice Live API 2026-07-15 (GA)와 .NET SDK Azure.AI.VoiceLive 1.2.0입니다. photo avatar 설정 항목(type: photo-avatar, model, scene)은 GA 버전의 API 레퍼런스에 포함되어 있으며, SDK 1.2.0에서도 타입으로 작성할 수 있습니다.
전체적인 구조는 다음과 같습니다:
| 패턴 | 원본 재료 | 신청 필요 여부 | 준비물 | 외형 | :---
| 표준 video avatar | Microsoft 제공 촬영 캐릭터 | 불필요 | 없음 | 전신 |
| ... |
선택 방법은 다음과 같습니다.
- 일단 작동만 시키고 싶을 때는, 표준(Standard)을 사용합니다. 신청이 필요 없으므로 즉시 시험해 볼 수 있습니다.
- 자신의 얼굴로 하고 싶을 때는, 커스텀 photo avatar를 사용합니다. 사진 1장으로 충분합니다.
- 전신으로 지정한 움직임을 시키고 싶을 때는, 커스텀 video avatar를 사용합니다. 다만 촬영 비용이 상당히 커집니다.
'자신의 얼굴과 자신의 목소리로 말하게 하고 싶다'는 목적만 있다면, 커스텀 photo avatar와 Personal Voice의 조합으로 충분합니다. custom video avatar의 voice-sync-for-avatar도 같은 목표를 가진 기능이지만, 10분 이상의 스튜디오 촬영이 전제됩니다.
순전히 흥미로 이용해 보았지만, 최소한의 10분 분량 영상에서 아바타 1개를 생성하는 데 필요한 계산 리소스가 약 30cu/h 정도 필요했습니다. 금액으로 환산하면 약 7만 엔 정도가 발생합니다. 필요한 품질 등을 고려하여 활용할 필요가 있어 보입니다. 사진 1장과 30초의 음성으로 끝내는 편이 더 간편하다고 생각됩니다.
리소스 생성부터 C#을 사용하여 첫 음성 대화를 구동하는 단계까지는 공식 퀵 스타트(quick start)를 따라 진행하면 준비할 수 있습니다. 아바타를 사용할 경우에는 리소스를 만들기 전에 다음 지원 리전과 이용 신청 사항을 확인해 주십시오.
아바타 기능은 모든 리전에서 사용 가능한 것은 아닙니다. 용도에 따라 지원되는 리전이 다르므로, 리소스를 생성하기 전에 반드시 확인하지 않으면 나중에 다시 만들어야 하는 상황이 발생합니다.
| 기능 | 지원 리전 |
|---|
| 실시간 아바타 / 배치 / 커스텀 아바타 | westus2 eastus eastus2 southcentralus southeastasia centralindia westeurope swedencentral northeurope italynorth francecentral |
| 커스텀 사진 아바타 생성 | 상단과 동일한 11개 리전 |
| 커스텀 비디오 아바타 트레이닝 | westus2 / southeastasia / westeurope 세 곳만 지원 |
아바타 음성 동기화 (voice-sync-for-avatar) | westus2 eastus eastus2 southeastasia westeurope swedencentral |
francecentral에는 용량 제한에 대한 주의 사항이 있습니다.
japaneast와 japanwest는 지원 대상에서 제외되므로, 일본 리전에 치중된 구성으로는 아바타를 사용할 수 없습니다.
또한, Personal Voice의 지원 리전과도 일치하지 않습니다. 음성과 아바타를 하나의 리소스로 맞추고 싶다면, 양쪽 모두 지원하는 곳은 eastus / eastus2 / southeastasia / swedencentral / westeurope / westus2의 6곳입니다.
최신 목록은 Speech Service 리전 표의 '음성 합성 아바타' 탭에서 확인할 수 있습니다.
Microsoft Foundry는 종량제(pay-as-you-go) 방식으로, 리소스를 생성하거나 모델을 배포만 한다고 해서 비용이 청구되지는 않습니다. 이 기능만을 위해 별도의 리전 환경을 준비하는 선택도 가능합니다.
표준 아바타는 신청 없이 사용할 수 있습니다. 커스텀 사진 아바타는 Limited Access 기능을 사용하며, 자격 및 사용 조건에 따라 접근이 제한되므로 사전에 신청이 필요합니다. 실제로 사용해 보면 알겠지만, 재현성이 상당히 높기 때문에 딥페이크(deepfake)와 같은 악용 가능성을 고려하여 이러한 신청 방식을 채택했을 수 있습니다.
- Limited Access 등록 양식 열기
- 조직과 연결된 이메일 주소로 양식을 작성하고 제출해야 합니다.
공식 Limited Access 페이지에는 대상자에 대해 다음과 같이 명시되어 있습니다.
Only customers managed by Microsoft, meaning those who are working directly with Microsoft account teams, are eligible for access. (Microsoft가 관리하는 고객, 즉 Microsoft 계정 팀과 직접 협력하는 고객만이 접근 자격이 있습니다.)
또한, 공식 FAQ에는 심사 기준 및 이메일 주소 조건이 명시되어 있습니다.
신청 후 5~10 영업일 이내에 심사에 관한 연락을 받게 됩니다.
등록 양식에는 조직과 연결된 이메일 주소를 사용해야 합니다. 개인 이메일 주소로 제출된 등록 양식은 거부됩니다.
참고로, 연락처에 사용할 수 있는 이메일 주소는 Gmail 등은 이용할 수 없습니다. Microsoft의 경우 소위 조직 계정의 이메일 주소를 사용해야 합니다. 아마도 개인 이메일 주소로 제출한 양식은 거부될 가능성이 높습니다.
양식 자체는 Personal Voice와 공통적이지만, 신청은 기능별로 따로 해야 합니다. 저는 아바타와 Personal Voice에 대해 총 2회 제출했습니다.
Microsoft가 제공하는 전신 캐릭터들입니다. Rowan, Celine, Nia, Malik, Harry, Lisa, Lori, Max, Meg 등이 있으며, 캐릭터마다 여러 스타일(비즈니스, 캐주얼, 포멀 등)을 가집니다.
character와 style로 지정합니다.
"avatar": {
"type": "video-avatar",
"character": "lisa",
...
}
비디오 아바타는 넓은 프레임 안에 전신이 배치되어 있기 때문에, crop을 지정하여 잘라내지 않으면 배경만 가득한 영상이 됩니다. 위의 예시에서는 1920x1080의 중앙 부근(560〜1360)을 추출했습니다.
표준 비디오 아바타에는 Voice Live에서 사용할 때 알아두어야 할 제약 사항이 3가지 있습니다.
첫째는 2026년 12월에 사용 불가능해지는 아바타와 스타일이 있다는 것입니다. Jeff의 아바타와 Lisa의 graceful-sitting / graceful-standing / technical-sitting / technical-standing은 2026년 12월부터 이용할 수 없습니다. 그전에 다른 표준 아바타로 전환하거나, 커스텀 아바타를 만들거나, 서비스 측에서 선택하는 대체 아바타에 맡기는 세 가지 중 하나가 필요합니다. 참고로 Lisa의 이 4가지 스타일은 원래 실시간 TTS API에서는 사용할 수 없습니다 (Voice Live는 실시간 영역이므로, 폐지를 기다리지 않고 선택할 수 없습니다).
둘째는 제스처가 배치 합성(batch synthesis) 전용이라는 것입니다. 캐릭터별로 준비된 제스처(hello, thanks 등)는 배치 합성 API 전용이며, 실시간 API에서는 사용할 수 없습니다.
셋째는 실존 배우를 기반으로 한 아바타가 있다는 것입니다. Harry, Jeff, Lisa, Lori, Max, Meg은 실제 배우를 바탕으로 제작되었으며, 사용 여부는 Microsoft와 배우의 라이선스 계약 유효성에 달려 있습니다. 계약이 만료되면 사용할 수 없게 됩니다 (Jeff 폐지가 그 예입니다). 변경 사항은 Microsoft에서 사전에 통지됩니다.
장기 운영할 제품에 표준 아바타를 통합하는 경우에는 첫째와 셋째 사항을 고려해야 합니다.
Lisa에게는 business-sitting / business-standing / coach-sitting / coach-standing의 4가지 스타일이 프리뷰로 추가되었습니다. 폐지되는 graceful/technical 계열을 대체할 후보로는 우선 이 부분이 고려될 수 있습니다.
머리 부분만 아바타입니다. 34개가 준비되어 있으며, 각각 베이스 모델(vasa-1 또는 vasa-2)이 결정되어 있습니다.
adrian, amara, amira, anika, bianca, camila, carlos, clara, darius, diego,
elise, farhan, faris, gabrielle, hyejin, imran, isabella, layla, liwei, ling,
marcus, matteo, rahul, rana, ren, riya, sakura, simone, zayd, zoe
leonie, leonie professional, george, marcel
이 경우 customized를 false로 유지합니다. 신청이 필요하지 않으므로, Voice Live에서 아바타가 작동하는지 확인하고 싶다면 여기부터 시작하는 것이 빠릅니다. 또한, 표준 photo avatar는 모두 style이 N/A이며, video avatar와 같은 스타일 지정은 할 수 없습니다.
vasa-2는 프리뷰이며, 다음 제약 사항이 있습니다.
- 사용 가능한 리전은 West US 2 / Central India / Southeast Asia / Sweden Central의 4곳뿐입니다.
- 배치 합성(batch synthesis)을 지원하지 않습니다 (실시간 전용).
vasa-2 캐릭터를 사용하려면 model에 vasa-2를 지정해야 합니다. vasa-1 캐릭터에 vasa-2를 지정할 수 없습니다 (역도 마찬가지입니다).
캐릭터와 베이스 모델의 대응 관계는 공식 지원 표준 아바타의 "Photo avatars" 표에서 확인할 수 있습니다. 이전에는 이 목록이 "Talking heads"라는 이름이었으나, 현재는 "Photo avatars"로 변경되었습니다. 생성 위치는 Speech Studio가 아닌 Microsoft Foundry입니다.
-
Microsoft Foundry에 로그인하고, [새로운 Foundry] 토글이 켜져 있는지 확인합니다.
-
아바타를 생성할 리소스 프로젝트를 열고, 상단 메뉴에서 [빌드(Build)]를 선택합니다.
-
왼쪽 패널의 [서비스(Services)]를 선택한 후, 표시되는 서비스 목록에서 [음성(Speech)]을 선택합니다.
-
[사용자 지정 모델 (Custom models)] 탭을 열고, [맞춤 설정] 목록에 있는 [만들기(作成)] 버튼을 누릅니다.
-
[모델 선택]에서 [Azure Speech - Text to Speech Avatar], [유형]에서 [사진 아바타]를 선택하고, 아바타 이름을 입력한 후 [다음] 버튼을 누릅니다.
-
[데이터]에서 이미지를 추가합니다 (후술).
-
실사 인물인 경우, [아바타 인재 등록]에서 동의 영상을 등록합니다 (후술).
-
[검토(Review)]에서 내용을 확인하고 승인 체크를 한 후 [제출] 버튼을 누릅니다. 기본 모델에는 VASA-1이 표시되어 있었습니다.
-
[맞춤 설정] 목록에서 작업 상태가 [성공]으로 바뀌면 미리 볼 수 있습니다 (절차 4 화면의 목록).
참고로, 이 화면은 이전에는 '미세 조정(Fine-tune)' 안에 있었으며, 2026년 10월 기준 공식 절차에서는 [Services] > [Customizations]에 있었습니다. 2026년 11월 기준으로는 [서비스] > [Speech] > [사용자 지정 모델 (Custom models)] 탭 안에 있습니다.
절차 6의 [데이터 소스 선택]에서는 다음 두 가지 중 하나를 선택할 수 있습니다.
- [이미지를 사용하여 생성]: 사진을 업로드하거나(
.jpg
/.jpeg
/.png
) Foundry에 이미 업로드된 사진을 선택합니다. 새로운 사진은 [데이터 업로드]에서 추가할 수 있습니다 - AI로 생성 (영어 UI에서는 Create with AI): 연령, 성별, 스타일 등을 지정하고 원하는 캐릭터를 문장으로 설명하여 GenAI 이미지 모델로 생성하게 합니다. 이 경우 동의 절차는 생략됩니다 (생성된 아바타 이미지는 생성 성공 후 상세 화면에서 확인할 수 있습니다).
이미지에는 다음 요구 사항이 있습니다.
- 사진 아바타는 머리 부분만 다루므로, 어깨부터 위가 나온 이미지가 바람직합니다.
- 얼굴은 실존 인물 또는 가상 인물로 보여야 합니다. 눈이 지나치게 크거나 하는 애니메이션 스타일의 특징은 지원하지 않습니다.
- 화려한 액세서리나 보석류는 피해야 합니다.
- 머리가 완전히 나와 있고 정면을 바라보고 있어야 합니다.
- 그림자나 가려진 부분이 없어야 합니다.
실존 인물의 사진으로 만들 경우, 해당 인물의 동의가 필요합니다. 구체적으로는 동의서를 읽고 있는 영상을 업로드해야 합니다. Microsoft 측에서 읽어주는 내용이 지정된 스크립트와 일치하는지, 그리고 영상 속 얼굴과 사진 속 사람이 동일 인물인지 검증합니다. 본인의 얼굴로 만들 경우에도 이 동영상은 필요합니다.
동의문 샘플은 Azure-Samples/cognitive-services-speech-sdk 리포지토리의 verbal-statement-all-locales.txt에 있습니다.
동영상의 조건은 다음과 같습니다:
| 항목 | 조건 |
|---|
| 형식 | .mp4 또는 .mov |
| 크기 | 500 MB 미만 |
| 길이 | 3초보다 길고, 1분보다 짧음 |
절차 7의 [아바타 인재 등록]에서는 이미 등록된 화자를 선택하거나, [아바타 인재 추가]를 통해 새로 등록합니다. 한 번 등록한 화자는 다음 아바타 생성 시 재사용할 수 있습니다.
[아바타 인재 추가]에서는 말하는 언어, 아바타 인재 이름, 회사명을 영상에서 읽은 그대로, 같은 언어로 입력합니다. 입력하면, 읽어야 할 동의문이 화면에 표시됩니다.
AI가 생성한 캐릭터로 만들 경우 실존 인물이 아니므로 동의 영상은 필요하지 않습니다. 절차를 순서대로 시험해보고만 싶다면 이 방법이 간편합니다.
같은 '아바타'라도 지정하는 필드가 상당히 다릅니다. video avatar 샘플을 재활용하면 맞지 않으므로, 차이점을 정리합니다.
항목별 비교
| 항목 | Photo Avatar | Video Avatar |
|---|
| 원본 자료 | 정지 이미지 1장을 vasa-1 / vasa-2가 움직임 처리 | 촬영된 비디오 |
model | 필수 (vasa-1 또는 vasa-2) | 불필요 |
crop | 불필요 | 지정 필요 (전신에서 화자를 잘라내는 것) |
video.resolution | 적용 안 됨 | 적용됨 |
style | 표준 캐릭터는 모두 N/A | 스타일을 가진 경우가 있음 |
scene (zoom / position / rotation / amplitude) | photo avatar 전용 | 없음 |
| 映る範囲 (표현 범위) | 머리 부분만 | 전신인 경우도 있음 |
특히 주의해야 할 부분이 바로 video.resolution입니다. 1920x1080을 지정하더라도 그대로 전달되지 않고, 원본 이미지의 종횡비(세로가 긴 헤드샷) 그대로 반환됩니다.
Voice Live API는 웹소켓(WebSocket) 위에서 이벤트를 주고받습니다. 연결하여 세션이 열리면, 클라이언트 측에서 session.update를 보내 세션 설정을 전달합니다. 아바타 지정은 해당 session 객체의 avatar에 작성합니다.
커스텀 사진 아바타의 경우 다음과 같습니다. type에 photo-avatar, model에 베이스 모델인 vasa-1을 지정합니다.
{
"type": "session.update",
"session": {
...
}
표준 video avatar의 예시와 비교해 보면, type과 model 외에 style과 crop을 작성하지 않는 점이 다릅니다.
이 session.update를 보내고 서버로부터 session.updated가 반환되면 설정이 적용된 것입니다. 아바타 영상은 output_protocol이 webrtc인 경우 WebRTC 미디어 스트림으로, websocket인 경우 response.video.delta 이벤트로 도착합니다. 수신 방식의 차이는 다음 번(제7회)에 다루겠습니다.
자체 제작 아바타를 지정할 때는 customized에 true를 지정해야 합니다.
표준 캐릭터와 자체 제작 아바타는 네임스페이스가 분리되어 있습니다. 만약 자체 제작 아바타의 이름을 customized 없이 보내면, 서비스는 표준 캐릭터 중에서 찾으려고 시도하여 발견할 수 없습니다. 이때 반환되는 것은 필드가 모두 null인 빈 에러입니다. 메시지가 비어있기 때문에 원인을 알기 어려워지며, '아바타 이름은 맞는데 오류가 난다'라는 상태에 빠집니다. 반대로, customized: true를 설정한 채 표준 캐릭터의 이름을 지정하는 경우에도, 커스텀 측 네임스페이스에 존재하지 않기 때문에 같은 문제가 발생합니다.
따라서 구현 측에서는 지정된 이름이 표준 캐릭터 목록에 포함되는지 여부에 따라 customized 값을 자동으로 결정해 주는 것이 사용자에게 플래그를 의식시키지 않는 좋은 방법입니다.
SDK 1.2.0에서는 photo avatar 설정을 모두 타입으로 작성할 수 있습니다.
bool customized = !StandardTalkingHeads.Contains(character.ToLowerInvariant());
options.Avatar = new AvatarConfiguration(character, customized)
{
...
}
StandardTalkingHeads는 표준 캐릭터 이름의 집합이며, 위에서 설명한 '이름을 기반으로 customized를 결정하는' 로직을 그대로 구현한 것입니다. 표준 캐릭터가 34체로 늘어났기 때문에 이 집합도 업데이트해야 합니다.
SDK 1.2.0의 PhotoAvatarBaseMode에는 vasa-2 열거형(enum)이 없고, 준비된 것은 Vasa1뿐입니다 (DLL을 확인해도 vasa-1 문자열만 들어있습니다).
하지만 이 타입은 문자열을 받는 생성자를 가지고 있기 때문에, 다음과 같이 작성하면 vasa-2도 전달할 수 있습니다.
options.Avatar.BaseMode = new PhotoAvatarBaseMode("vasa-2");
향후 SDK가 따라잡는다면 PhotoAvatarBaseMode.Vasa2가 될 것입니다.
사진 아바타(photo avatar)만을 설정할 때 scene을 사용하여 표현 방식을 조정할 수 있습니다.
"avatar": {
"type": "photo-avatar",
"model": "vasa-1",
...
| 항목 | 의미 | 실제 테스트 결과 |
|---|
zoom | 확대/축소 | 실질적으로 0~1. 1보다 작으면 축소(0.5는 어깨까지 들어옴). 1.0, 1.2, 2.0은 구별하기 어려웠음 |
position_x / position_y | 위치 (프레임 대비 비율, -1~1) | position_y는 양수일 때 아래로 이동함 |
rotation_x / _y / _z | 회전 (라디안) | ― |
amplitude | 머리 움직임의 크기 (0~1) | 1보다 작으면 움직임이 절제됨 |
zoom의 상세한 동작 방식은 이후 '실제 테스트' 섹션에 작성하겠습니다.
목소리 설정 역시 동일한 session 내의 설정 항목입니다. 이는 avatar와는 별도의 키이기 때문에, 두 가지를 독립적으로 설정할 수 있습니다. 둘을 조합하여 사용할 때는 단순히 양쪽 모두를 기재하면 됩니다.
{
"type": "session.update",
"session": {
...
표준 아바타에 자신의 목소리를 입히는 등의 조합도 가능합니다.
커스텀 비디오 아바타(custom video avatar)의 경우, 아바타를 촬영할 때 녹음된 데이터를 학습하여 사용하는 avatar-sync voice가 있습니다. 이 목소리는 외모와 목소리가 동일 인물로부터 생성됩니다. photo avatar에서는 사용할 수 없습니다.
{
"type": "session.update",
"session": {
...
목소리는 아바타 측에서 가져오기 때문에, voice에는 이름 대신 베이스 모델만 지정합니다. 아바타 이름은 avatar.character에 입력해야 합니다.
scene의 zoom을 0.5 / 1.0 / 1.2 / 2.0으로 테스트해 본 결과, 1보다 작은 값은 기대대로 축소되었으나, 1을 초과하는 값은 1.0과 구별할 수 없었습니다. Speech의 실시간 합성 아바타 문서에서도 범위가 '0~1'로 되어 있으며, 실제 보이는 모습은 이와 일치합니다. zoom은 축소 방향으로만 효과를 보는 것 같습니다.
근접한 구도를 원한다면 zoom보다는 photo avatar는 crop을 사용하지 않고, 원래 이미지가 이미 바스트 업(bust up)이라는 전제를 바탕으로 원본 사진의 구도로 결정하는 것이 좋을 것 같습니다.
커스텀 비디오 아바타는 실제 기기에서 사용할 수 있게 되기까지 몇 가지 지점에서 막혔습니다.
첫째, SDK 1.2.0으로 목소리를 설정했을 때, 아바타 이름이 모델명으로 전송되었습니다. AzureAvatarSyncVoice의 생성자(constructor)가 받는 것은 베이스 모델(PersonalVoiceModels)이지만, PersonalVoiceModels는 문자열로부터 암묵적으로 변환할 수 있기 때문에, 아바타 이름을 전달해도 컴파일은 통과해 버립니다. 샘플도 처음에는 이 문제로 실패했기 때문에, 베이스 모델을 전달하도록 수정했습니다.
둘째, 아바타를 배포하는 리소스 문제입니다. 커스텀 비디오 아바타는 Voice Live를 호출할 때와 동일한 Foundry 리소스에 배포해야 하며, 다른 리소스의 아바타는 사용할 수 없습니다. 학습과 배포 지역이 다르면 Copy to 기능을 사용해 복사합니다. 이때 복사 대상이 voice sync 미지원 지역이라면 목소리가 사라집니다.
모델의 지역에도 제한이 있었습니다. ‘invalid_model: Model gpt-4o is not supported in this region’ 오류가 발생했다면, 해당 리전이 gpt-4o를 지원하지 않는 것입니다. Voice Live 리전 표에서 canadacentral / canadaeast / southeastasia / westcentralus는 gpt-4o 미지원 지역이므로, gpt-4.1 등으로 전환합니다.
마지막으로 요금입니다. photo avatar와 달리, 커스텀 비디오 아바타는 배포되어 있는 동안 호스팅 비용이 계속 발생합니다. 따라서 테스트를 마치면 즉시 삭제하는 것이 좋습니다. (2026년 9월 기준) 예상 요금은 호스팅 ¥95.6/시간, 실시간 아바타 세션 별도 ¥95.6/분, 학습 시 ¥2,389.8/계산 시간이었습니다.
제가 검증했을 때, 학습에는 30.3 계산 시간(체감상 약 10시간)이 소요됩니다. 촬영 비용에 더해, 학습 및 유지 비용 역시 photo avatar보다 상당히 높아집니다.
- Voice Live API의 아바타는 표준 video, 표준 photo, 커스텀 photo, 커스텀 video의 4가지 패턴이 있으며, 신청이 필요한 것은 커스텀 두 가지입니다.
- 표준 photo avatar는 신청 없이 사용할 수 있지만, 캐릭터마다 기본 모델(base model)이 결정되어 있습니다.
- 2026년 12월에 Jeff와 Lisa의 일부 스타일이 폐지됩니다.
- 아바타는 사용 가능한 리전(region)이 제한되어 있으며, 일본 리전은 대상에서 제외됩니다.
- 커스텀 photo avatar는 Foundry의 Speech(Custom models)에서 생성하며, 배포(deploy) 작업은 필요하지 않습니다.
- Voice Live 측에서는
session.update의 avatar를 작성하고, 이를 voice와 조합할 수 있습니다. - 자체 제작 아바타를 지정할 때는 customized를 true로 설정해야 합니다. - 커스텀 video avatar는 동일 리소스에 대한 배포(deploy)가 필요하며, 배포 중에는 과금이 지속됩니다.
음성 관련 내용은 별도 기사에 정리했습니다.
다음 회차(제7회)에서는 아바타의 영상을 WebSocket으로 수신할지 WebRTC로 수신할지를 다룰 예정입니다.