GPT-Live는 대화 특유의 리듬을 살려 사용자 경험을 개선합니다. 사용자는 대화 도중에 끼어들거나 화제를 바꾸고, 말하면서 생각을 구체화할 수 있습니다. 음성을 전사 모델, 언어 모델, 음성 생성 모델에 차례로 전달하는 방식과 달리 GPT-Live는 듣기와 말하기를 동시에 수행합니다. 덕분에 무슨 말을 하는지만큼이나 언제 말을 건네고 끼어드는지도 중요한 상황에서 더 자연스럽게 대화를 나눌 수 있습니다.
이 글에서는 Juno, Picsart, Treater, Weekend가 GPT-Live로 제품을 개발하면서 다음 주제에 관해 배운 점을 직접 들려줍니다.
- 실제 운영 데이터로 통화 품질 개선하기
- 사용자가 신뢰할 수 있는 목소리 찾기
- 백그라운드 에이전트와 작업 조율하기
- 여러 음성 에이전트의 협업 조율하기
각 팀이 제품을 다듬는 데 활용한 프롬프트와 워크플로우, 피드백을 살펴보고, 다른 개발자도 자신의 애플리케이션에서 시험해 볼 수 있는 아이디어를 소개합니다.
스타트업 이야기

Juno가 GPT-Live로 환자들이 자연스럽게 대화할 수 있는 음성 동반자를 만드는 방법
글: Marshall Gould 공동 창업자 겸 CEO, Isaac Tolley 공동 창업자 겸 CTO
저희는 롱코비드, 기립성 빈맥 증후군(POTS), 엘러스-단로스 증후군(EDS) 같은 만성 질환을 안고 살아가는 사람들을 위한 개인 건강 어시스턴트 Juno를 만들고 있습니다.
우리가 만들고자 한 것
만성 질환이 일상에 주는 부담은 직접 겪어 봐야 온전히 이해할 수 있습니다. 심한 증상과 피로, 잦은 진료, 무엇이 잘못됐는지 모르는 불안감도 힘들지만, 일일이 챙겨야 할 일도 많습니다. 평소처럼 생활하려 애쓰는 와중에 약을 다시 처방받을 때를 기억하고, 최신 연구를 읽고, 증상을 추적하면서 매일 달라지는 수백 가지 요인과 어떤 관련이 있는지도 살펴야 합니다.
만성 질환을 겪는 사람들, 특히 일상에 쓸 수 있는 에너지가 제한된 사람들에게는 기록 도구도 부담입니다. 직접 입력하는 일에 지쳐 기록 앱이 도움이 된다는 걸 알면서도 사용을 그만두는 사람이 많습니다.
음성이 큰 변화를 가져온 이유입니다. 간단히 한마디만 하면 Juno가 여러 가지를 한꺼번에 기록해 줍니다.
음성 대화에서 여전히 어려운 점
음성 기능은 기본 상태에서도 상당히 뛰어납니다. 말은 사람이 소통하는 가장 자연스러운 수단이지만, 저희는 이를 제품에서 제대로 구현하는 법을 여전히 배우고 있습니다. 아직 다음과 같은 과제가 남아 있습니다.
- 대화의 흐름을 끊지 않고 증상을 기록하거나 필요한 컨텍스트를 가져오기
- 대화를 지연시키지 않고 텍스트 대화의 메모리를 음성 대화로 이어 가기
- 긴 대화를 이어 가기
저는 음성 모델을 해파리에 비유합니다. 반응은 빠르지만 스스로 방향을 잡는 능력은 부족합니다. 사용자가 방금 한 말에 이끌려 가다가 자주 멈춰서 확인을 구합니다. 텍스트 모델은 훨씬 넓은 컨텍스트를 활용할 수 있어 사용자가 매번 상황을 설명하지 않아도 먼저 필요한 일을 제안합니다. 음성 모델에는 방향을 잡아 줘야 합니다.
음성 에이전트를 개선한 방법
대화의 흐름을 끊지 않고 기록하고 기억하기
대부분의 음성 에이전트는 어떤 일을 부탁하면 도구로 요청을 보내고 답을 기다립니다. 그사이 대화가 뚝 끊깁니다. GPT-Live는 다른 에이전트에 작업을 위임할 수 있지만, 답이 돌아올 때까지 대화가 멈춥니다. 첫 버전에서는 통화 다섯 건 중 네 건에서 적어도 한 번은 “잠시만요”라는 말 뒤로 약 10초간 정적이 흘렀습니다.
저희는 간단한 방법으로 해결했습니다. 매 턴이 끝날 때마다 작고 빠른 모델(OpenAI의 Decisions API)이 백그라운드에서 두 가지 질문에 답합니다.
- 기록할 내용이 있는가? 있다면 어떤 종류인가?
- 사용자의 이전 기록에서 지금 필요한 내용은 무엇인가?
“두통을 기록해 줘”라고 말하면 Juno는 곧바로 기록이 끝났다는 알림을 받고, 실제 저장은 백그라운드에서 진행됩니다. 바로 다음 턴에 두통에 관해 물어봐도 이미 저장이 끝나 있을 만큼 빠릅니다.
두 번째 답은 메모리에 쓰입니다. 다음 턴의 컨텍스트에는 사용자의 이전 기록 중 지금 필요한 내용만 넣습니다. 음성 모델이 처리할 수 있는 컨텍스트는 텍스트 모델보다 훨씬 적어서 무엇을 넣을지 신중하게 골라야 합니다.
그 결과 텍스트 에이전트에 작업을 넘기는 횟수가 40% 줄었고, 테스트 통화에서 가장 길었던 침묵도 9.3초에서 3.2초로 줄었습니다. 어색하게 기다리던 시간이 대화 중 자연스럽게 한 박자 쉬는 정도로 짧아진 셈입니다.
긴 대화
긴 대화에도 그만큼 세심한 설계가 필요합니다. 해파리처럼 모델은 스스로 방향을 잡기 어려워 길을 안내해 줘야 합니다. 대화의 방향을 잡는 에이전트가 통화 컨텍스트를 갱신하면 Juno는 100번째 턴에서도 첫 턴에 한 말을 기억하고, 대화가 시들해지면 다음에 어떤 이야기를 꺼낼지도 압니다. 긴 대화를 지원하려면 이 기능을 직접 구현해야 합니다. 긴 대화를 나누다 보면 자신의 건강을 이해하는 데 도움이 되는 패턴과 추세가 드러나기 때문에 그만한 가치가 있습니다.
실제 청취 테스트로 Juno의 목소리 찾기
꼭 맞는 목소리를 만드는 일도 말처럼 쉽지 않습니다. GPT-Live의 기본 음성은 이전 모델보다 크게 나아졌지만, 여전히 AI처럼 들린다는 사람이 있습니다. 열 명 중 아홉 명이 마음에 들어 할 목소리를 만들 수 있을까요?
만성 질환이 있는 분들과 진행한 그룹 인터뷰에서 Juno의 말이 조금 느리고 상대를 어린아이 대하듯 한다는 의견이 나왔습니다. 중요한 피드백이라 판단해 목소리를 개선하기 위한 연구를 진행했습니다.
GPT-Live의 텍스트 설명으로 음성을 생성하는 기능을 사용해 짧은 설명문으로 새 목소리를 설계했습니다. 만성 질환이 있는 미국 성인 290명이 이 목소리들을 현재 목소리와 비교했습니다. 모두가 목소리별로 같은 세 문장을 듣고 점수를 매긴 다음, 가장 좋아하는 목소리와 가장 덜 좋아하는 목소리, 지친 날 듣고 싶은 목소리를 하나씩 골랐습니다.
소규모 테스트를 다섯 차례 진행하면서 반응이 좋은 목소리는 유지하고 나머지는 설명문을 다시 썼습니다. 그런 다음 새로 모집한 171명이 현재 목소리와 새 목소리 중 평가가 가장 좋았던 두 가지를 비교했습니다.
최종적으로 가장 좋은 평가를 받은 것은 위 도표의 설명문으로 만든 새 목소리였습니다. 최종 평가에서 현재 목소리보다 이 목소리를 가장 좋아한다고 고른 사람이 많았고, 가장 덜 좋아한다고 고른 사람은 적었습니다. 따뜻함이 부족하다고 답한 사람도 훨씬 적었습니다.
연구에는 한계가 있습니다. 참여자들이 들은 문장은 세 개뿐이고 점수 차이도 작았으며, 목소리를 듣고 평가하는 것과 실제 통화하는 것은 다릅니다. 다음에는 처음 전화를 거는 사용자와의 실제 통화에서 새 목소리를 시험해 다음 날 다시 찾는 사람이 늘어나는지 살펴볼 예정입니다.
지친 날에는 어떤 목소리를 듣고 싶을까?
기운이 다 빠진 날에는 어떤 목소리를 듣고 싶은지도 물었습니다. 이 질문에서는 현재 목소리가 새 목소리를 근소하게 앞섰습니다. 작은 차이였지만 더 큰 질문이 생겼습니다. 왜 우리는 완벽한 목소리 하나를 찾는 데 이렇게 몰두하는 걸까요?
우리 목소리도 늘 같지 않습니다. 상황에 따라 어조와 속도, 목소리 크기가 달라집니다. Juno의 목소리도 사용자의 상태에 맞춰 달라지면 어떨까요? 사람은 상대방이 자신과 비슷한 속도와 크기로 말할 때 그 목소리를 더 신뢰합니다(Levitan 외, 2016). GPT-Live에서는 이미 통화 도중에 Juno의 말하는 방식을 바꿀 수 있습니다. 후속 연구에서는 그 효과를 시험할 예정입니다. 모든 목소리를 직접 들어 보고 전체 결과도 확인할 수 있습니다. junocompanion.com/voice-study
음성으로 만성 질환이 있는 분들이 전에는 어려웠던 일을 할 수 있게 되고 일상이 한결 수월해지는 모습을 보며 놀라곤 합니다. GPT-Live는 훌륭한 기반 모델이고, 그 위에 더한 작은 변화가 일상에서 체감할 만한 차이를 만듭니다.
저자 및 회사 소개
저는 Juno의 창업자 Marshall Gould입니다. Isaac Tolley, Sean Lees, Dawid Wraga 세 연구자와 함께 Juno의 목소리를 만들었습니다. Juno는 만성 질환이 있는 사람들이 건강을 관리하며 일상을 살아가도록 돕는 일을 최우선에 두는 AI 기업입니다. 저희는 팀원 대부분이 직접 만성 질환을 겪으며 이 일에 참여한다는 점을 자랑스럽게 생각합니다. 현재 수십만 명이 Juno를 사용하고 있습니다. 저희의 여정에 함께해 주시면 기쁘겠습니다. 자세한 내용은 junocompanion.com에서 확인하세요.

