URL: https://www.youtube.com/watch?v=MBHOH1NmDqc 날짜: 2026-09-16 채널: aiDotEngineer 원문 제목: Realtime Voice Agents with Frontier Intelligence — Bohan Li, EliseAI 영상 길이: 794초
📌 핵심 질문 / 이 영상이 다루는 핵심 논점
==느린 프론티어급 지능을 포기하지 않고도 음성 에이전트의 응답을 실시간처럼 만들려면, 인지·추론·출력의 각 계층을 어떻게 분리하고 겹쳐 실행해야 하는가?==
- 자율주행차의 인지(perception)·계획(planning)·제어(controls) 분해를 음성 에이전트에 적용한다.
- 빠른 스트리밍 전사와 정확한 배치 전사를 겹쳐 실행해, 짧은 지연과 문맥 정확도를 함께 확보한다.
- 백그라운드 에이전트가 도구 호출을 선행하고, 접두사 캐시(prefix cache)가 이미 생성된 음성을 재사용해 LLM과 TTS의 왕복 지연을 숨긴다.
Bohan Li는 EliseAI가 실시간 음성 에이전트를 설계한 방식을 자율주행 시스템에 비유한다. 현실 세계의 음성을 전사 텍스트로 바꾸는 인지 계층, 텍스트를 해석해 다음 행동을 정하는 LLM 계획 계층, 에이전트의 생각을 오디오로 내보내는 제어 계층을 분리한다. 각 계층에서 결과를 기다린 뒤 다음 단계로 넘어가는 대신, 더 빠른 추정·백그라운드 작업·캐시된 오디오를 먼저 활용하고 정확한 결과가 도착하면 교정하거나 나머지만 이어 붙인다.
1. 자율주행에서 가져온 계층형 음성 에이전트 설계
계층형(cascaded) 구조는 실시간 신호를 처리하는 모듈과 프론티어급 두뇌를 분리해 속도와 지능을 동시에 다루게 한다.
1.1. 인지 계층: 현실의 신호를 언어 모델 입력으로 바꾸기
-
자율주행차의 인지 과정
- 센서 신호: 자율주행차는 카메라(camera), 라이다(LiDAR), 경계 상자(bounding box) 같은 신호에서 주변 세계를 파악한다.
- 데이터 요소화: 센서의 원시 신호를 다음 단계의 두뇌가 처리할 수 있는 구조화된 데이터 요소로 바꾼다.
-
음성 에이전트의 인지 과정
- 전사(transcription): 음성 에이전트는 사용자의 음성 파일을 녹취록으로 바꾼다.
- 언어 모델 입력: 현실 세계에서 들어온 음성 신호를 LLM 또는 다른 추론 엔진이 처리할 수 있는 텍스트 데이터로 변환한다.
1.2. 계획 계층: LLM이 원하는 결과를 만들기
-
입력과 추론
- 인지 결과 수신: 언어 모델은 전사된 인지 계층의 출력을 입력으로 받는다.
- 사용자 목표 해석: 사용자가 원하는 결과를 추론하고, 실제 세계로 내보낼 출력과 행동을 생성한다.
-
속도와 지능의 긴장
- 느리지만 지능적인 모델: 프론티어 수준의 LLM은 풍부한 추론을 제공하지만 각 생성과 도구 호출이 지연을 만든다.
- 왕복 횟수 축소: 음성 대화가 자연스럽게 느껴지려면 LLM 호출과 도구 호출로 생기는 round trip을 줄여야 한다.
1.3. 제어 계층: 텍스트를 실제 음성 행동으로 변환하기
-
자율주행차의 제어
- 궤적 입력: 계획기가 출력한 주행 궤적(trajectory)을 제어 계층이 받는다.
- 실제 제어: 궤적을 차량을 움직이는 실시간 제어 신호로 변환한다.
-
음성 에이전트의 제어
- 텍스트-음성 변환: 음성 에이전트는 LLM이 만든 텍스트를 오디오로 바꿔 자신의 생각을 표현한다.
- 계층별 최적화: 전사·LLM·텍스트 음성 변환(text-to-speech, TTS) 각각에 맞는 기법을 적용해 지능을 희생하지 않고 응답 속도를 높인다.
2. 전사 계층: 스트리밍 투기적 전사기
빠른 전사기와 더 많은 문맥을 보는 정확한 전사기를 겹쳐 실행하면 즉시 반응과 최종 정확도를 함께 얻는다.
2.1. 두 전사기의 역할 분리
-
스트리밍 전사기와 정확 전사기 조합
- 빠른 경로: Flux 같은 빠른 스트리밍 전사기가 음성이 들어오는 즉시 짧은 텍스트를 감지한다.
- 정확한 경로: Scribe V2 같은 정확한 배치 전사기가 더 많은 오디오 문맥을 모아 느리지만 정확한 결과를 만든다.
-
스트리밍 투기적 전사(speculative transcription)
- 겹쳐 놓기: 빠른 스트리밍 전사기를 Scribe V2의 위나 아래에 겹쳐 실행한다.
- 교정 가능성: 스트리밍 경로가 먼저 내놓은 결과를 에이전트가 활용하되, 더 많은 문맥이 도착하면 정확한 경로가 이전 결과를 교정하거나 취소한다.
2.2. 이름과 생년월일을 묻는 질문의 시간순 처리
-
초기 짧은 감지
- 질문: 상담원이 사용자에게 “이름과 생년월일을 알려주시겠습니까?”라고 묻는다.
- 첫 텍스트: 스트리밍 레이어가 사용자의 답변에서 짧은 감지를 먼저 내놓는다.
- 불필요한 실행 생략: 정확 레이어가 같은 텍스트를 만들 예정이면 별도로 실행하지 않는다.
-
새 문맥에 따른 취소
- 추가 감지: 사용자가 말을 이어가면서 스트리밍 텍스트 감지가 몇 차례 더 들어온다.
- 교정 경로 취소: 새 텍스트와 오디오가 추가되면 기존 정확 레이어 작업을 취소한다. 더 많은 문맥과 음성이 예전의 정확한 결과보다 나은 판단 근거가 되기 때문이다.
-
Scribe V2의 첫 번째 교정
- 질문 문맥 활용: Scribe V2는 앞선 질문이 이름과 생년월일을 요구했다는 사실을 문맥으로 파악한다.
- 의미 보정: 전사 결과에서 무엇이 이름이고 무엇이 생년월일인지 구분해 첫 번째 의미 있는 교정 결과를 만든다.
- 무의미한 변화 무시: 뒤이어 들어오는 몇몇 감지는 단순한 구두점 변화이므로 처리하지 않는다.
-
에이전트에 전달
- 최종 텍스트 선택: 중복·구두점 변화보다 의미 있는 전사 결과를 선택한다.
- 추론 시작: 선택된 텍스트를 언어 모델 계층으로 넘겨 다음 응답 생성을 시작한다.
3. LLM 계층: 백그라운드 도구 호출과 조기 생성
LLM의 추론 능력을 유지하려면 도구 호출을 메인 생성의 병목에서 분리하고, 사용자가 말을 끝낸 순간 가장 알맞은 생성 결과를 내보내야 한다.
3.1. 도구 호출을 백그라운드로 옮기기
-
도구 호출이 만드는 비용
- 추론 증가: 느리지만 지능적인 LLM을 사용할 때 많은 inference를 유발하는 대표적인 원인이 tool calling이다.
- 왕복 지연: 메인 에이전트가 도구를 호출하고 결과를 받은 뒤 다시 추론하면 대화에 여러 round trip이 생긴다.
-
백그라운드 에이전트 방식
- 선행 실행: 별도의 백그라운드 에이전트가 이름·생년월일 확인 같은 도구 호출을 대신 수행한다.
- 컨텍스트 주입: 도구 결과를 메인 에이전트의 컨텍스트에 다시 밀어 넣는다.
- 자연스러운 착시: 메인 에이전트는 자신이 도구를 호출해 결과를 얻은 것처럼 컨텍스트를 받지만, 실제로 메인 에이전트가 도구를 호출한 것은 아니다.
3.2. 각 전사 감지에 대한 조기 생성
-
생성 선행과 출력 보류
- 감지별 트리거: 앞서 들어온 각각의 전사 감지가 에이전트의 초기 생성을 트리거한다.
- 발화 종료 대기: 초기 생성 결과를 곧바로 말하지 않고 사용자가 실제로 말을 끝냈는지 확인할 때까지 출력하지 않는다.
-
불완전한 답변에 대한 처리
- 사용자의 “Sure”: 사용자가 “네(Sure)”라고 말해도 에이전트는 사용자가 곧 다른 말을 이어갈 가능성을 어느 정도 감지한다.
- 도구 호출 보류: 이름과 생년월일을 찾는 백그라운드 도구 호출은 아직 실행하지 않는다. 현재 감지된 텍스트만으로는 찾을 정보가 충분하지 않기 때문이다.
- 즉시 감지의 한계: 다음 즉시 감지가 들어와도 아직 이름처럼 보이지 않으면 에이전트는 상황에 맞춰 대화를 이어가며 기다린다.
-
문맥 확장과 재질문
- 이름이 있어야 한다는 판단: 더 많은 문맥이 돌아오면 에이전트는 질문에 이름이 포함돼야 한다고 판단한다.
- 전사 오류 가정: 이름이 여전히 보이지 않으므로 입력에 전사 오류가 있다고 추정한다.
- 철자 요청: 상담원은 이름을 자세히 철자해 달라고 요청한다. 이 시점에도 이름과 생년월일은 아직 확정되지 않았다.
-
정확한 감지 도착과 재생성
- Scribe V2의 최종 교정: Scribe V2가 최종 전사 결과를 내놓으며 찾고 있던 이름과 생년월일을 식별한다.
- 조기 생성 취소: 도구 호출 없이 만들어지던 적극적인(eager) 에이전트 생성은 취소된다.
- 재트리거: 백그라운드 에이전트가 필요한 정보를 찾았으므로 생성이 다시 트리거되고, 메인 에이전트가 실제 컨텍스트를 갖게 된다.
-
도구 결과의 지능적 정제
- 오타 수정: 도구 호출 흐름 안에서 이름의 잘못된 전사를 수정한다.
- 발음 일치(phonetic matching): 철자가 정확히 같지 않아도 발음이 일치하는 후보를 찾아 사용자 이름을 정규화한다.
- 최종 출력: 사용자의 발화가 끝났음을 확인한 뒤 정제된 내용을 에이전트 출력으로 내보낸다.
4. TTS 계층: 스트리밍 음성과 접두사 캐시
에이전트가 답변 전체를 완성할 때까지 기다리지 않고 이미 생성 가능한 음성을 재생하면 텍스트 생성 지연을 사용자의 체감에서 숨길 수 있다.
4.1. 전체 텍스트보다 먼저 오디오 재생하기
-
스트리밍 출력 목표
- 즉시 오디오 생산: 에이전트가 스트리밍 방식으로 텍스트를 내보내므로 TTS도 가능한 한 빠르게 오디오를 만들어야 한다.
- 지연 숨기기: LLM이 전체 텍스트 생성을 끝내기 전에 오디오 재생을 시작해 남은 생성 시간을 가린다.
-
실시간처럼 들리는 이유
- 앞부분 선재생: 먼저 완성된 답변 앞부분을 곧바로 말한다.
- 뒷부분 연결: 뒤의 텍스트와 오디오가 도착하면 앞부분 재생이 끝난 직후 이어 붙인다.
4.2. 접두사 캐시의 동작
-
재사용 대상 탐색
- 스트림 검사: 접두사 캐시(prefix cache)는 에이전트 스트림을 살펴본다.
- 생성 이력 확인: 이전 세대(generation) 또는 같은 통화의 같은 세대에서 동일한 단어 시퀀스의 오디오가 이미 생성됐는지 확인한다.
-
너무 짧은 접두사 방지
- 단어 하나로 히트시키지 않기: 첫 단어인 “you”가 보였다고 즉시 캐시 히트로 처리하지 않는다.
- 세 단어 대기: 조금 더 많은 단어를 기다린 뒤 세 단어가 쌓였을 때 접두사 캐시의 첫 히트를 기록한다.
-
Cartesia와 병렬 연결
- TTS 공급자: Cartesia는 웹소켓(WebSocket)을 지원하는 표준 텍스트 음성 변환 엔진이다.
- 두 경로 전송: 에이전트 스트림을 접두사 캐시로 보내는 동시에 웹소켓을 통해 Cartesia로도 보낸다.
- 스트림 증가: 토큰이 더 들어올수록 캐시에 더 많은 데이터가 쌓이고, 웹소켓을 통한 데이터 전송량도 함께 늘어난다. 이 구간은 특별한 처리 없이 두 경로가 계속 진행된다.
4.3. 캐시 미스 뒤의 자연스러운 이어 붙이기
-
이름에서 캐시 미스 발생
- 공통 접두사: “you said your name is”처럼 여러 통화에서 반복되는 문구는 이전 생성에서 캐시될 가능성이 높다.
- 고유 토큰: 사용자의 실제 이름이 붙는 순간 이전 세대의 접두사와 달라져 캐시 미스가 발생한다.
-
캐시된 앞부분 선출력
- 즉시 양보(yield): 캐시 미스 토큰을 찾은 시점에 캐시된 앞부분 오디오를 사용자에게 내보낸다.
- 동시 생성: “you said your name is”가 재생되는 동안 나머지 스트리밍 텍스트가 계속 돌아온다.
- 체감 효과: 사용자는 내부에서 캐시와 Cartesia가 분기된 사실을 알지 못하고, 에이전트가 매우 빠르게 응답한다고 느낀다.
-
Cartesia 오디오의 접두사 억제
- 전체 문맥 생성: Cartesia는 접두사 캐시의 존재를 모르므로 지금까지의 전체 녹취록을 본 것처럼 완전한 문장을 표준적인 자연스러운 운율(prosody)로 생성한다.
- 중복 재생 방지: 캐시된 앞부분을 이미 재생했으므로 Cartesia가 돌려준 오디오에서는 앞부분을 억제한다.
- 나머지 재생: Cartesia 오디오의 나머지 부분만 캐시 오디오 뒤에 재생한다.
-
사용자 관점의 품질
- 작은 위험: 서로 다른 경로의 음성을 붙이는 과정에서 사용자에게 아주 작은 끊김(hiccup)이 생길 수 있다.
- 거의 인지되지 않음: 실제 재생을 들어도 대부분 그 차이를 알아차리지 못할 정도로 작다.
- 매끄러운 연결: 캐시 오디오가 끝나는 직후 Cartesia의 남은 오디오를 내보내 사용자에게는 자연스러운 한 문장처럼 들린다.
5. 실제 EliseAI 음성 에이전트 통화
엘리스(Elise)는 산부인과 예약이라는 민감하고 중요한 업무를 스트리밍 대화와 백그라운드 처리로 수행한다.
5.1. 환자 의도 파악과 신원 확인
-
통화 시작
- 에이전트: “This is Bo OBGYN Elise speaking.”(Bo 산부인과의 Elise입니다.)
- 사용자: “임신했을 가능성이 있어서 초음파 검사를 예약하고 싶어요.”
- 에이전트: “정말 신나는 소식이네요. 성함과 생년월일을 알려주시겠습니까?”
-
전사와 보정
- 이름: 사용자는 “Elise Trial”이라고 답한다.
- 생년월일: 사용자는 “2303”이라고 말하고, 전사 과정은 이를 요청된 신원 정보의 일부로 전달한다.
- 감사와 다음 질문: 에이전트는 감사 인사를 한 뒤 “저희 병원에 처음 오신 환자분이신가요?”라고 묻는다.
5.2. 보험 정보 수집과 첫 예약 제안
-
신규 환자 확인
- 사용자 응답: 사용자는 “Yes.”라고 답한다.
- 환영 인사: 에이전트는 Bo 산부인과에 온 것을 환영한다.
-
보험 업로드
- 문자 링크: 에이전트는 보험 정보를 업로드할 링크를 문자로 보내도 되는지 묻는다.
- 동의: 사용자는 “Sure.”라고 답한다.
- 전송 확인: 에이전트는 링크를 보냈다고 알리고 받으면 알려 달라고 한다.
- 수신 처리: 에이전트는 사용자의 보험 정보를 받았다고 확인한다.
-
첫 번째 예약 가능 시간
- 제안: 에이전트는 가장 빠른 예약으로 7월 2일 목요일 오전 10시를 제시한다.
- 사용자 보류: 사용자는 “잠깐만 기다려 주세요. 제 일정을 확인해 볼게요.”라고 말한다.
- 대화 유지: 에이전트는 “천천히 하세요.”라고 답해 사용자가 확인할 시간을 준다.
5.3. 일정 변경과 예약 완료
-
다음 주 일정 탐색
- 추가 질문: 사용자는 “다음 주에 할 일이 있나요?”라고 묻는다.
- 대안 제시: 에이전트는 다음 주 화요일인 7월 7일에 North Clinic의 Avery Stone 박사에게 초음파를 받을 수 있다고 설명한다.
- 두 시간 제시: 가능한 시간으로 오후 2시와 오후 3시를 제시하고 어느 쪽이 괜찮은지 묻는다.
-
확정과 마무리
- 사용자 선택: 사용자는 오후 2시가 괜찮다고 답한다.
- 예약 완료: 에이전트는 “Great. Your appointment has been booked.”(좋습니다. 예약이 완료되었습니다.)라고 확인한다.
- 작별 인사: 에이전트는 그때 만나기를 기대한다고 말하고, 사용자는 감사 인사와 함께 “Bye-bye.”라고 작별한다.
-
통화가 보여주는 시스템 특성
- 지속적 스트리밍: 신원 확인, 보험 링크, 일정 조회와 예약 확정이 모두 스트리밍으로 진행된다.
- 보이지 않는 병렬 작업: 사용자가 듣는 대화 뒤에서 전사 보정, 도구 호출, LLM 생성, TTS 캐시가 동시에 움직인다.
- 하네스의 역할: 자연스러운 대화를 만들기 위해 에이전트 하네스(harness)에 많은 설계 노력을 투입한다.
6. EliseAI가 겨냥하는 문제와 회사의 방향
EliseAI는 음성 기술을 사람들의 삶에서 가장 중요한 영역에 직접 연결하는 것을 사업의 중심에 둔다.
6.1. 회사의 위치와 확장
-
거점
- 본사: EliseAI의 본사는 뉴욕(New York)에 있다.
- 확장: 샌프란시스코 베이 지역(San Francisco Bay Area)에서 사업과 존재감을 확장하려 한다.
-
일반적인 AI 스타트업 이미지와의 차이
- 다른 회사 스타일: 샌프란시스코 AI 스타트업이라고 하면 떠올리는 전형적인 회사 스타일과는 다르다고 설명한다.
- 사람 중심 목표: 기술 자체보다 사람을 돕고, 도움이 가장 필요한 곳에 도움을 제공하는 데 집중한다.
6.2. 주거·의료 영역 집중
-
삶의 핵심 영역
- 주택(housing): 사람이 삶을 유지하는 데 필요한 주거 영역에서 일한다.
- 의료(health care): 산부인과 예약 같은 의료 업무를 음성 에이전트로 지원한다.
-
사업과 채용 안내
- 성과: 주택과 의료 분야에서 사업을 잘 진행하고 있다고 말한다.
- 합류: 팀에 합류할 수 있는 링크를 안내한다.
- 소셜 채널: EliseAI가 Twitter에 자주 게시물을 올릴 예정이므로 계정을 팔로우해 달라고 요청한다.
주요 발언 모음
“프론티어 수준의 지능을 유지하면서 실시간 음성 에이전트를 만들기 위해 각 계층에서 속도를 높이는 흥미로운 기법을 적용했다.” — Bohan Li
“자율주행에서는 경계 상자, 카메라, 라이다가 인지라면 음성에서는 전사가 인지다.” — Bohan Li
“더 많은 문맥과 더 많은 음성이 이전의 정확한 결과를 이긴다.” — Bohan Li
“메인 에이전트가 도구를 호출했다고 생각하게 만들지만, 실제로는 메인 에이전트가 호출한 것이 아니다.” — Bohan Li
“전체 텍스트 생성을 끝내기 전에 오디오를 재생해 생성 지연을 숨기는 것이 이상적이다.” — Bohan Li
“Cartesia는 접두사 캐시의 존재를 모르고 전체 문장을 자연스러운 운율로 생성한다.” — Bohan Li
“사용자에게는 아무 변화 없이 자연스럽게 보인다.” — Bohan Li
“음성 에이전트를 흥미롭게 만드는 것은 스트리밍과 그 배경에서 일어나는 많은 작업이다.” — Bohan Li
핵심 데이터 & 수치
- 794초: 제공된 통화·발표 콘텐츠의 영상 길이다.
- 3단어: 접두사 캐시가 첫 캐시 히트를 기록하기 전에 기다리는 단어 수다.
- 2개 전사 경로: Flux 스트리밍 전사기와 Scribe V2 정확 배치 전사기를 겹쳐 사용한다.
- 2개 TTS 경로: 접두사 캐시와 WebSocket 기반 Cartesia를 동시에 통과시킨다.
- 7월 2일 목요일 오전 10시: 통화 중 제시된 가장 빠른 예약 시간이다.
- 7월 7일 화요일 오후 2시 또는 오후 3시: North Clinic의 Avery Stone 박사 초음파 대안 시간이다.
- 오후 2시: 사용자가 최종 선택한 초음파 예약 시간이다.
- 2303: 데모 대화에서 사용자가 생년월일로 말한 값이다.
- 뉴욕·샌프란시스코 베이 지역: EliseAI의 본사와 확장 대상 지역이다.
결론 및 시사점
- 인지·계획·제어 분리: 자율주행의 계층적 사고를 음성 에이전트에 적용하면 빠른 신호 처리와 깊은 LLM 추론을 서로 다른 속도로 운영할 수 있다.
- 투기적 전사: Flux가 먼저 반응하고 Scribe V2가 문맥을 활용해 교정하게 하면 짧은 지연과 정확한 이름·날짜 인식을 함께 달성할 수 있다.
- 발화 종료 전 조기 생성: 전사 감지가 들어올 때마다 생성 작업을 시작하되, 사용자의 말이 끝날 때까지 출력만 보류하면 유휴 시간을 줄일 수 있다.
- 백그라운드 도구 호출: 메인 LLM이 도구 왕복을 직접 기다리지 않게 하면 프론티어급 모델의 지능을 유지하면서 응답 지연을 줄일 수 있다.
- 접두사 캐시: 흔한 문구의 음성을 재사용하고 고유 토큰부터 Cartesia 결과를 이어 붙이면 전체 문장 생성이 끝나기 전에도 대화를 시작할 수 있다.
- 완전한 문맥을 유지한 TTS: Cartesia에 전체 문장을 보여주고 이미 재생한 접두사만 억제하면, 캐시를 사용하면서도 자연스러운 운율을 보존할 수 있다.
- 하네스가 만드는 자연스러움: 실시간 음성 품질은 단일 모델의 속도만으로 결정되지 않고 전사 취소, 의미 보정, 도구 선행, 오디오 연결을 조율하는 하네스에 달려 있다.
- 고가치 업무 적용: 주거·의료처럼 사람이 실제로 도움을 필요로 하는 영역에서 예약·정보 수집 업무를 자연스러운 음성 대화로 자동화할 수 있다.
