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


