
Про сам продукт мы уже рассказывали в статье «ИИ-секретарь с убедительным голосом и телефонией»: человек звонит владельцу номера, трубку берёт голосовой агент, выясняет, кто и зачем звонит, а запись и текст разговора прилетают владельцу в Telegram. Эта статья про другое. Про то, почему «просто подключить нейросеть к телефону» не работает, сколько миллисекунд стоит одна живая пауза и как мы построили себе лабораторию, в которой эти миллисекунды можно ловить, сравнивать и приручать.
Промптов и алгоритмов здесь не будет, это закрытая часть проекта. Зато будет состав системы, исследования, инструменты, графики и честный рассказ о том, на чём голосовые агенты обычно спотыкаются.
Ключевые проблемы живого разговора
Текстовый чат прощает всё. Ответ пришёл через три секунды? Ничего, человек как раз отвлёкся на кофе. В телефонном разговоре три секунды тишины звучат как «алло, вы меня слышите?», а секретарь, который перебил человека на полуслове, звучит как плохо воспитанный робот. В голосе работает другая физика, и у неё три главные проблемы.
1. Латентность: из чего складывается пауза
Люди в разговоре передают ход друг другу примерно за пару сотен миллисекунд. Всё, что дольше секунды, уже ощущается как заминка. А у голосового агента между последним словом абонента и первым звуком ответа стоит целый конвейер, и каждое звено берёт свою долю:
- Захват звука. Микрофон или телефонная линия отдают звук кадрами. Крупный кадр удобен, но каждый лишний блок в 4096 сэмплов это ещё десятки миллисекунд ожидания.
- Сеть. Звук идёт от телефона через оператора к нам, от нас к модели и обратно. Джиттер (неравномерность прихода пакетов) заставляет держать буфер, буфер добавляет задержку.
- Решение «человек договорил». Самое коварное звено. Пока система не уверена, что реплика закончена, отвечать нельзя. Окно тишины в полсекунды это уже полсекунды задержки, даже если всё остальное работает мгновенно.
- Распознавание и модель. Модели нужно услышать реплику, понять её и выдать первые слова ответа. Если ответ приходит одним куском, а не потоком, озвучка ждёт целиком готовый текст.
- Синтез речи. Время до первого звука у разных моделей озвучки отличается на порядок: от десятых долей секунды у быстрых моделей до нескольких секунд у эмоциональных.
- Воспроизведение. Плеер копит предбуфер, чтобы звук не заикался. У нас в первой версии это было 900 мс, сейчас в разы меньше.
В лаборатории каждая реплика подписывается замером. Например, в одном из тестовых прогонов строка выглядит так: от паузы до ответа 1124 мс, из них окно тишины 500, модель 720, озвучка 255. Это не наша рабочая конфигурация, а просто пример того, как раскладывается секунда. Сразу видно, что дорого, а что почти бесплатно.
2. VAD: кто решает, что человек договорил
VAD (voice activity detection, детектор голосовой активности) отвечает на простой вопрос: говорит сейчас человек или нет. Беда в том, что для разговора этот вопрос неправильный. «Человек замолчал» не равно «человек договорил». Люди мнутся («а там, ну, это...»), подбирают слова, делают вдох посреди фразы, а потом договаривают важное: «...и передайте, что я перезвоню после обеда». За время проекта мы попробовали все основные семейства детекторов:
- Энергетический (классический). Сравнивает громкость кадра с плавающим уровнем шума. Быстрый, бесплатный, работает у нас на сервере. Но смысла не понимает: пауза на подумать длиннее порога, и реплика закрыта.
- Нейросетевой локальный. Небольшая модель отличает речь от шума, кашля и гудков намного лучше громкости. Например, Silero VAD весит около 2,3 МБ и работает на обычном процессоре.
- Серверный у провайдера модели. Server VAD в realtime API: провайдер сам режет поток по тишине заданной длины. Удобно и предсказуемо, но это всё та же тишина, только чужая.
- Семантический (semantic VAD, turn detection). Поверх звука работает модель конца хода, которая оценивает, закончил ли человек мысль, и сама решает, сколько ещё подождать. Параметр «нетерпеливости» (eagerness) двигает баланс: терпеливый режим даёт договорить, но может ждать секунды, нетерпеливый отвечает быстро, но иногда влезает на полуслове.
- Модель конца хода по звуку. Отдельный класс: модель слушает интонацию и ритм последнего фрагмента и выдаёт вероятность «ход завершён». Её мы разберём подробно ниже, это та самая «пятимегабайтная библиотека с HuggingFace».
3. Перебивания и «угу-ага»
Живой собеседник не молчит, пока вы говорите. Он вставляет «угу», «ага», «так», покашливает, когда думает, и говорит «алло?», если на линии повисла тишина. Это называется backchannel (обратный канал), и без него даже идеальный по смыслу агент звучит как автоответчик. Обратная сторона медали: перебивания (barge-in). Если абонент заговорил, пока секретарь отвечает, секретарь должен замолчать. Но в телефоне собственный голос агента возвращается эхом, и наивный детектор начинает перебивать сам себя. Отличить настоящее «подождите, я не договорил» от эха и от случайного «угу» абонента это отдельная инженерная задача.
Та самая модель с HuggingFace
Отдельно расскажем про модель, о которой нас часто спрашивают. Это Smart Turn v3 от команды Pipecat: открытая модель, которая по звуку последних секунд речи решает, договорил человек или взял паузу. В разговорах её называют «пятимегабайтной», мы взвесили честно: файл версии 3.2 для процессора (int8, ONNX) весит 8,7 МБ, а в паре с ним работает Silero VAD на 2,3 МБ. Вместе около 11 МБ, меньше одной фотографии с телефона. Работает без видеокарты: на обычном ноутбуке десятки миллисекунд на решение.
Мы подняли её отдельным сервисом рядом с голосовым ядром, сверили вычисление признаков с эталонной реализацией до седьмого знака и выяснили неожиданную вещь: простое линейное передискретизирование звука с 24 до 16 кГц заметно меняло ответы модели. Пришлось ставить нормальный фильтр. Такие мелочи и съедают недели в голосовых проектах.
Насколько она хороша на русской и украинской телефонной речи? Ради этого вопроса мы и построили стенд сравнения, о нём ниже.
Состав системы
Секретарь вырос не в одну программу, а в семейство голосовых рантаймов на общем ядре. Каждый рантайм по-своему отвечает на три вопроса: кто думает, кто говорит и откуда приходит звук. Всё остальное (очередь речи, детекторы, синтез, банк фраз, биллинг, Telegram, аналитика) общее и переиспользуется.
- Телефонный мост. Принимает переадресованный звонок, решает, брать ли трубку (избранным контактам секретарь не отвечает, они слышат обычные гудки), ведёт разговор, пишет запись и отдаёт отчёт.
- Голосовое ядро. Детекторы конца реплики, realtime-модель диалога, синтез речи, банк коротких вставок, логика перебиваний.
- Веб-секретарь (лаборатория). Тот же секретарь, но звонок идёт из браузера. Здесь мы пробуем модели, детекторы, голоса и роли без телефонной линии.
- Быстрый контур. Вариант конвейера, собранный под минимальную задержку: потоковый ответ, озвучка по фразам, короткий предбуфер, перебивание.
- Экспериментальные рантаймы. Сценарный классификатор (модель только выбирает номер сценария, фразы заранее записаны), каскад «распознавание, сторонняя языковая модель, синтез», полнодуплексный режим, где модель слушает и говорит одновременно.
- Монитор. Звонки, графики, события, записи, таблица реплик.
- Стенд сравнения детекторов. Прогоняет записи через все режимы в реальном времени и считает ошибки.
- Telegram-боты. Первая версия «Robo-secretary» и вторая «Телефонний секретар»: кабинет владельца, настройки, баланс, отчёты о звонках.
- Сервис Smart Turn. Отдельный лёгкий процесс с моделью конца хода.
Данные устроены просто, и это сделано намеренно: вся сложность живёт в разговоре, а не в таблицах. Владелец номера, его звонки, реплики каждого звонка с аудиофрагментами, избранные контакты, напоминания и платежи. Отдельно лежат настройки голосового ядра, которые лаборатория меняет на лету.
Лаборатория
Главный инструмент проекта. Это веб-приложение, где можно поговорить с секретарём прямо из браузера и на каждом звонке поменять почти всё: модель, детектор, голос, роль, темп. Под капотом то же ядро, что отвечает на телефон, поэтому выводы из лаборатории переносятся на линию без перевода.

