동상과 대화하기: 멀티모달 ElevenAgents 기반 앱 만들기
- 작성자
- Joe Reeve
- 게시일
- 최종 업데이트
동상을 촬영하세요. 묘사된 인물을 식별하세요. তারপর 각 인물이 시대에 어울리는 고유한 목소리로 말하는 실시간 음성 대화를 나눠 보세요.
ElevenLabs의 보이스 디자인 및 Agent API로 სწორედ 이런 경험을 만들 수 있습니다. 이 글에서는 컴퓨터 비전과 음성 생성을 결합해 공공 기념물을 인터랙티브한 경험으로 바꾸는 모바일 웹 앱의 아키텍처를 살펴봅니다. 여기 소개하는 모든 내용은 아래 API와 코드 샘플로 재현할 수 있습니다.
튜토리얼 건너뛰기 - 프롬프트 하나로 만들기
아래 앱 전체는 단일 프롬프트로 제작되었으며, 빈 NextJS 프로젝트에서 Claude Opus 4.5(high)와 함께 Cursor로 성공적으로 원샷 구현을 테스트했습니다. 바로 나만의 앱을 만들고 싶다면 다음 내용을 에디터에 붙여 넣으세요:
문서 링크 대신 ElevenLabs Agent Skills를 사용할 수도 있습니다. 문서를 기반으로 만들어졌으며, 더 나은 결과를 얻을 수도 있습니다.
이 글의 나머지 부분에서는 해당 프롬프트가 만들어 내는 결과를 자세히 살펴봅니다.
작동 방식
파이프라인은 5단계로 이루어집니다:
- 이미지 캡처
- 작품과 등장인물 식별(OpenAI)
- 역사 조사(OpenAI)
- 각 인물의 고유 음성 생성(ElevenAPI)
- WebRTC를 통한 실시간 음성 대화 시작(ElevenAgents)
비전으로 동상 식별하기
사용자가 동상을 촬영하면 이미지가 OpenAI의 비전 지원 모델로 전송됩니다. 구조화된 시스템 프롬프트는 작품명, 위치, 작가, 제작 연도와 더불어 핵심적으로 각 인물의 상세한 음성 설명을 추출합니다. 시스템 프롬프트에는 예상되는 JSON 출력 형식이 포함됩니다:
런던 웨스트민스터 브리지의 부디카 동상 사진에 대한 응답은 다음과 같습니다:
효과적인 음성 설명 작성하기
음성 설명의 품질은 생성되는 음성의 품질을 직접 결정합니다. 보이스 디자인 프롬프팅 가이드에서 자세히 다루지만, 포함해야 할 핵심 요소는 다음과 같습니다. 오디오 품질 마커("Perfect audio quality."), 나이와 성별, 톤/음색(깊은, 울림 있는, 거친), 정확한 억양("British"가 아닌 "thick Celtic British accent"), 그리고 말하기 속도입니다. 설명이 구체적인 프롬프트일수록 더 정확한 결과를 얻습니다. "건조한 유머 감각을 지닌 60대의 지친 뉴요커"는 언제나 "나이 든 여성 목소리"보다 뛰어난 결과를 냅니다.
가이드에서 주목할 몇 가지 사항이 있습니다. 억양의 강도를 설명할 때는 "strong" 대신 "thick"을 사용하고, "foreign"처럼 모호한 표현은 피하세요. 허구 또는 역사적 인물의 경우 실제 억양을 영감으로 제안할 수 있습니다(예: "thick British accent를 지닌 고대 켈트 여왕, 위엄 있고 단호한 목소리").
다음으로 보이스 디자인
보이스 디자인 API는 텍스트 설명을 바탕으로 새로운 합성 음성을 생성합니다. 음성 샘플이나 음성 복제는 필요하지 않습니다. 따라서 원본 오디오가 존재하지 않는 역사적 인물에 특히 적합합니다.
과정은 두 단계로 이루어집니다.
미리보기 생성
text 파라미터는 중요합니다. 더 길고 인물에 적합한 샘플 텍스트(50단어 이상)는 더 안정적인 결과를 만듭니다. 일반적인 인사말 대신 인물에 맞는 대사를 사용하세요. 보이스 디자인 프롬프팅 가이드에서 이에 관해 더 자세히 설명합니다.
음성 저장
미리보기가 생성되면 하나를 선택해 영구 음성을 만드세요:
여러 인물이 있는 동상의 경우 음성 생성은 병렬로 실행됩니다. 인물 5명의 음성도 1명의 음성을 생성하는 것과 거의 같은 시간이 걸립니다:
다중 음성 ElevenLabs Agent 구축하기
음성을 만들었다면 다음 단계는 ElevenLabs Agent를 구성하여 실시간으로 인물별 음성을 전환하는 것입니다.
다중 음성 전환
supportedVoices 배열은 에이전트에 사용 가능한 음성을 알려 줍니다. Agents 플랫폼은 음성 전환을 자동으로 처리합니다. LLM의 응답에서 다른 인물이 말하고 있음을 나타내면 TTS 엔진이 해당 세그먼트를 올바른 음성으로 라우팅합니다.
그룹 대화를 위한 프롬프트 엔지니어링
여러 인물이 순차적인 질의응답이 아니라 실제 그룹처럼 느껴지게 하려면 의도적인 프롬프트 설계가 필요합니다:
WebRTC를 통한 실시간 음성
마지막 요소는 클라이언트 연결입니다. ElevenLabs Agents는 지연 시간이 짧은 음성 대화를 위해 WebRTC를 지원합니다. 이는 WebSocket 기반 연결보다 눈에 띄게 빠르며, 자연스러운 턴테이킹에 중요합니다.
서버 측: 대화 토큰 가져오기
클라이언트 측: 세션 시작하기
useConversation 훅은 오디오 캡처, 스트리밍, 음성 활동 감지, 재생을 처리합니다.
웹 검색으로 리서치 심화하기
대화를 시작하기 전에 더 많은 역사적 맥락을 원하는 사용자를 위해 OpenAI의 웹 검색 도구를 활용한 고급 리서치 모드를 추가할 수 있습니다:
배운 점
이 프로젝트는 텍스트, 리서치, 비전, 오디오 등 다양한 AI 모달리티를 결합하면 디지털 세계와 현실 세계를 아우르는 경험을 만들 수 있음을 보여 줍니다. 교육, 업무, 재미를 위해 더 많은 사람이 탐색해 볼 수 있는 다중 모달 에이전트의 미개척 잠재력이 무궁무진합니다.
지금 시작하세요
이 프로젝트에 사용된 API인 보이스 디자인, ElevenAgents, 그리고 OpenAI는 모두 지금 이용할 수 있습니다.
Joe is on the Growth team at ElevenLabs, focused on helping developers get the most out of the company's frontier audio models. Previously, he was an Engineering Manager at Amplitude and served as CTO of the Coronavirus Tech Handbook, building a real-time collaborative editing platform used by thousands of contributors.




