Перевод текстового агента на голосовой интерфейс — задача, которую часто недооценивают. Кажется, что достаточно добавить распознавание речи и синтез голоса поверх существующей логики. На практике меняется почти всё: транспортный протокол, допустимая задержка, формат ответов и способ управления диалогом.

Amazon Nova 2 Sonic — речевая модель AWS, которая объединяет в одном интерфейсе распознавание речи (ASR), языковое рассуждение и синтез голоса (TTS). Вместо того чтобы выстраивать цепочку из трёх отдельных компонентов, разработчик получает единый двунаправленный поток: аудио на входе, аудио на выходе, инструменты и контекст — внутри. Это принципиально отличается от классической схемы, где LLM получает текст и возвращает текст, а речь обрабатывается отдельными сервисами.

АспектТекстовый агентГолосовой агент
Ввод пользователяНабор текста в своём темпеАудиопоток в реальном времени, возможно перебивание
Формат ответаАбзацы, списки, таблицы, ссылкиКороткие фразы, одна мысль за раз, подтверждения
Допустимая задержкаНесколько секунд с индикатором загрузкиСотни миллисекунд, пауза ощущается как обрыв
Смена репликСтрого: запрос → ответFluid: VAD, определение реплики, barge-in
ТранспортHTTP / REST / Server-Sent EventsДвунаправленный стриминг, постоянное соединение

Архитектурно любой агент — текстовый или голосовой — состоит из трёх частей: клиентского приложения, оркестратора и инструментов. При миграции на голос каждая из них требует разного объёма работы. Инструменты и промпты, как правило, можно переиспользовать без изменений — Nova 2 Sonic принимает те же триггеры инструментов, что и текстовый LLM. Оркестратор упрощается: вместо цепочки ASR → LLM → TTS теперь один вызов модели. Клиентское приложение, напротив, обычно требует полной переработки. Текстовый клиент работает через stateless REST или однонаправленный HTTPS-стриминг. Голосовой клиент нуждается в постоянном двунаправленном соединении — WebSocket или WebRTC — и должен самостоятельно обрабатывать кодирование аудио, логику barge-in (перебивания) и шумоподавление. Прототип на Streamlit, скорее всего, придётся переписать на React.

Голосовой агент требует ультранизкой задержки: пауза в несколько секунд воспринимается как обрыв связи.

Одно из ключевых различий между текстовым и голосовым агентом — требования к задержке. Текстовый пользователь видит индикатор загрузки и спокойно ждёт несколько секунд. В голосовом разговоре пауза длиннее доли секунды воспринимается как обрыв связи. Это напрямую влияет на то, как агент должен вызывать инструменты: последовательные вызовы, каждый из которых добавляет задержку, в голосовом сценарии неприемлемы. Nova 2 Sonic решает это через асинхронные вызовы инструментов — разговор продолжается, пока инструменты выполняются в фоне, а модель адаптирует ответ, если пользователь изменил запрос в процессе.

Формат ответов тоже меняется кардинально. Текстовый агент может вернуть таблицу с балансами счетов, список с маркерами и ссылку на детальную выписку. Голосовой агент обязан разбивать информацию на короткие фразы и запрашивать подтверждение перед продолжением. Пример из документации AWS: вместо полного списка счетов агент говорит «У вас три счёта. Текущий счёт заканчивается на 4521, баланс — три тысячи двести сорок пять долларов. Продолжить или нужны детали по этому счёту?» Такой стиль называют автономным разговорным — агент сам ведёт диалог, а не выгружает всю информацию разом.

AWS также выпустил готовый Skill для Nova sample repo, совместимый с ИИ-IDE Kiro и Claude Code: он автоматически конвертирует текстового агента в голосового. Это снижает порог входа для команд, которые хотят попробовать голосовой интерфейс без глубокого погружения в архитектурные детали.