Что можно настроить
- Голос агента и язык. Мужской или женский, русский или украинский. Голос влияет не только на тембр: к нему привязан собственный банк коротких вставок.
- Конец реплики. Три режима: семантический VAD провайдера, наш аудио-VAD по громкости и Smart Turn v3. В двух последних детекцию у провайдера мы выключаем и сами говорим модели «отвечай».
- Ожидание на открытый вопрос. Добавка от 0 до 1200 мс. После вопроса «по какому вы вопросу?» люди думают дольше, чем после «вас соединить?», и детектору полезно это знать.
- Пауза VAD (eagerness). Auto, low, medium, high: насколько быстро семантический детектор закрывает реплику.
- Реакция на паузу в быстром контуре. Серверный VAD с окном тишины от 250 до 700 мс или семантические режимы.
- Realtime-модель. Несколько поколений моделей диалога, включая облегчённые «mini». Быстрее не всегда лучше: маленькая модель отвечает раньше, но чаще задаёт лишний вопрос.
- Модель озвучки. Эмоциональная (дольше до первого звука), быстрая (около 0,2 с), сбалансированная, а в быстром контуре ещё и нативный голос самой realtime-модели без отдельного синтеза.
- Голос из каталога. Список подтягивается из каталога синтеза и фильтруется по совместимости с моделью и наличию русского или украинского.
- Тег тона. Для эмоциональной модели: тепло, мягко, дружелюбно, спокойно, бодро.
- Темп речи. От 0,8 до 1,2. Забавная находка: на эмоциональной модели параметр почти не работает, её темп гуляет сам по себе.
- Роль. «Секретарь» или «Знакомый, которого попросили ответить». Это не косметика: с секретарём люди говорят формально и коротко, со знакомым раскованнее и длиннее, а значит, по-другому делают паузы.
- Фоновые звуки и вставки. «Угу-ага», пока абонент говорит, «кхм» или «так», пока модель думает, «алло» на тишину, подводка перед ответом.
- Перебивание. Слушать ли абонента, пока секретарь говорит, и останавливаться ли на его реплике.
- Инструкции. Дополнение к описанию роли для новых подключений: «сегодня отвечай ещё короче», «не упоминай почту».