Picsart가 음성 대화와 에이전트 작업을 동기화하는 방법
글: Dmitry Ivanov, Picsart 시니어 스태프 엔지니어
우리가 만들고자 한 것
창작 작업은 통화가 끝난 뒤까지 이어질 수 있습니다. 저희는 사용자가 작업이 진행되는 동안 Picsart AI 에이전트와 자연스럽게 대화할 수도 있고, 통화를 종료했다가 결과가 준비되면 돌아올 수도 있게 하고 싶었습니다. 창작 아이디어가 처음부터 완성된 모습으로 떠오르지는 않습니다. 원하는 분위기나 대략적인 방향을 말로 풀어 가는 편이 요청 사항을 글로 정확히 적는 것보다 쉬울 때가 있습니다.
GPT-Live는 이 구상을 처음으로 실현할 수 있게 해 준 기술입니다. 실시간 대화가 자연스러워 음성을 단순히 명령을 받아쓰게 하는 수단에서 아이디어를 함께 발전시키는 수단으로 확장할 수 있었습니다. 이를 바탕으로 Picsart AI 에이전트에 같은 대화 경험을 구현했습니다.
그래서 음성을 독립적인 에이전트 인터페이스로 만들면서도 텍스트 채팅과 같은 스레드를 사용하기로 했습니다. 실시간 대화는 GPT-Live에 맡기고, 추론과 도구, 계획, 저장된 컨텍스트는 자체 지능 처리 계층에서 관리합니다.
대화와 작업을 분리하는 구조

