실시간 음성 에이전트와 최첨단 인공지능(Frontier Intelligence) — 보한 리(Bohan Li), 엘리스AI(EliseAI)
AAI Engineer
컴퓨터/소프트웨어AI/미래기술
스크립트
00:00:00제 이름은 보입니다. 오늘 프론티어 인텔리전스를 활용한 실시간 음성 에이전트에 대해 발표하게 되었습니다.
00:00:18효과적으로, 저희 엘리스 AI(Elise AI)가
00:00:22어떻게 음성 에이전트 하네스를 설계하여 필요한 수준의 프론티어급 지능을 갖춘
00:00:28실시간 음성을 구현했는지 이야기해 보려 합니다. 시작하기에 앞서,
00:00:36제가 이전에 일했던 자율주행 차량과 비교하면서, 왜 캐스케이드(Cascaded) 음성 에이전트를
00:00:42특히 이전 자율주행차 분야에서 일했던 경험과 비교하여
00:00:48제 생각에 캐스케이드 음성 에이전트는 이를
00:00:53인식(Perception) 관점에서 바라볼 때 매우 타당합니다. 자율주행 차량의 경우
00:00:59바운딩 박스, 카메라, 라이다가 이에 해당하죠. 음성의 경우 그것은
00:01:05전사(Transcription), 즉 현실 세계의 신호를
00:01:09언어 모델이나 여러분이 다루는 두뇌가 처리할 수 있는 데이터 요소로 효과적으로 변환하는 것입니다.
00:01:17두 번째는 매우 직관적인 플래닝 스택(Planning stack)입니다.
00:01:23여기서는 언어 모델이 인식 단계의 출력값을 받아
00:01:29다시 현실 세계로 내보내고자 하는 출력값을 생성합니다. 그리고 마지막으로 제어(Controls)
00:01:36레이어가 있습니다. 자율주행에서는 플래너가 출력한 주행 경로를 가져와
00:01:43실제 차량을 제어하는 실제 제어값으로 변환합니다. 여기서는 텍스트를
00:01:50음성 에이전트의 생각을 표현하는 데 사용하는 오디오로 변환합니다. 이 요소들 각각을 자세히 살펴보겠습니다.
00:02:00저희는 지능을 희생하지 않으면서 음성 에이전트의 속도를 향상시키기 위해
00:02:08이러한 각 영역에서 몇 가지 흥미로운 트릭을 적용했습니다.
00:02:13첫 번째는 전사기(Transcriber) 레이어입니다. 저희는 이른바
00:02:19스트리밍 투기적 전사기(Streaming speculative transcriber)라는 개념을 생각해 냈습니다.
00:02:24이는 플럭스(Flux)와 같은 빠른 스트리밍 전사기를 스크라이브 v2(Scribe v2)나 정확한 배치 전사기 위에,
00:02:33혹은 그 아래에 계층화하여 더 많은 컨텍스트를 받아들이도록 하는 방식입니다. 조금 느리지만 더 정확한 감지 결과를 제공합니다.
00:02:39이제 한 가지 설정을 통해 살펴보겠습니다. 이 경우 에이전트가 방금
00:02:44이름과 생년월일을 적어달라고 요청하고, 사용자가 이에 대답할 때 타이밍이 어떻게 전개되는지 보겠습니다.
00:02:49먼저 초기 감지 결과를 얻게 됩니다. 스트리밍 레이어로부터 결과를 받죠.
00:02:57정확한 레이어이자 교정 레이어는 텍스트가 동일하므로 작동하지 않습니다.
00:03:05스트리밍 텍스트 감지 결과가 더 들어오게 되며, 이 경우 교정 레이어는 실제로
00:03:11취소됩니다. 새로운 텍스트가 들어왔기 때문에 더 많은 컨텍스트와 오디오가 기존의 정확한 결과를 대체하기 때문입니다.
00:03:21여기서 첫 번째 교정이 이루어집니다. 스크라이브 v2 레이어가
00:03:27질문의 맥락을 이해하기 때문에, 이것이 이름과 생년월일에 대한 이야기라는 것을 파악할 수 있습니다.
00:03:34그리고 몇 가지 감지가 더 이루어집니다. 이들은 단순한 문장 부호이므로 신경 쓰지 않습니다.
00:03:37결과적으로 이 텍스트를 에이전트에게 전달하게 됩니다.
00:03:44다음으로 언어 모델 레이어로 넘어가겠습니다. 여기서는 느리지만
00:03:52지능적인 LLM을 사용하고 있기 때문에 왕복 횟수를 정말 줄이고 싶어 합니다. 우리로 하여금
00:03:58많은 추론을 하게 만드는 주원인은 툴 콜링(Tool calling)입니다. 이를 없애는 한 가지 방법은 백그라운드 에이전트가 툴 콜링을
00:04:05대신 수행하게 하고, 그 결과를 메인 에이전트의 컨텍스트에 다시 집어넣어 메인 에이전트가 마치
00:04:13자신이 툴 콜을 한 것처럼 착각하게 만드는 것입니다. 앞서 언급한 감지 과정을 기억해 보세요. 어떤 일이 일어나냐면, 이 감지 각각이
00:04:26에이전트의 조기 생성을 유발하지만, 사용자가 말을 끝마쳤다는 것을 확인할 때까지는 실제로 이를 출력하지 않습니다.
00:04:38이 경우 사용자는 '네(sure)'라고 말합니다. 에이전트는 사용자가 뭔가 더 말할 것임을 알게 됩니다.
00:04:45사용자 감지 결과로부터 이름과 생년월일을 파악하는 것을 돕는 우리의 백그라운드 툴 콜링은
00:04:51아직 실행되지 않으므로 별다른 일이 일어나지 않습니다. 다음 실시간 감지 결과가 들어옵니다. 여전히 이름은 아니라고 하죠.
00:05:02우리 에이전트는 상황에 맞추어 계속 진행합니다.
00:05:06이제 더 많은 컨텍스트가 돌아옵니다. 에이전트는 이름이 있어야 할 것 같다고 느낍니다.
00:05:11전사 오류가 있다고 생각할 수 있으므로 스펠링을 말해달라고 요청할 것입니다.
00:05:16여전히 이름이나 생년월일은 없습니다. 그리고 마지막으로, 이것은 전사기인
00:05:22스크라이브 v2로부터 온 교정된 최종 실시간 감지 결과임을 기억하십시오.
00:05:27여기서 툴 콜 없이 이루어졌던 에이전트의 성급한 생성은 취소됩니다.
00:05:34백그라운드 에이전트가 마침내 찾고자 하던 이름과 생년월일을 찾아냈기 때문입니다.
00:05:38따라서 다시 트리거되며, 이제 에이전트는 실제로 필요한 컨텍스트를 갖추게 됩니다.
00:05:45여기서 우리가 그것을 수행하고 있는 것을 볼 수 있습니다. 여기서의 툴 콜은 약간의
00:05:49지능을 담고 있습니다. 이름의 오인식을 교정하고,
00:05:53일종의 음성학적 매칭(Phonetic matching)을 수행합니다.
00:05:57그리고 이것이 사용자의 발화 끝이라는 것을 이해하면,
00:06:02출력하게 됩니다. 꽤 표준적인 방식이죠.
00:06:06좋습니다. 다음 레이어는 텍스트 음성 변환(TTS)입니다. TTS의 목표는
00:06:12에이전트가 말한 내용을 가져오는 것이며, 에이전트는 이를 스트리밍
00:06:16방식으로 출력할 것입니다. 따라서 최대한 빨리 오디오를 생성해야 합니다. 이상적인 방법은
00:06:24에이전트가 전체 텍스트 생성을 마치기도 전에 오디오가 재생되도록 하는 것입니다. 이를 통해
00:06:31생성 완료 대기 시간을 숨길 수 있습니다. 이제 스트리밍
00:06:39에이전트 출력을 재생해 보겠습니다. U로 시작하죠. 그리고 더 깊이 들어가기 전에,
00:06:46여기서 소개하는 '프리픽스 캐시(Prefix cache)'라는 새로운 개념이 있습니다. 프리픽스 캐시는
00:06:52에이전트 스트림을 확인하여 해당 단어 시퀀스에 대해 이미 생성된 오디오가 있는지
00:07:02이전 생성 과정이나 혹은 이번 통화 내의 동일한 생성 과정에서부터 존재치 확인합니다.
00:07:10단어 U를 감지합니다. 이 프리픽스 캐시를 위해 우리는 모든 단어마다
00:07:17즉시 적중(Hit)시키기를 원하지는 않습니다. 조금 더 많은 단어를 기다릴 것입니다. 따라서
00:07:24세 단어 후에 프리픽스 캐시가 첫 번째 적중을 기록합니다. 그리고 오른쪽에 있는 것은
00:07:31표준 TTS 제공업체입니다. 카르테시아(Cartesia)는 웹소켓을 지원하는 TTS 엔진입니다.
00:07:36따라서 에이전트를 캐시를 통해 파이핑하고, 웹소켓을 통해서도 파이핑하고 있습니다.
00:07:45더 많은 토큰이 들어오고, 더 많은 캐시가 쌓이며, 웹소켓으로 더 많이 전송됩니다. 특별히 더 말할 것은 없습니다.
00:07:51그리고 이제 첫 번째 고유한 상황이 발생합니다. 실제로 캐시 미스(Cache miss)를 유발하는 토큰을
00:07:59찾아낸 것입니다. 이전 생성 결과를 캐싱하고 있다면 당연합니다. 당신의 이름은...이라고 말하는 것은
00:08:05매우 흔한 일이지만, 일단 이름을 추가하면 갑자기 캐시 미스가 발생하게 됩니다.
00:08:12이 시점에서 우리는 캐시된 오디오를 실제로 내보내게 됩니다. 즉, 'You said your name is' 부분이
00:08:19나머지 스트리밍 텍스트가 돌아오는 동안 출력됩니다. 이 시점에서 사용자는 에이전트의 목소리를 듣습니다.
00:08:25사용자는 무슨 일이 일어나고 있는지 잘 모릅니다. 단지 응답 속도가 매우 빠르다고 느낄 뿐입니다.
00:08:32이제 남은 텍스트가 흘러 들어옵니다. 이 시점에선 이미 캐시에서 출력된 상태입니다.
00:08:38캐시는 할 일을 다 했습니다. 나머지는 카르테시아로 넘길 수 있습니다. 여기서 카르테시아가
00:08:46이 시점까지의 전체 대본을 보게 되는 트릭이 있습니다. 카르테시아 입장에서는 이
00:08:56프리픽스 캐시의 존재를 알지 못합니다. 이 전체 문장을 표준적인
00:09:01자연스러운 억양(Prosody)으로 생성할 뿐입니다. 하지만 우리가 하는 일은 생성이 완료되어 돌아왔을 때, 이미
00:09:08여기서 오디오를 재생했으므로 카르테시아의 오디오 중복분을 억제하고
00:09:13나머지 부분만 재생하는 것입니다. 따라서 사용자가 느끼기에 약간의 어색함이 있을 수 있습니다. 나중에 오디오를 재생해 드릴 텐데,
00:09:21아마 알아채지 못하실 겁니다. 효과적으로 우리는 이 부분을 가져와서
00:09:28이 오디오 재생이 끝난 직후에 바로 출력합니다. 그래서 사용자에게는 끊김 없이 매끄럽게 보입니다.
00:09:35기술적인 세부 사항이 너무 많았으니, 가장 좋은 방법은
00:09:43실제 통화 녹음을 재생하여 직접 확인하는 것 같습니다. 통화를 녹음해 두었으니 어떻게 되는지 들어보시죠.
00:09:53안녕하세요, 보 산부인과 엘리스입니다.
00:09:59안녕하세요, 임신 가능성이 있는 것 같아서 확인차 초음파 검사를 예약하고 싶어요.
00:10:03기쁜 소식이네요. 성함과 생년월일을 말씀해 주시겠어요?
00:10:08네, 엘리스 트라이얼이요. 생년월일은 2303이요.
00:10:15감사합니다. 저희 병원은 처음이신가요?
00:10:24네. 보 산부인과에 오신 것을 환영합니다. 보험 정보를 업로드하실 수 있는 링크를 문자로 보내드릴까요?
00:10:34네. 좋습니다. 보냈습니다. 수신하시면 알려주세요.
00:10:48보험 정보를 수신했습니다. 가장 빠른 예약 가능일은 목요일인
00:10:537월 2일 오전 10시입니다. 잠시만요, 제 캘린더를 좀 확인할게요.
00:11:01네, 천천히 하세요. 다음 주에 가능한 시간 있나요?
00:11:09다음 주라면, 노스 클리닉(North Clinic)에서 에이버리 스톤(Avery Stone) 의사 선생님과의 초음파 예약을
00:11:147월 7일 화요일 오후 2시나 3시에 잡아드릴 수 있습니다. 두 시간 중 괜찮으신 시간이 있으신가요?
00:11:20네, 오후 2시가 좋아요. 좋습니다. 예약이 완료되었습니다. 그때 뵙겠습니다.
00:11:29감사합니다. 안녕히 계세요. 네, 대략 이렇습니다.
00:11:35이러한 스트리밍이나 백그라운드에서 일어나는 수많은 일들을
00:11:43보실 수 있습니다. 바로 이것이 음성 에이전트를 흥미롭게 만드는 점입니다.
00:11:48그리고 진정으로
00:11:55자연스러운 대화를 이끌어내기 위해 하네스 측면에서 많은 노력을 기울일 수 있으며, 그것이 바로 우리가 추구하는 바입니다.
00:11:59마지막으로 간단히 엘리스에 대해 이야기하고 마치겠습니다.
00:12:04엘리스는 본사가 뉴욕에 있으며, 베이 지역(Bay Area)에서도 입지를 넓히려고 하고 있습니다.
00:12:09샌프란시스코의 AI 스타트업들을 떠올릴 때 사람들이 생각하는 것과는
00:12:15금전적으로나 스타일 면에서 조금 다른 회사라고 생각합니다.
00:12:23우리는 실제로 사람들을 돕고, 사람들이 가장 필요로 하는 곳에서 도움을 주는 데 매우 집중하고 있습니다.
00:12:31가장 중요한 삶의 영역인 주거와 헬스케어 분야에서 일하고 있으며 아주 잘 해내고 있습니다.
00:12:37우리 팀에 합류할 수 있는 링크가 여기에 있으며,
00:12:45트위터(@Elyse.ai)에도 많은 글을 올릴 예정이니 팔로우해 주세요. 네, 이상입니다.
00:12:57그럼 트위터에 더 많은 소식을 게시하도록 하겠습니다.
커뮤니티 글
아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!
이 영상에 대해 글쓰기