Как настройки влияют друг на друга
Самое интересное начинается, когда понимаешь, что ни одна настройка не живёт сама по себе. Несколько закономерностей, которые мы вынесли из сотен тестовых звонков:
- Детектор и озвучка складываются. Терпеливый детектор плюс эмоциональная модель озвучки дают паузу, в которую можно сходить за чаем. Быстрая озвучка позволяет детектору быть терпеливее, медленная требует от него решительности, а решительный детектор чаще перебивает.
- Вставки маскируют задержку, но не бесплатно. «Угу» в паузе делает ожидание естественным. Но вставка, которую оборвал ответ модели на середине, звучит хуже честной тишины. Поэтому вставки, модель и детектор настраиваются только вместе.
- Модель диалога меняет паузы человека. Длинный ответ секретаря провоцирует перебивание, вопрос с вариантами укорачивает ответ абонента, открытый вопрос удлиняет его раздумья.
- Язык и голос меняют пороги. Украинская и русская речь, мужской и женский голос, телефонная линия и браузерный микрофон: на каждой комбинации детекторы ведут себя чуть по-разному.
- Перебивание без защиты от эха превращается в самоперебивание. Включать его можно только вместе с правильной обработкой собственного голоса агента.
Промпт тоже настройка, причём одна из самых сильных. От того, как описана роль, зависит длина реплик, количество уточняющих вопросов, привычка подтверждать услышанное и то, насколько охотно модель прощается. Одна и та же связка моделей с разными описаниями роли звучит то как живой человек, то как анкета. Сами тексты мы не публикуем.
Какую комбинацию мы в итоге считаем рабочей, это закрытая информация проекта. Скриншоты в статье показывают тестовые состояния лаборатории, а не боевые настройки. Если коротко: «лучшего VAD» не существует, есть удачная связка из детектора, модели, голоса, вставок и описания роли под конкретный сценарий и конкретных людей на линии.
Исследования и инструменты
Монитор и график разговора
Каждый звонок и каждая тестовая сессия оставляют след: что услышал сервер, какие события произошли и в какую миллисекунду. Монитор показывает это на шкале времени: уровень микрофона, резкие провалы громкости, моменты, когда детектор закрыл реплику, когда модель начала и закончила ответ, когда пошла и закончилась озвучка. Для телефонных звонков добавляются джиттер и наполнение буфера ответа. Для звонков второй фазы есть таблица реплик: кто сказал, что сказал и почему (ответ модели, вставка, приветствие, прощание).

Тот же график в реальном времени живёт прямо в лаборатории: пока вы говорите, видно, как растёт громкость, где порог, сколько звука лежит в буфере плеера и в какой момент детектор принял решение. Это сильно экономит споры: вместо «мне показалось, что он перебил» есть картинка, где видно, кто и когда.
Панель вставок «угу-ага»
Короткие звуки мы не генерируем на лету, иначе они опаздывают. Для каждого голоса заранее записан банк: «угу» и «ага» для слушания, «кхм», «так», «эээ», «хм» для раздумий, «алло» для тишины. Панель показывает каждую вставку с формой волны и длительностью, позволяет прослушать, убрать лишнюю и собрать очередь подводок, которые звучат перед ответом по кругу, чтобы секретарь не повторялся.
Для телефонной версии есть отдельная панель голосового ядра: модель диалога, реакция на паузу, модель и тон озвучки, голоса, выключатели каждого типа вставок, перебивание, прощание перед отбоем, мягкий лимит длины разговора. Всё применяется к новым звонкам без перезапуска.

