<НА ГЛАВНУЮ

Дизайн полностью стримингового голосового агента

Создайте голосового агента с низкой задержкой, используя стриминг ASR, LLM и TTS.

Обзор

В этом уроке мы создаем полностью стриминговый голосовой агент, который отражает работу современных систем разговорного взаимодействия с низкой задержкой в реальном времени. Мы моделируем полный конвейер — от фрагментированного аудиовхода и стриминга распознавания речи до инкрементного размышления языковой модели и потокового синтеза речи, при этом явно отслеживая задержку на каждом этапе. Работая в условиях строгих бюджета по задержке и наблюдая за метриками, такими как время до первого токена и время до первого аудио, мы сосредотачиваемся на практических инженерных компромиссах, формирующих отзывчивый пользовательский опыт на основе голоса.

Основные структуры данных

Мы определяем основные структуры данных и состояния, которые позволяют нам отслеживать задержку по всему голосовому конвейеру. Мы формализуем временные сигналы для ASR, LLM и TTS, чтобы обеспечить согласованное измерение на всех этапах. Мы также устанавливаем четкую машину состояний агента, которая определяет, как система переходит между состояниями во время разговорного взаимодействия.

Имитация аудиовхода

Мы симулируем ввод аудио в реальном времени, разбивая речь на фиксированные по времени фрагменты, которые поступают асинхронно. Мы моделируем реалистичные скорости речи и поведение стриминга, чтобы имитировать живой ввод с микрофона. Этот поток служит основой для тестирования компонентов, чувствительных к задержке.

Реализация стримингового ASR

Мы реализуем модуль стримингового ASR, который выдает частичные транскрипции перед финальным результатом. Постепенно раскрывая слова, мы отражаем, как современные системы ASR работают в реальном времени. Также вводим финализацию на основе тишины, чтобы приблизиться к определению конца высказывания.

Стриминг LLM и TTS

На этом этапе мы моделируем стриминговую языковую модель и движок синтеза речи, которые работают вместе. Генерируем ответы по токенам, чтобы учесть задержку до первого токена, а затем преобразуем инкрементальный текст в аудиофрагменты для раннего синтеза речи.

Оркестрация голосового агента

Мы оркеструем полный голосовой агент, связывая аудиовход, ASR, LLM и TTS в один асинхронный поток. Мы фиксируем точные временные метки на каждом этапе для вычисления критических метрик задержки. Каждое пользовательское взаимодействие рассматривается как отдельный эксперимент для систематического анализа производительности.

Запуск демонстрации

Мы запускаем всю систему через несколько разговорных взаимодействий, чтобы наблюдать за согласованностью задержки. Используя агрессивные бюджеты задержки, мы можем нагрузить конвейер в условиях реалистичных ограничений, проверяя цели отзывчивости.

Заключение

В этом руководстве мы продемонстрировали, как организовать полностью стриминговый голосовой агент как единый асинхронный поток с четкими границами этапов и измеримыми показателями производительности. Сочетание частичного ASR, стриминга LLM на уровне токенов и раннего начала TTS уменьшает воспринимаемую задержку, создавая надежную основу для развертываний в реальных условиях. Полный код доступен ЗДЕСЬ.

🇬🇧

Switch Language

Read this article in English

Switch to English