그림과 같이 앱은 지능 처리 계층에 작업을 보내고, GPT-Live에 컨텍스트와 답변을 돌려줍니다. 공유 WebSocket을 통해 작업을 전송하고 진행 상황과 결과를 받습니다. 음성과 텍스트 모두 같은 에이전트와 작업 절차, 승인 규칙을 사용합니다.
음성 게이트웨이는 선택한 에이전트의 지침으로 세션을 설정합니다. 실시간 오디오는 WebRTC를 통해 브라우저와 OpenAI 사이에서 직접 전송됩니다. 제출된 작업은 통화가 끝난 후에도 계속 진행될 수 있습니다.
에이전트에 요청 보내기
GPT-Live가 메인 에이전트에 작업을 요청하면, 음성으로 받은 요청과 최근 메시지, 첨부 파일에 음성 모드 표시를 붙여 현재 에이전트와 스레드에 보냅니다. 제출 시점의 컨텍스트를 저장하므로 이후 발화가 대기 중인 요청을 덮어쓰지 않습니다.
메인 에이전트에는 음성으로 전달하기 좋은 답변을 작성하라고 지시합니다. 답변은 짧은 대화체로 쓰고, 질문은 한 번에 하나씩 하며, 음성으로 이미 확인한 내용은 되풀이하지 않습니다. 어떤 작업을 하는지, 비용은 얼마인지, 무엇을 승인해야 하는지도 분명히 밝힙니다.
음성 에이전트가 알아야 할 내용과 말해야 할 내용
음성 에이전트에는 세 종류의 정보를 제공합니다.
| 채널 | 전달하는 내용과 음성 에이전트의 활용 방식 |
|---|---|
| instructions | 에이전트의 정체성, 에이전트에 작업을 요청할 시점을 정하는 규칙, 대화 규칙 |
| thinking | 소리 내어 읽지 않고 컨텍스트로 활용할 최근 메시지, 작업 상태, 선별된 도구 데이터, 사용자 동작 |
| commentary | 소리 내어 전달할 답변, 질문, 주요 작업 진행 상황 |
thinking 채널은 앱에서 가져온 컨텍스트를 전달합니다. 메인 에이전트의 비공개 추론은 이 채널로 전달되지 않습니다. 선별한 도구 결과를 넘기기 전에 일반적인 인증 정보 필드와 바이너리 데이터를 제거하고 크기를 제한하며, 불완전한 결과에는 표시를 붙입니다.
사용자가 화면을 조작해 에이전트에 요청을 보내면 thinking 채널을 통해 음성 에이전트에도 알립니다. 그러면 음성 에이전트는 다시 묻거나 요청을 중복 제출하지 않고도 요청이 접수됐다고 말할 수 있습니다.

