Перейти к содержимому
Оформить зарубежную карту за $49 Перейти
>AISTUDY_
AUTHORСвежий выпуск №031 → Git и конвейер для агента

Модуль v.0 · Урок 2

Анатомия звонка: конвейер против speech-to-speech

25 мин Проверено 22 октября 2026
v.0 / Урок 2 из 2

Чему вы научитесь

  • Называть все звенья голосового агента и понимать роль каждого
  • Различать классический конвейер и единую speech-to-speech модель
  • Объяснять, что такое латентность и turn-taking
  • Понимать, почему порог около 800 мс — граница «живого» диалога
  • Выбирать словарь, на котором говорит весь остальной трек

Звонок как конвейер

Классический голосовой агент собран из нескольких звеньев, через которые последовательно проходит звук.

flowchart LR
    A[Микрофон / телефон] --> B[VAD: детектор речи]
    B --> C[STT / ASR: речь в текст]
    C --> D[LLM: понимание и ответ]
    D --> E[TTS: текст в речь]
    E --> F[Динамик / телефон]
  • VAD (детектор голосовой активности) понимает, когда человек начал и закончил говорить.
  • STT / ASR превращает речь в текст.
  • LLM понимает запрос и формирует ответ текстом.
  • TTS озвучивает ответ голосом.
  • Транспорт доставляет звук: по телефонной сети (SIP), через браузер (WebRTC) или сырым аудиопотоком (WebSocket).

Плюс конвейера — контроль и дешевизна: каждое звено можно выбрать отдельно и поменять. Минус — задержки и ошибки накапливаются на каждом стыке.

Единая speech-to-speech модель

В 2024–2026 годах отрасль сдвинулась к другому подходу: единым realtime моделям, которые принимают звук и отдают звук напрямую, без распайки на STT, LLM и TTS.

Так работают облачные OpenAI Realtime, Google Gemini Live и xAI Grok Voice, а в открытых весах в 2026 году к ним приблизились мультимодальные модели семейства Qwen2.5-Omni и Qwen3-Omni (arXiv:2603.05413). Они дают паузы, интонацию, перебивание и эмоциональную окраску, потому что не теряют звуковую информацию между звеньями.

ПодходСильные стороныСлабые стороны
Конвейер (VAD-STT-LLM-TTS)Контроль, дешевизна, замена любого звенаНакопление задержки и ошибок, менее естественно
Единая speech-to-speechЕстественность, паузы, barge-in, простотаМеньше контроля, привязка к вендору, цена

Обе архитектуры сегодня живут параллельно. Выбор между ними — тема отдельного урока v.2/03.

Латентность и turn-taking

Главный инженерный вызов голосового агента — не «ум» модели, а задержка и естественная передача хода реплики (turn-taking).

Латентность — это время от момента, когда человек закончил говорить, до момента, когда агент начал отвечать. Turn-taking — это умение не перебивать собеседника и вовремя вступать в разговор.

Если агент думает дольше секунды, человек начинает говорить снова, переспрашивает или кладёт трубку. Поэтому в голосе борьба за миллисекунды важнее, чем борьба за пару баллов в бенчмарке модели.

Почему потоковый конвейер вдвое быстрее пошагового: буфер предложений

В наивном пошаговом (turn-based) конвейере каждое звено ждёт, пока предыдущее закончит работу целиком: сначала полностью распознаётся реплика, затем LLM генерирует весь абзац ответа, и только после этого TTS озвучивает его. По замерам открытого учебника Building Enterprise Realtime Voice Agents from Scratch (arXiv:2603.05413) суммарное ожидание в таком режиме составляет около 400 мс (STT) + 800 мс (LLM) + 400 мс (TTS) = 1600 мс — для живого телефонного разговора это провал.

В потоковом (streaming) конвейере звенья работают внахлёст, а ключевым связующим звеном между LLM и TTS выступает буфер предложений (Sentence Buffer в кастомных сборках или SentenceAggregator в Pipecat):

  1. Как только STT отдаёт подтверждённую фразу (is_final=True), LLM начинает выдавать ответ по одному токену через поток Server-Sent Events (SSE).
  2. Буфер предложений копит токены до первой границы предложения и немедленно отправляет первое готовое предложение в потоковый TTS, пока LLM параллельно дописывает второе и третье.
  3. Первые звуковые чанки уходят абоненту уже через 400 мс (STT) + 300 мс (первое предложение LLM) + 200 мс (TTFB синтеза) ≈ 755–900 мс (arXiv:2603.05413). Остальные предложения синтезируются фоном, пока человек слушает первое.

