Голосовые агенты в реальном времени с передовым интеллектом — Бохан Ли, EliseAI
AAI Engineer
컴퓨터/소프트웨어AI/미래기술
스크립트
00:00:00Меня зовут Бо. Я буду рассказывать здесь о голосовых агентах реального времени на базе передовых
00:00:18интеллектуальных моделей. По сути, мы поговорим о том, как мы в
00:00:22Elise AI спроектировали нашу систему голосового агента, чтобы добиться работы с голосом в реальном времени
00:00:28с необходимым нам передовым уровнем интеллекта. Прежде чем начать, я хотел бы
00:00:36провести некоторые параллели о том, почему мы решили использовать каскадные голосовые агенты
00:00:42и особенно сравнить их с беспилотными автомобилями, над которыми я работал
00:00:48ранее. По моему мнению, каскадные голосовые агенты имеют большой смысл, если рассматривать их
00:00:53через призму разбиения на восприятие — для беспилотных автомобилей
00:00:59это, знаете ли, ограничивающие рамки, камера, лидар. Для голоса же это будет
00:01:05транскрипция, по сути эффективно превращающая эти сигналы из реального мира
00:01:09в элементы данных, которые языковая модель или любой другой мозг, с которым вы работаете, может
00:01:17обрабатывать. Второе — это стек планирования, что довольно прямолинейно.
00:01:23Здесь языковая модель принимает выходные данные этапа восприятия и производит
00:01:29результаты, которые нужно выдать обратно в реальный мир. И наконец, существует уровень управления,
00:01:36где в автопилоте вы берете траекторию, выдаваемую планировщиком, и как бы
00:01:43превращаете ее в реальные элементы управления, чтобы управлять автомобилем. Здесь мы превращаем текст в
00:01:50аудио, которое используем для выражения мыслей наших голосовых агентов. И да, здесь я углублюсь
00:02:00в каждый из этих элементов, и мы сделали несколько интересных трюков в каждой из этих областей,
00:02:08чтобы повысить скорость наших голосовых агентов без ущерба для интеллекта.
00:02:13Итак, первое — это уровень транскрибатора. Мы придумали концепцию, названную
00:02:19потоковым спекулятивным транскрибатором, где мы эффективно накладываем быстрый потоковый
00:02:24транскрибатор, такой как flux, поверх или под 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И здесь вступает в силу первая коррекция. Поскольку слой scribe v2 понимает,
00:03:27контекст вопроса, он способен понять, что речь идет об имени и дате рождения.
00:03:34И еще пара распознаваний. Это просто пунктуация. Нам все равно.
00:03:37И в конце концов мы передаем этот текст агенту.
00:03:44Переходим к языковой модели. Здесь, поскольку мы используем медленные, но
00:03:52умных языковых моделей, нам действительно хочется сократить количество обращений, а то, что заставляет нас делать
00:03:58выполнять много инференсов — это вызовы инструментов. Один из способов избавиться от этого — поручить фоновым агентам
00:04:05вызывать инструменты за вас и возвращать результаты в контекст основного агента, чтобы он думал,
00:04:13что сам вызвал инструмент, хотя на самом деле это не так. Помните результаты распознавания ранее? Что произойдет: каждое такое распознавание вызовет
00:04:26раннюю генерацию ответа агента, но мы не будем выдавать ее наружу, пока не убедимся,
00:04:38что пользователь закончил говорить. В этом случае пользователь говорит «конечно». Агент понимает, что пользователь собирается сказать что-то еще.
00:04:45Наш фоновый вызов инструментов, который помогает нам определить имя и дату рождения из речи пользователя,
00:04:51не срабатывает, так что пока ничего особенного. Приходит следующее мгновенное распознавание. Оно говорит, что это все еще не имя.
00:05:02Наш агент подыгрывает и продолжает.
00:05:06Теперь поступает больше контекста. Агент чувствует, что здесь должно быть имя.
00:05:11Он попросит произнести его по буквам, потому что, вероятно, думает, что здесь ошибка распознавания.
00:05:16Все еще нет имени или даты рождения. И наконец, помните, это наше скорректированное
00:05:22финальное мгновенное распознавание от транскрибатора scribe v2.
00:05:27Здесь наша ранняя генерация ответа агента, созданная без вызовов инструментов, будет отменена,
00:05:34потому что фоновый агент наконец смог найти искомое имя и дату рождения.
00:05:38Поэтому произойдет повторный запуск, и теперь у агента есть необходимый контекст.
00:05:45И вы видите здесь, мы это делаем. Вызов инструмента здесь содержит
00:05:49некоторый интеллект. Мы исправляем ошибки распознавания имени,
00:05:53выполняя некое подобие фонетического сопоставления.
00:05:57И да, как только мы поняли, что это конец высказывания пользователя,
00:06:02мы выдаем его наружу. Вполне стандартно.
00:06:06Хорошо, следующий уровень — это синтез речи. Цель синтеза речи
00:06:12состоит в том, чтобы взять то, что сказал агент, а агент выдает это в
00:06:16потоковом режиме. Нам нужно производить аудио как можно быстрее. В идеале можно сделать так,
00:06:24чтобы аудио воспроизводилось еще до того, как агент закончил генерацию всего текста. Это позволяет
00:06:31скрыть задержку завершения генерации. Сейчас я воспроизведу потоковый
00:06:39вывод агента. Он начинается с «Вы». И прежде чем углубляться дальше,
00:06:46представим новую концепцию — префиксный кэш. Префиксный кэш будет
00:06:52просматривать поток агента и проверять, не сгенерировали ли мы уже аудио для этой последовательности слов
00:07:02в ходе предыдущей генерации или, возможно, той же самой генерации в этом вызове.
00:07:10Он видит слово «Вы». Для префиксного кэша мы не хотим
00:07:17срабатывать мгновенно на каждом отдельном слове. Мы подождем еще немного слов. И вот,
00:07:24после трех слов префиксный кэш дает первое попадание. Справа находится наш
00:07:31стандартный провайдер синтеза речи — Cartesia, движок синтеза речи с поддержкой WebSocket.
00:07:36Мы пускаем поток агента через кэш, а также через WebSocket.
00:07:45Поступают новые токены, кэш работает, идет отправка в WebSocket. Здесь особо нечего сказать.
00:07:51И ладно, теперь мы сталкиваемся с первой особенностью: мы обнаружили токен, который фактически
00:07:59приводит к промаху кэша. Это логично, если мы кэшируем предыдущие генерации. Фраза «Вы сказали, что ваше имя»
00:08:05вполне обычна, но как только мы добавляем имя, это внезапно приводит к промаху кэша.
00:08:12В этот момент мы выдаем наше кэшированное аудио. Фраза «Вы сказали, что ваше имя» будет
00:08:19воспроизведена, пока возвращается остальная часть потокового текста. В этот момент пользователь слышит агента.
00:08:25Пользователь особо ничего не понимает. Ему кажется, что просто невероятно высокая скорость отклика.
00:08:32А теперь поступает оставшийся текст. К этому моменту мы уже выдали данные из кэша.
00:08:38Кэш выполнил свою работу. Остальное мы можем отправить в Cartesia. И вот в чем трюк:
00:08:46Cartesia видела всю стенограмму до этого момента. Для Cartesia она не знает
00:08:56о существовании этого префиксного кэша. Она просто сгенерирует это полное предложение со
00:09:01стандартной естественной просодией. Но что делаем мы: когда возвращается генерация, поскольку мы уже воспроизвели
00:09:08аудио здесь, мы можем подавить аудио от Cartesia на этом участке и воспроизвести только оставшуюся
00:09:13часть. У пользователя может возникнуть крошечная заминка. Позже я воспроизведу аудио, и вы
00:09:21поймете, что, скорее всего, даже не заметите. Фактически мы берем
00:09:28эту часть и воспроизводим ее сразу после окончания воспроизведения первого аудио. Для пользователя это выглядит бесшовно.
00:09:35И да, на этом этапе здесь много технических деталей. Лучший способ,
00:09:43пожалуй, просто прослушать звонок и увидеть все в действии. Я записал звонок, давайте послушаем, что получилось.
00:09:53Здравствуйте, это Бо, акушер-гинеколог. Говорит Elise.
00:09:59Здравствуйте, кажется, я беременна и хочу записаться на УЗИ для подтверждения.
00:10:03Отличные новости. Не могли бы вы назвать свое имя и дату рождения?
00:10:08Конечно, это Elise trial. Дата рождения — 2303.
00:10:15Спасибо. Вы у нас впервые?
00:10:24Да. Добро пожаловать в Bo OB-GYN. Могу ли я отправить вам ссылку для загрузки данных страхования?
00:10:34Да. Хорошо. Отправлено. Дайте знать, когда получите.
00:10:48Я получила информацию о вашей страховке. Ближайшее свободное время — четверг,
00:10:532 июля в 10 утра. Секунду, дайте мне проверить мой календарь.
00:11:01Конечно, не спешите. Есть что-нибудь на следующей неделе?
00:11:09На следующей неделе я могу предложить УЗИ у доктора Эйвери Стоун в клинике North Clinic во вторник,
00:11:147 июля в 14:00 или 15:00. Что-нибудь из этого вам подходит?
00:11:20Да, 14:00 подходит. Отлично. Ваш визит забронирован. Ждем вас.
00:11:29Спасибо, до свидания. Ну вот, в общем-то, и все.
00:11:35Да, вы можете видеть весь этот стриминг и то, что множество процессов
00:11:43происходит в фоновом режиме. И это как раз то, что делает голосовых агентов такими интересными.
00:11:48Можно приложить много усилий к программной обвязке, чтобы по-настоящему добиться
00:11:55естественного разговора, к чему мы и стремимся.
00:11:59Хорошо. И напоследок я вкратце хочу рассказать немного
00:12:04об Elise. Штаб-квартира Elise находится в Нью-Йорке, и мы
00:12:09пытаемся расширить свое присутствие здесь, в районе Залива. У нас, пожалуй, другой стиль
00:12:15компании, о котором люди думают, когда представляют себе AI-стартапы в Сан-Франциско,
00:12:23поскольку мы на самом деле очень сосредоточены на том, чтобы помогать людям там, где это нужнее всего,
00:12:31в критически важных сферах жизни. Мы работаем в сфере жилья, здравоохранения, и у нас все отлично получается.
00:12:37Здесь есть ссылка, чтобы присоединиться к нашей команде, и мы будем
00:12:45много публиковать в Твиттере, так что вы можете подписаться на нас @Elyse.ai. Да, это все.
00:12:57Итак, мы будем немного чаще публиковать информацию в Твиттере, и мы будем публиковать еще больше информации в Твиттере.
커뮤니티 글
아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!
이 영상에 대해 글쓰기