일상적인 도구 실행 단계는 음성으로 알리지 않습니다. 계획 실행이 시작되거나 작업이 끝나면 음성으로 알립니다. 스트리밍되는 답변은 문장 단위로 묶어 두었다가 대화가 잠시 멈추면 음성 에이전트에 전달합니다. 최종 답변이 도착하면 이미 보낸 텍스트는 반복하지 않되, 정정된 내용과 승인 질문은 전달합니다.
통화를 시작할 때 불러오는 내용과 저장하는 내용
세션 지침은 에이전트의 역할을 정의합니다. 에이전트가 사용자에 관해 기억하는 내용은 별도로 관리합니다. 통화를 시작할 때 최근 메시지, 첨부 파일 설명, 진행 중인 작업, 대기 중인 승인 요청을 불러와 음성 에이전트가 사용자가 멈췄던 지점에서 이어 갈 수 있게 합니다.
장기 메모리는 메인 에이전트가 관리합니다. 메모리가 활성화되어 있으면 에이전트는 스레드 기록, 요약, 저장된 사실, 사용자 또는 프로젝트의 선호 설정을 활용할 수 있습니다.
사용자가 “전에 저장한 스타일을 써 줘”라고 말하면 메인 에이전트는 해당 스타일을 찾아보거나 명확히 하기 위한 질문을 한 다음 음성 에이전트에 답을 돌려줍니다. 메모리를 사용할 수 없어도 통화는 더 적은 컨텍스트로 계속할 수 있습니다.
스레드에는 에이전트 요청과 거기에 첨부된 메시지가 저장됩니다. 통화 중 오간 모든 말이 저장되지는 않습니다. 일상적인 대화 중에 언급한 선호 사항은 메인 에이전트가 전달받아 저장한 경우에만 남습니다.
작업을 시작하고 이어 가고 중단하는 시점
에이전트가 계획을 설명한 뒤에 그 계획을 음성으로 전달합니다. 작업이 시작됐다고 에이전트가 확인한 후에만 진행 중이라고 말합니다. 제안한 작업과 비용, 승인 질문은 함께 전달합니다. 컨텍스트가 추가되어도 작업 범위나 지출을 늘릴 권한까지 생기지는 않습니다.
업데이트를 놓치면 기존 작업의 상태를 다시 불러옵니다. 작업을 재시작하거나 결과와 승인 질문을 다시 전달하지 않습니다.
사용자가 음성 응답에 끼어들거나 통화를 종료해도 작업은 취소되지 않습니다. 작업을 중단하려면 별도로 요청해야 하며, 이미 진행 중인 동작까지 멈추지는 않을 수 있습니다. 새 요청은 원래 컨텍스트를 유지한 채 현재 턴이 끝나기를 기다립니다. 이미 실행 중인 작업을 바꾸지 않습니다.
우리가 배운 점: 음성 에이전트에는 말할 내용보다 많은 정보를 제공하기
통합 과정에서 얻은 실무 교훈은 다음과 같습니다.
- 메인 에이전트에서 음성으로 전달할 답변을 준비합니다.
- 각 요청을 보낼 때 해당 요청의 컨텍스트를 저장합니다.
- 음성, 텍스트, 화면 조작에 같은 스레드와 규칙을 적용합니다.
- 대화와 작업을 분리합니다.
Picsart 소개
Picsart는 전 세계 1억 명 이상의 크리에이터와 기업이 콘텐츠를 제작하고 마케팅하며 수익을 창출하는 AI 미디어 제작 및 배포 플랫폼입니다.
Picsart는 14년 넘게 차세대 스토리텔러들이 동영상 콘텐츠를 제작하고 제작 규모를 키우도록 지원해 왔으며, 이제는 수익 창출까지 돕습니다. 직관적인 디자인 도구, AI 기반 이미지 및 동영상 생성, MCP와 CLI 기능을 결합해 크리에이터가 어디에서 작업하든 활용할 수 있습니다. 월간 활성 사용자가 1억 명을 넘고 누적 다운로드가 25억 건을 넘은 Picsart는 누구나 주도적으로 창작하고 활동 규모를 넓혀 갈 수 있도록 지원합니다. 크리에이터는 콘텐츠를 통해 자신을 표현하고 영향력을 키우며 사업을 시작할 수 있습니다.