Чтобы буфер предложений не рвал речь на куски и не создавал микропауз, в боевом коде соблюдают четыре правила (arXiv:2603.05413, раздел 4.5):

  • Граница по знакам конца предложения: разрезать поток по точке, восклицательному или вопросительному знаку, за которым идёт пробел или перенос строки.
  • Фильтр ложных точек: не резать строку на сокращениях (г., ул., т.д., руб., Dr., Mr.) и десятичных дробях (3.14, 10.5).
  • Минимальная длина фрагмента: не отправлять в TTS куски короче 10 символов (например, одиночное «Да.»), чтобы синтезатор не задыхался на крошечных запросах и сохранял слитную интонацию.
  • Принудительный сброс (flush): когда поток токенов от LLM завершился, сразу отправить остаток буфера в TTS, даже если в конце не было точки.

От простого VAD к умному определению пауз (Audio Turn Detector)

Детектор голосовой активности (например, компактная модель Silero VAD весом 2 МБ, обрабатывающая 32-миллисекундный чанк звука менее чем за 1 мс на CPU — arXiv:2603.05413) управляет конечным автоматом состояний звонка:

  • IDLE → LISTENING — абонент начал говорить;
  • LISTENING → PROCESSING — зафиксирована тишина заданной длины (например, 550–700 мс), реплика уходит в обработку;
  • PROCESSING → SPEAKING — агент озвучивает ответ;
  • SPEAKING → INTERRUPTED → LISTENING — абонент перебил агента (barge-in): воспроизведение мгновенно сбрасывается, а микрофон снова слушает человека.

Но у чистого VAD есть фундаментальная слабость: он слышит только тишину и не понимает смысла и интонации. Если клиент скажет: «Секунду, сейчас посмотрю номер договора…» и замолчит на полторы секунды, обычный VAD решит, что реплика окончена, и агент бесцеремонно перебьёт собеседника.

В 2025–2026 годах поверх VAD ставят семантический аудиодетектор конца реплики (например, встроенный TurnDetector в LiveKit Agents — документация LiveKit). В отличие от старых текстовых детекторов, аудиомодель анализирует сырой звук напрямую — одновременно учитывая смысл слов, высоту тона, темп и незавершённую интонацию (даже до того, как STT вернул текст):

ПараметрОбычный VAD по тишинеVAD + Audio Turn Detector
Реакция на паузу «Дайте подумать…»Перебивает через 500–700 мс тишиныЖдёт до max_delay (2,5 с), понимая, что мысль не закончена
Минимальная задержка после явной точки (min_delay)0,5 с (LiveKit Docs)0,3 с — агент отвечает быстрее, когда интонация явно завершена
Максимальное ожидание при заминке (max_delay)3,0 с2,5 с с настраиваемым порогом уверенности (unlikely_threshold)
Где крутится модельЛокально на CPU (Silero VAD, менее 1 мс)Облачная v1 (высокая точность) с автопереключением на локальную CPU-модель v1-mini при таймауте >1 с

Именно связка быстрого VAD (для мгновенного перебивания barge-in) и умного детектора конца реплики (чтобы не перебивать задумавшегося человека и быстрее отвечать на короткие вопросы) даёт ощущение разговора с живым оператором.

Где здесь LLM

«Мозг» агента — это языковая модель. В конвейере вы вольны взять любую: Claude Opus 5 или Sonnet 5, GPT-5.6 (Sol и Terra), Gemini 3.6 Pro или Gemini 4 Argon, Grok 4.20, а из открытых и доступных в РФ без западного биллинга моделей — DeepSeek V4.1 Flash, Qwen 3.8, GLM-5.2 или Kimi K2.6.

В единой speech-to-speech архитектуре модель встроена в API вендора и отдельно её не поменять. Это и есть та самая плата за естественность: вы получаете готовый голос, но теряете свободу выбора «мозга».


Следующий урок

Первый голосовой агент на готовой платформе — соберём рабочий демо-звонок без кода за один урок.