Live API или связка ASR–LLM–TTS: что выбрать для голоса
Голосового помощника можно построить двумя способами. Первый — подключить нативную модель речи-в-речь через Live API: она слышит поток, рассуждает и отвечает голосом внутри одной сессии. Второй — собрать каскад из распознавания речи, текстовой модели и синтеза голоса. Нативный путь обычно даёт живую реакцию, каскадный — больше контроля. Выбор зависит не от моды, а от того, что именно команда должна проверять и сохранять.
Методика сравнения
Для честного теста используйте одни и те же двадцать диалогов: короткий вопрос, длинное объяснение, перебивание, имя, число, адрес, плохая связь и отказ от действия. Запускайте оба варианта в одинаковой сети и измеряйте четыре точки: конец реплики пользователя, появление первого распознанного фрагмента, начало смыслового ответа и начало звука.
Отдельно оцените точность фактов, соблюдение инструкции, восстановление после перебивания и количество ручных исправлений. Средняя задержка без 95-го перцентиля скрывает редкие длинные паузы. Для звонка именно они создают ощущение, что связь оборвалась.
Нативная модель речи-в-речь
В Live API звук остаётся основной модальностью. Модель лучше сохраняет интонацию, замечает конец реплики и может естественнее реагировать на перебивание. Меньше промежуточных сервисов — меньше сетевых переходов. Карточка Gemini 3.1 Flash Live описывает актуальный класс такого решения: он ориентирован на низкую задержку и диалог в реальном времени.
Цена удобства — слабее видимые промежуточные решения. Текстовая расшифровка может не полностью объяснять, почему модель выбрала тон или прервала ответ. Сложнее заменить только распознавание для акцента или только голос для фирменной озвучки. Preview-версия API также может менять лимиты и поведение, поэтому продакшен требует закреплённой версии и аварийного маршрута.
Каскад ASR–LLM–TTS
Каскад превращает разговор в три независимых этапа. ASR возвращает текст и таймкоды, LLM формирует ответ, TTS озвучивает утверждённый текст. Каждый компонент можно заменить и измерить отдельно. Потоковое распознавание вроде VibeVoice ASR Streaming дополнительно даёт разделение говорящих и словарь терминов.
Недостаток — накопление задержки. Распознавание ждёт кусок аудио, модель ждёт текст, синтез ждёт первые токены. Агрессивный стриминг сокращает паузу, но повышает риск позднего исправления: ASR уточняет слово после того, как LLM уже начала отвечать. Оркестратор должен уметь отменять незавершённый ответ и не произносить неверное число.
Сравнение по главным критериям
| Критерий | Live API | Каскад ASR–LLM–TTS |
|---|---|---|
| Задержка | Обычно ниже, меньше переходов | Выше, но каждый этап измерим |
| Перебивание | Естественнее внутри одной сессии | Требует отдельного детектора и отмены |
| Контроль текста | Ограниченный, зависит от API | Полный текст до озвучивания |
| Замена компонента | Сложнее | Можно менять ASR, LLM и голос отдельно |
| Журналирование | Нужно проектировать вокруг событий сессии | Удобно хранить каждый промежуточный результат |
| Приватность | Один поставщик получает звук и контекст | Возможен локальный ASR и очищенный текст в облаке |
| Отладка | Ошибка может быть внутри общей модели | Проще определить проблемный этап |
Стоимость нужно считать по диалогу
Нельзя сравнивать только цену минуты аудио с ценой токенов. В Live API оплачивается поток и длительность сессии, а в каскаде — распознавание, текстовая модель, синтез и инфраструктура. Добавьте повторные соединения, хранение журналов и контроль качества.
Соберите три профиля: короткий справочный звонок, пятиминутное уточнение и длинная консультация с паузами. Если Live API тарифицирует открытое соединение, молчание может влиять на бюджет. В каскаде долгие ответы увеличивают TTS и токены. Итоговая метрика — стоимость успешно решённого обращения, а не одной минуты.
Приватность и согласие
Голос содержит персональные данные и биометрические признаки. До записи пользователь должен понимать цель, срок хранения и способ удаления. Для Live API уточните, где обрабатывается поток и сохраняются ли фрагменты. Для каскада проверьте каждый сервис: локальное распознавание не помогает, если исходный звук затем уходит в облачный синтез по ошибке.
Минимизируйте журналы. Для отладки часто достаточно очищенного текста, временных меток и технических кодов. Исходное аудио храните только когда есть основание и ограниченный доступ. В гайде по защите агента от prompt injection описаны правила для внешнего контента; голосовой вход следует считать таким же недоверенным источником.
Какой вариант выбрать
Live API подходит для прототипа естественного собеседника, обучения и сценариев, где важны быстрые перебивания и интонация. Начинайте с информационного режима без доступа к деньгам, записям и внешней отправке. Обязательно предусмотрите переход на человека и короткую фразу при потере соединения.
Каскад лучше для регулируемых процессов, точных формулировок, фирменного голоса и команд, которым нужно менять поставщиков по частям. Он также удобен, если распознавание должно работать локально, а текстовая модель получает только очищенный текст. Плата за контроль — сложный оркестратор и более строгая работа с задержкой.
Гибридный вариант часто практичнее: нативная модель ведёт свободный диалог, но перед важным действием система переводит намерение в текстовую форму, показывает пользователю поля и ждёт подтверждения. Это сохраняет естественность, не превращая голос в невидимую кнопку.
Частые вопросы
Что важнее — первая аудиореакция или полный ответ? Измеряйте обе величины. Быстрое «понял» не компенсирует долгую паузу перед полезным ответом.
Можно ли отказаться от расшифровки? Для некритичного диалога — возможно, но без журнала сложнее расследовать ошибку и выполнить запрос на удаление данных.
Как тестировать русский язык? Используйте имена, адреса, склонения, цифры, английские названия и разные микрофоны; общая заявка на поддержку языка недостаточна.