Treater가 통화 성과를 높이기 위해 음성 에이전트를 조정하는 방법
글: Britt O’Daly 공동 창업자 겸 CEO, Ayaz Hafiz 공동 창업자 겸 CTO, Sayd Agzamkhodjaev 소프트웨어 개발자
대화로 성과 내기
저희 음성 에이전트가 한 인력 소개 업체 대표와 통화하면서 채용 담당자들이 일정 관리 소프트웨어를 쓰며 겪는 어려움에 관해 이야기를 나눴습니다.
대표가 이전 솔루션이 왜 잘 맞지 않았는지 설명하는데 에이전트가 “음, 네”, “그렇죠, 그렇죠” 하며 자꾸 말을 끊었습니다. 결국 대표는 이렇게 대화를 마무리했습니다.
아무튼 그냥 이메일로 보내 주세요.
에이전트는 대표가 한 말을 이해했지만, 중간중간 끼어드는 바람에 통화 경험이 나빠졌습니다. 영업 담당자라면 이런 경험에서 배워 다음 통화에서는 대화 방식을 바꿀 것입니다. 저희는 에이전트도 그렇게 하기를 바랐습니다.
Treater는 기업이 전화, 이메일, SMS로 협력사에 연락하고 함께 일할 수 있도록 돕는 AI 에이전트를 개발합니다. 저희 목표는 에이전트가 훌륭한 대화 경험을 제공해 고객이 원하는 성과를 내는 것입니다. 이를 위해 실제 대화를 평가해 개선할 점을 찾고, 새로운 에이전트 구성이 고객 성과에 어떤 영향을 미치는지 시험하는 학습 시스템을 구축했습니다.
다음은 식료품점의 품절 상품을 다시 입고시키기 위해 에이전트가 여러 관계자와 협력하는 데모입니다.
현장에서 배우는 에이전트
GPT-Live를 도입하기 전에는 자체 음성 스택을 구축하고 유지하는 데 많은 시간을 썼습니다. 도입 후에는 스택의 거의 모든 부분을 걷어 내고 간단한 프롬프트로 대체했는데 성능은 오히려 좋아졌습니다. 저희 고객은 대화가 길수록 성과도 좋은 경향이 있습니다. GPT-Live 도입 이후 대화 길이의 중앙값은 26~30% 늘었고, 90백분위수에서는 최대 40% 늘었습니다.
고객이 중요하게 여기는 목표의 달성률은 평균 6%포인트 상승했습니다.
덕분에 “어떻게 하면 우리 맥주 맛이 더 좋아질까”에 해당하는 문제, 즉 끊임없이 변하는 업무 환경에서 어떻게 적응하고 배울지에 더 많은 시간을 쏟을 수 있게 되었습니다. 사람이 일을 하며 성장하듯 에이전트도 현장에서 무엇이 일을 잘하는 것인지 배우기를 바랍니다.
에이전트를 개선하기 위해 각 에이전트의 음성, 프롬프트, 말의 리듬, 사용 가능한 도구를 다양하게 조합해 시험합니다. 모든 대화를 저희 기준(상대의 반응, 수행한 단계 등)과 고객 기준(선호 사항 준수 여부, 목표 달성 정도 등)에 따라 평가합니다. 다중 슬롯머신 알고리즘을 사용해 점수가 높은 구성에 더 많은 통화를 배정하고, 성과가 낮은 구성은 빠르게 제외합니다.
오프라인에서는 검토 시스템이 과거 통화 내용을 읽고 새 구성을 제안합니다. 제안된 구성마다 과거 대화를 재생해 보고, 실제 운영에서의 보상을 예측해 효과가 미미할 변경 사항은 제외합니다. 변경 사항은 고객에게 보내 검토를 받거나, 고객이 원하면 자동으로 배포합니다.
GPT-Live에서는 이런 설정을 손쉽게 바꿀 수 있습니다. 어조와 말의 리듬, 상대의 활기찬 정도에 맞출지, 격식을 얼마나 차릴지, 얼마나 자주 맞장구칠지 등을 바꾸려면 예전에는 음성 스택의 여러 구성 요소를 함께 조정해야 했습니다. 이제는 대부분 프롬프트 한 줄로 바꿀 수 있어 버전 간 차이를 명확하게 비교할 수 있습니다.
데모에서 인력 소개 업체 대표와의 통화를 통해 에이전트가 무엇을 배웠는지 살펴보세요.
이 데모는 앞서 소개한 캠페인을 익명화하고 단순화한 것입니다. 한 기업이 기본 구성의 에이전트로 시작해 인력 소개 업체와 제품 시연 일정을 잡는 과정입니다.
- 시스템이 개선할 점을 발견했습니다. 오프라인 검토 시스템이 보상이 낮은 통화 내용을 읽고 패턴을 찾아냈습니다. 통화의 20%에서 에이전트가 상대방의 말이 끝나기도 전에 맞장구를 치는 문제가 있었습니다. 시스템은 새 구성 네 가지를 제안했습니다.
- 개선안을 시험했습니다. 각 제안을 과거 통화로 시뮬레이션하고 실제 운영에서와 같은 방식으로 보상을 산정했습니다. 말의 속도를 늦춘 베리언트는 점수가 낮아 바로 제외했고 나머지는 검토를 거쳐 승인했습니다.
- 실제 운영에서 평가했습니다. 예상 보상을 기준으로 새 버전에 통화를 배정합니다. 하루도 지나지 않아 버전 B가 대부분의 통화를 담당합니다. 버전 C는 끝내 따라잡지 못해 3일 차에 중지합니다. 2일 차에 추가한 버전 D는 3일 차가 시작될 무렵 선두에 올라 마지막에는 통화의 약 90%를 담당합니다. 환경이 달라질 가능성에 대비해 A와 B에도 소량의 통화를 계속 배정합니다. 통화 100건당 시연 예약은 3.0건에서 4.3건으로 늘어납니다.
이 시스템에서 중요한 점은 계층 구조입니다. 공통 하네스를 개선하면 모든 사용 사례에 효과가 돌아가고, 한 워크플로우에서 배운 내용은 비슷한 워크플로우의 출발점이 됩니다.
우리가 중요하게 여기는 교훈
- 모든 것은 가설입니다. 특히 성과 차이가 분명했던 사례가 있습니다. 고객은 에이전트가 예정된 판촉 행사 이야기로 통화를 시작하기를 원했지만, 최근 상품 판매율이 높아졌다는 이야기로 시작한 통화의 성과가 훨씬 좋았습니다.
- 성과를 잘 드러내고 실제 목표 달성에도 기여하는 결과에 보상을 부여하세요. 신규 계약 체결처럼 보상을 평가하기까지 오래 걸린다면 다음 미팅 예약처럼 빨리 측정할 수 있는 보상에도 투자하세요. 다만 두 결과가 실제로 연관되는지 검증해야 합니다.
- 에이전트가 일하는 환경을 관찰하고 측정하는 데 투자하세요. 시뮬레이션과 벤치마크는 실제 환경의 분포를 정확하게 반영해야 의미가 있습니다.
- GPT-Live에서는 행동을 일일이 지정하는 대신 원하는 모습을 설명하는 방식도 시험해 보세요. GPT-Live 에이전트는 완성된 대본 없이도 상황과 일반적인 지침에 잘 맞춰 대응할 수 있습니다.
GPT-Live 덕분에 대화 품질이 한 단계씩 크게 향상되는 경험을 거듭하고 있습니다. 앞으로 열 단계를 더 올라가면 어떤 모습일지 기대됩니다!
Treater 소개
Treater는 고객의 사업 목표를 달성하기 위해 실제 사람들과 대화하며, 기회 하나하나를 가장 중요한 기회처럼 대합니다. 저희 플랫폼에서는 서로 다른 수천 개의 에이전트가 수십만 건의 통화를 처리합니다. 지난 1년간 통화량은 매월 전월 대비 25%씩 증가했습니다. 상장 기업부터 빠르게 성장하는 스타트업까지 다양한 고객이 사용하고 있습니다. 자세한 내용은 trytreater.com에서 확인하세요.