Стенд сравнения VAD
Спорить о детекторах по ощущениям можно бесконечно, поэтому мы собрали стенд. В нём 81 минута реального звука: 13 телефонных звонков и 110 веб-сессий, 394 конца реплик, 190 пауз, где человек мнётся, и 99 пауз «договорил, подумал и добавил». Эталонную разметку строим по пословным таймкодам распознавания, а потом прогоняем все записи через все режимы одновременно и в реальном времени, как будто это живые звонки.
Считаем то, что слышит человек на линии: как часто детектор обрывает того, кто подбирает слова; сколько реплик хоть раз оборвано; как часто система «залипает» и молчит дольше полутора секунд после законченной фразы; медиану и 90-й перцентиль задержки решения; лишние срабатывания на шум. К каждой цифре есть аудиопримеры с шкалой времени, где видно, в какой момент каждый режим решил «договорил».

Один вывод, которым можно поделиться: Smart Turn v3 действительно самый быстрый, когда уверен (решение примерно через полсекунды после конца фразы против почти восьми десятых у других режимов). Но на наших русских и украинских записях он заметно чаще путает «замолчал, чтобы подумать» с «закончил мысль». Маленькая модель отлично чувствует интонацию, а наш абонент любит думать вслух. Какой режим и с какими параметрами мы взяли в работу, остаётся за кадром.
Telegram-боты
Владелец не заходит в админки, весь его кабинет живёт в Telegram. Ботов два, и это две эпохи проекта.
Первая версия, Robo-secretary. Кабинет пользователя: подключение, отчёты о звонках с записью и расшифровкой, избранные контакты, текстовые напоминания и напоминание-звонок, когда нужно вежливо сбежать со встречи («притвориться занятым»), голосовое сообщение вместо набора текста, покупка токенов.
Вторая версия, «Телефонний секретар». Собрана заново по ТЗ второй фазы: украинский по умолчанию, весь интерфейс на кнопках. Онбординг с примером разговора, выбор голоса и имени секретаря, бесплатный пробный период, подключение номера и пошаговая настройка переадресации (код набирается одной кнопкой), проверка статуса, второй номер, профили представления, избранные контакты, баланс и оплата, поддержка. После каждого звонка приходит одно сообщение: кто звонил, зачем, запись и текст разговора. Есть страница «поделиться ботом» для SMS и мессенджеров.

Самая сложная часть, про которую мы промолчим
Всё, что выше, это видимая часть айсберга. Под водой три вещи, на которые ушла основная инженерия, и они остаются внутри проекта.
- Алгоритмы принятия решений. Между абонентом и моделью стоит наш собственный слой, который решает, когда слушать, когда отвечать, когда вставить «угу», когда замолчать и что делать, если два детектора не согласны. Именно он отличает «нейросеть по телефону» от собеседника. Как он устроен, не расскажем даже под чай с печеньем.
- Админка. Пользователи, звонки, токены, платежи, аналитика, тексты бота, профили. Всё, что нужно, чтобы сервис был бизнесом, а не демкой.
- Инфраструктура. Телефония, переключение контуров без разрыва звонков, страховка на случай, если новый контур не знает клиента, изоляция ботов друг от друга, мониторинг здоровья сервисов. Скучно звучит, весело чинится в три часа ночи.
Если вы строите своего голосового агента, именно здесь вы потеряете больше всего времени. Мы уже потеряли его за вас, это и есть наша ценность.
Итог
Реалистичный голосовой разговор держится не на одной «умной модели», а на миллисекундах, паузах и мелочах вроде вовремя сказанного «угу». Чтобы с ними работать, нужны измерения: лаборатория, где любую связку можно собрать за минуту, монитор, где видно каждый звонок на шкале времени, и стенд, где детекторы соревнуются на живом звуке, а не на обещаниях из README. Это и есть главный результат проекта: не только секретарь, который отвечает на звонки, но и методика, которой мы доводим до живости любой голосовой интерфейс.
Нужен голосовой агент для приёма звонков, записи клиентов, первой линии поддержки или своего SaaS? Начнём с бесплатной консультации с архитектором, разберём ваш сценарий и посчитаем цену после разговора. Подробнее о подходе на systems.ingello.com.
Где посмотреть
Продолжение про персонажа: голосовой агент с аватаром, который управляет Codex и Claude Code, в кейсе «INGELLA: голосовой ИИ-агент».
Первая, детерминированная версия секретаря, её плюсы и минусы: ИИ-секретарь по сценариям, где каждое слово известно заранее.
Похожее решение: ИИ-агент, который сам продёт.