Weekend의 Wit’s End에서 두 GPT-Live 캐릭터가 한 장면을 함께 이끄는 방법
글: Kevin Shen, Weekend 시니어 소프트웨어 엔지니어, James Wilsterman, Weekend 공동 창업자 겸 CTO
우리가 만들고자 한 것
저희가 만든 Wit’s End는 음성으로 즐기는 판타지 테이블톱 게임입니다. AI 게임 마스터인 바트 경이 이야기를 들려주고 규칙에 따라 게임을 진행하므로 플레이어는 말만 하면 됩니다. GPT-Live의 전이중 오디오 덕분에 실제로 한 테이블에 둘러앉은 느낌이 납니다. 플레이어들은 서로 끼어들고 농담하고 논쟁하며, 바트 경은 플레이어가 말을 마치기 전에도 반응합니다.
아쉬운 점은 등장인물들의 목소리였습니다. GPT-Live 세션 하나는 한 가지 목소리로만 말하기 때문에 성문 앞의 무뚝뚝한 경비대장도, 선술집에서 겁에 질린 할머니도 해설자와 같은 목소리를 냈습니다. 저희는 각 장면의 주요 캐릭터가 저마다의 목소리와 성격으로 직접 말하기를 바랐습니다. 그러면서도 플레이어가 무슨 말을 하든 이야기는 결말에 이를 수 있다는 게임의 장점을 살리고 싶었습니다.
지금은 이런 식으로 장면이 펼쳐집니다. 일행이 팀버폴 성문에 도착하면 바트 경이 장면을 묘사하고 말을 멈춥니다. “무표정한 경비병들이 망을 보는 가운데, 대장이 검에 손을 얹고 앞으로 나와 일행을 훑어봅니다.” 그러면 드미트리 대장이 낮고 걸걸한 목소리로 말을 잇습니다. 대장은 제이드라는 배신자를 쫓고 있는데, 일행의 모습이 공범들의 인상착의와 일치합니다. 플레이어 한 명이 따지고 들자 드미트리도 맞받아칩니다. 다른 한 명은 그에게 슬쩍 금화 한 닢을 건넵니다. 바트 경이 끼어들어 주사위를 굴린다고 알리고, 뇌물이 통했는지 설명한 뒤 드미트리에게 다시 차례를 넘기면 드미트리가 결과에 반응합니다.
두 목소리를 조율하는 디렉터 하나
발언권 배정 방식. 디렉터는 두 세션의 전사문에 대한 Decisions API의 판정으로 다음 화자를 결정합니다. 두 목소리 사이에서 발언권을 넘기고, 게임 마스터의 백엔드에서 주사위 굴리기와 장면 종료를 시작합니다.
각 장면에서는 두 GPT-Live 세션이 나란히 실행됩니다. 하나는 바트 경의 세션이고 다른 하나는 해당 장면에 등장하는 캐릭터(성문의 드미트리, 선술집의 태비사)의 세션입니다. 각각 자체 프롬프트와 맞춤 음성이 있습니다. 게임 서버에서 실행되는 디렉터가 발언권을 배정하며, 발언권이 있는 세션만 플레이어의 말을 듣습니다. 두 세션에 설정된 Decisions API 전사문 트리거가 대화에서 무슨 일이 일어나는지 디렉터에 알립니다. 주사위 굴리기, 장면 종료, 경로 선택과 같은 게임 도구를 호출하는 곳은 Responses 모델을 사용하는 게임 마스터의 백엔드뿐입니다.
서로 다른 두 인물이 엮어 가는 하나의 이야기
각 캐릭터의 설정을 그 캐릭터만의 요소와 공유하는 요소로 나눴습니다.
캐릭터의 성격은 각자의 프롬프트에 담습니다.
각 프롬프트에는 캐릭터의 목소리도 묘사합니다. 이때 해당 목소리를 설계할 때 쓴 표현을 그대로 사용합니다.
장면을 공유하는 예시
장면은 두 세션이 공유합니다. 바트 경과 캐릭터에게 같은 갈등과 해결 방식, 장면에서 반드시 짚고 넘어가야 할 이야기 요소를 제공합니다. 각 요소에는 누가 말해야 하는지 지정합니다. 드미트리는 자신을 소개하고 누구를 쫓고 있는지 말합니다. 태비사는 제이드가 어디에서 일행을 만날지 알려 줍니다. 담당 화자가 각 요소를 모두 말해야 게임이 해당 장면을 끝냅니다.
프롬프트 구조. 바트 경의 음성 세션과 백엔드는 장면의 이야기를 공유하고, 캐릭터는 별도의 페르소나 프롬프트를 받습니다.
캐릭터 프롬프트 발췌
당신은 실시간으로 대사를 주고받는 장면에 등장하는 배우 중 한 명입니다.
세계에 대한 묘사는 해설자가 맡습니다. 당신은 언제나 자신의 역할로만,
1인칭으로 소리 내어 말하세요.
- 절대 해설하거나 자신의 행동이나 목소리를 묘사하지 마세요.
여행자들이나 해설자를 대신해서 말하지도 마세요.
- 위험한 시도의 성공 여부를 직접 결정하지 마세요.
짧게 한마디로 반응하고 멈추세요. 결과는 해설자가 정합니다.
- 여행자가 당신에게 말을 걸거나 당신에게 발언권이 주어졌을 때만
말하세요.디렉터가 다음 화자를 정하는 방법
디렉터는 직접 음성을 생성하지 않습니다. 대신 전사문 조각이 들어올 때마다 Decisions API의 판정을 바탕으로 플레이어가 누구에게 말을 걸고 있는지, 어떤 행동에 주사위 굴리기가 필요한지, 해설이나 캐릭터의 마지막 대사가 발언권을 넘기라는 신호인지 판단합니다.
플레이어가 말하는 동안 판정은 계속 바뀝니다. 디렉터는 턴이 끝나 판정이 확정된 뒤에 누구에게 한 말인지 결정합니다. 반면 위험한 행동은 인식하는 즉시 게임 마스터에게 보냅니다.
상황별 다음 화자
| 상황 | 다음 화자 |
|---|---|
| 바트 경이 해설을 마쳤을 때 발언권 전환 신호의 판정 점수가 0.6 이상이거나 발화를 나타내는 동사로 해설을 맺은 경우(“Tabitha calls after you”) | 캐릭터 |
| 바트 경에게 발언권이 있는데 플레이어가 캐릭터에게 말을 건 경우 | 캐릭터. 대답해야 할 말도 함께 전달합니다. |
| 플레이어가 뇌물 건네기, 거짓말하기, 몰래 지나가기, 싸우기 등 위험한 행동을 시도한 경우 | 바트 경. 필요하면 문장 도중이라도 즉시 발언권을 받습니다. 디렉터가 바트 경의 백엔드에서 주사위를 굴리면 바트 경이 결과를 설명하고 발언권을 돌려줍니다. |
| 플레이어가 해설자에게 질문하거나 자신의 캐릭터가 하는 행동을 설명한 경우 | 바트 경 |
| 플레이어들끼리 이야기하는 경우 | 아무도 말하지 않습니다. 발언권을 가진 화자에게 이번에는 대답하지 말라는 일회성 지시를 보냅니다. |
| 캐릭터가 자신의 역할을 마무리하는 대사를 한 경우(“그럼 가 봐. 눈에 띄지 않게 조심하고.”) | 캐릭터가 말을 마치면 바트 경이 이어받습니다. 디렉터는 바트 경의 백엔드에서 장면 종료를 시작합니다. |
| 발언권을 받은 화자가 2.5초간 침묵하는 경우 | 같은 화자에게 다시 말해 달라는 신호를 보냅니다. |
발언권을 넘기는 과정
발언권은 네 단계로 넘깁니다.
- 발언권을 내주는 세션을 음소거하고, 정지 지시를 내린 뒤 대기열에 있는 오디오를 모두 삭제합니다.
session.thinking.append를 사용해 새로 발언권을 받은 세션에 그동안 듣지 못한 내용을 소리 내어 읽지 않는 컨텍스트로 전달합니다. 해당 세션의 Decisions 컨텍스트에도 같은 대사를 보내 트리거가 동일한 대화 기록을 바탕으로 판정하게 합니다.- 새로 발언권을 받은 세션의 음소거를 해제하고 말할 신호를 줍니다.
- 발언권을 넘기는 도중에 말이 겹치지 않도록 새 화자의 첫 문장이 전달될 때까지 플레이어의 마이크 입력을 보류합니다. 최대 대기 시간은 8초입니다.
캐릭터 세션이 이미 실행 중이라 발언권을 넘긴 뒤 첫 오디오가 나오기까지 평균 0.84초가 걸립니다. 새 세션을 시작하면 1.54초가 걸립니다.
게임이 결말을 향해 나아가게 하기
각 화자는 대사를 즉흥적으로 말합니다. 사건이 일어나는 시점은 앱이 정합니다.
드미트리에게 발언권이 있을 때 플레이어가 뇌물을 건네는 상황입니다. 플레이어가 말을 마치기 전에 주사위를 굴려야 한다는 판정이 도착하면 디렉터가 바트 경에게 발언권을 주고 그의 백엔드에서 주사위를 굴립니다. 바트 경이 결과를 설명하고 나면 전환 신호 판정에 따라 발언권이 드미트리에게 돌아갑니다.
- 디렉터가 직접 주사위 굴리기와 장면 종료를 시작합니다. 한 플레이 테스트에서 바트 경은 “그건 주사위를 굴려 봐야겠군요”라고 했지만 백엔드에 처리를 넘기지 않았습니다. 결국 주사위를 굴리지 않은 채 결과를 지어냈습니다. 이제는 디렉터가 바트 경의 백엔드에서 직접 응답 생성을 시작합니다. 음성 세션은 그동안 짧은 대사를 말한 뒤 결과가 나오면 이를 설명합니다.
- 각 장면의 결말을 주사위로 결정합니다. 첫 번째 장면은 주사위 판정에 성공하면 끝납니다. 주사위를 한 번도 굴리지 않았는데 드미트리가 길을 내주더라도 디렉터는 장면을 종료하지 않고 플레이어의 시도를 주사위 판정에 넘깁니다.
- 캐릭터가 자신의 역할을 마치면 게임 마스터가 장면을 마무리합니다. 태비사가 일행에게 제이드가 정령의 제단에서 기다릴 거라고 알려 주면 디렉터가 바트 경에게 발언권을 줍니다. 바트 경의 백엔드는 장면을 완료로 표시하고, 바트 경은 일행이 떠날 수 있는 두 갈래 길을 제시합니다.
우리가 배운 점
- 플레이어의 말은 한 세션만 들어야 합니다. 두 시스템이 동시에 들었을 때는 테스트 대사마다 둘 다 답했고, 서로 모순되는 경우도 많았습니다. 드미트리가 뇌물을 거절하는데 게임 마스터는 드미트리가 돈을 주머니에 넣었다고 해설하기도 했습니다.
- 세션을 음소거하는 것만으로는 발화를 중단할 수 없습니다. 정지 지시를 내리고 대기 중인 오디오도 삭제하세요. 발언권을 돌려줄 때는 “침묵을 유지하세요”라는 지시를 명시적으로 해제하세요. 이 지시를 그대로 둔 탓에 게임 마스터가 한 장면 내내 아무에게도 대답하지 않은 적이 있습니다.
- 각 목소리의 세션을 미리 실행해 두세요. 목소리는 세션 시작 시 정해지므로 목소리마다 별도 세션이 필요합니다. 장면이 시작될 때 캐릭터 세션도 함께 시작하면 발언권을 넘길 때마다 약 0.7초를 아낄 수 있습니다. 그 차이로 대사가 어색하게 끊기지 않고 자연스럽게 이어집니다.
- 각 판정에 맞는 시점에 행동하세요. 플레이어가 말하는 동안에도 판정은 계속 도착하며, 발화가 끝난 뒤 마지막 판정까지 걸리는 시간의 중앙값은 0.19초입니다. 위험한 행동은 인식하는 즉시 게임 마스터에게 보내세요. 누구에게 한 말인지는 턴이 끝나고 판정이 확정된 뒤 결정하세요.
- 예·아니요로 답할 질문을 참·거짓 조건으로 표현하고, 실제 대사로 임계값을 정하고, 간단한 보완 규칙도 마련하세요. “Should Dmitri speak next?”를 참·거짓 조건으로 평가했을 때는 12건 중 11건을 맞혔고, 두 선택지 중 하나를 고르게 했을 때는 12건 중 8건을 맞혔습니다. 임계값이 0.4일 때는 “You’re going to have to roll the dice for that one”도 전환 신호로 판정되어 주사위를 굴리는 도중에 발언권이 드미트리에게 넘어갔습니다. 실제 전환 신호의 점수는 0.94 이상이어서 저희는 0.6을 사용합니다. 반면 “Tabitha calls after you”의 점수는 0.04였습니다. 그래서 발화를 나타내는 동사를 확인하는 규칙을 두어 캐릭터의 대사가 이어질 지점에서 멈춘 해설도 감지합니다.
- 각 결과를 책임질 주체를 하나로 정하세요. 도구 호출은 게임 마스터의 백엔드만 담당하고, 주사위 굴리기와 장면 종료는 앱이 시작합니다. 덕분에 각 캐릭터가 게임 규칙을 지키면서도 자유롭게 즉흥 연기를 할 수 있습니다.
저자 및 회사 소개
Weekend 팀은 브라우저와 TV에서 음성으로 즐기는 판타지 테이블톱 게임 Wit’s End를 만듭니다. AI 게임 마스터가 이야기를 진행하므로 플레이어는 말만 하면 됩니다. witsend.ai에서 플레이해 보세요.
이전에 Volley라는 이름으로 알려졌던 Weekend는 가족들이 TV 앞에 모여 소리 내어 말하며 함께 즐길 수 있는 음성 게임을 만듭니다. Jeopardy!, Wheel of Fortune, Song Quiz, Wit’s End 등 25개 이상의 게임을 Roku, Fire TV, 삼성 및 LG TV에서 지원하며, 지금까지 3,000만 곳이 넘는 가정에서 플레이했습니다. Weekend는 Microsoft의 M12, Lightspeed Venture Partners, Y Combinator의 투자를 받았습니다.
음성 에이전트의 다음 단계
음성 기술의 다음 단계는 더 나은 대화를 넘어섭니다. 작업을 처리하는 동안에도 계속 귀를 기울이고, 인터페이스가 바뀌어도 컨텍스트를 이어 가며, 대화의 맥락을 놓치지 않고 여러 목소리를 조율하는 소프트웨어입니다. GPT-Live는 동시에 듣고 말할 수 있어 개발자는 사용자가 자기 차례를 기다릴 필요 없이 대화의 리듬에 맞춰 상호작용하는 경험을 만들 수 있습니다.
네 팀의 사례는 이를 실제로 어떻게 구현하는지 보여 줍니다. Juno는 제품을 사용할 사람들과 함께 목소리를 시험합니다. Picsart는 대화와 백그라운드 작업의 상태를 일치시킵니다. Treater는 실제 통화에서 배우고, Weekend는 게임 진행을 제어하면서도 캐릭터마다 고유한 목소리를 부여합니다.
GPT-Live는 사람들이 소프트웨어를 직관적으로 사용하는 방법을 더하고 에이전트가 할 수 있는 일의 범위를 넓힙니다. 사람들은 이야기하면서 창작 아이디어를 구체화하고, 진행 중인 작업의 방향을 잡거나, 이야기 속으로 들어가 다음에 벌어질 일에 영향을 줄 수 있습니다. 이 사례들은 대화가 소프트웨어 작동 방식의 일부가 될 때 개발자가 만들 수 있는 것들의 시작에 불과합니다.
직접 개발을 시작하려면 GPT-Live 시작 가이드와 작업 위임 및 도구 문서를 살펴보세요.







