Обсудить задачу
кейс · голосовой ии · r&d прототип работает

Голосовой агент на Яндексе: 7 часов, 55 замеров и три архитектуры

коротко

За один вечер я собрал и прогнал живыми звонками три способа построить телефонного голосового бота на технологиях Яндекса – от «одна модель делает всё» до каскада из отдельных кирпичей. 55 замеров задержки. Главное, что я вынес: самое трудное в голосовом боте – не голос и не «мозг», а момент, когда он понимает, что ты закончил говорить. Кто ловит этот момент правильно – тот и звучит живым. Задержку ответа удалось стабилизировать на 0,4–0,5 секунды.

55 ЗАМЕРОВ · ЗАДЕРЖКА ОТВЕТА, с 0 0.7 1.3 цель 0.4–0.5
рис. 01 / 55 замеров задержкистенд
ОТРАСЛЬтелефония · клиентский сервис
ФОРМАТr&d · стендовые замеры
ЗАПУСКиюль 2026
СТАТУСпрототип · 3 архитектуры

Задача

Клиент хочет голосового бота, который принимает звонки как живой оператор: понимает речь, отвечает по делу, не перебивает и не тупит. На словах просто, на практике – зло. Вопрос был один: какую архитектуру брать, чтобы вышло и быстро, и естественно, и не разорительно.

Я решил не гадать, а измерить. Собрал рабочие варианты и прогнал каждый реальными звонками с секундомером в логах: когда человек замолчал, когда система это поняла, когда пошёл первый звук ответа. Семь часов, 55 замеров.

Решение

За основу – стек Яндекса (распознавание, языковая модель, синтез – всё в российском облаке), телефонная платформа как «труба» до звонка. Собрал три разные схемы и гонял каждую живыми звонками.

АРХИТЕКТУРАКАК УСТРОЕНА
① Speech-to-speechодна модель Яндекса слышит, думает и отвечает своим голосом – распознавание, логика, синтез и определение конца реплики внутри неё
② Каскад через платформутри отдельных кирпича: распознавание, языковая модель, синтез; конец реплики ловит сама платформа плюс пара моделей-детекторов
③ Каскад с прямым распознаваниемте же кирпичи, но распознавание подключено к SpeechKit напрямую, через свой небольшой мост – он и приносит сигнал «реплика закончена»

Языковая модель в каскаде – YandexGPT; её при желании меняют на другую (DeepSeek, Qwen) в одну строку – это отдельный сменный «мозг» между распознаванием и синтезом.

Кто ловит конец фразы

Вот где всё и решается. Человек в разговоре делает паузы внутри фразы – задумался, подбирает слово. Плохой детектор принимает такую паузу за конец реплики, бот влезает – и перебивает. Хороший ждёт, пока ты действительно договорил. Это, а не голос и не «мозг», оказалось самой трудной частью.

Я прошёл три уровня. Встроенное определение конца реплики у платформы стреляло прямо посреди длинной фразы – это и был корень всех перебиваний. Самодельная связка детекторов работала лучше, но то резала длинные фразы, то, наоборот, зависала на несколько секунд. А родное определение конца реплики у SpeechKit, обученное на живом русском, держало длинную фразу с паузами целиком и срабатывало ровно там, где надо.

Важно. В логах видно прямо: паузу-раздумье на 12 секунд посреди фразы SpeechKit не разрезал – дождался настоящего конца. Ни платформа, ни самодельные детекторы так не умели.

Как это работает

  1. шаг 01Звонок приходит на номер, платформа поднимает трубку.
  2. шаг 02Аудио потоком уходит на мой мост, а с него – в потоковое распознавание Яндекса.
  3. шаг 03SpeechKit возвращает расшифровку кусками и сигнал «реплика закончена».
  4. шаг 04По сигналу текст реплики уходит в языковую модель.
  5. шаг 05Модель стримит ответ – бот начинает говорить, не дожидаясь всего текста; синтез озвучивает в трубку.
  6. шаг 06Заговорил – бот замолк. Если человек перебил, ответ обрывается.

Результат

0,4–0,5 с
от конца фразы до ответа (архитектура ③)
55
замеров за ~7 часов по трём схемам
~8 ₽
минута на дорогих моделях; на дешёвых в 1,5–2× меньше

Модель Яндекса думает почти мгновенно – от «реплика закончена» до первого слова ответа уходят доли секунды. Остальную задержку держит телефонный транспорт, а не ИИ. Что до денег: языковая модель в цене минуты – копейки, основное держат распознавание, телефония и синтез. Сами ~8 ₽ – это на дорогих моделях Яндекса; берёшь модели попроще – выходит в полтора-два раза меньше, а на простых сценариях качества хватает.

Стек

Yandex SpeechKit · распознавание YandexGPT · языковая модель Yandex Realtime · speech-to-speech синтез речи VoIP-платформа · телефония свой потоковый мост function calling · CRM

Мост – маленький сервис: принимает аудио звонка, гонит в потоковое распознавание, возвращает текст и сигнал конца реплики. Он же переиспользуется под запись данных в CRM и сводку звонка.

Грабли, на которые уже наступил

Эхо от громкой связи. На громкой связи бот слышал собственный голос из динамика, принимал его за речь абонента и перебивал сам себя. С трубкой у уха – пропадает; на реальной линии обычно гасится оператором, но на стенде укусило знатно.

Встроенный детектор платформы стрелял посреди фразы. Корень перебиваний. Вылечилось тем, что ответ запускается строго по сигналу нормального детектора, а не по «самодеятельности» распознавания.

Голос – отдельная боль. В speech-to-speech голоса Яндекса звучат не самыми живыми, а свой брендовый – для небольшой компании ощутимые деньги каждый месяц. Отсюда частый выбор рынка: берут голос поестественнее у зарубежных синтезаторов – он и приятнее, и обычно дешевле, – но платят за это тем, что речь клиента уходит из российского контура. «Данные дома» против «голос красивее» – каждый решает сам.

И пара упрямых потолков. Конец реплики короче полусекунды не выкрутить – у SpeechKit это нижняя граница, быстрее уже начинает резать паузы. А однажды полчаса грешил на «плохую модель», пока не понял: тестовая консоль ломала кириллицу, и модель получала кашу вместо русского. Классика.

Вопросы и ответы

Какая архитектура в итоге лучше?

Для «живого» разговора – каскад с прямым распознаванием SpeechKit: чистое определение конца реплики, ответ за 0,4–0,5 секунды, полный контроль над языковой моделью. Speech-to-speech проще собрать и не требует своего сервера, но голос – только штатный.

Сколько стоит минута разговора?

Ориентир ~8 ₽ за минуту – и это на дорогих моделях Яндекса; на моделях попроще выходит в полтора-два раза меньше, а простым сценариям их хватает. Основное в цене – распознавание, телефония и синтез; языковая модель почти не заметна, поэтому выбор модели – про качество и скорость, а не про деньги.

Бот сможет заводить заявки в CRM?

Да. Языковая модель по ходу разговора сама вызывает функцию «создать лид» с данными клиента – проверено, поля извлекаются верно. Тяжёлое – сводку звонка и разбор на поля – удобнее делать уже после звонка, когда спешить некуда.

Почему не одна модель на всё?

Speech-to-speech – хороший вариант, но голос жёстко привязан к модели, а свой брендовый – дорогой. Каскад даёт выбор голоса и контроль над логикой ответа. Разбор одной такой быстрой связки – в статье про голосового бота с задержкой 850 мс.

Данные клиентов не утекают?

Весь речевой контур – в российском облаке Яндекса, по ключу клиента. Телефония – отдельная платформа с серверами в РФ. Наружу ничего лишнего.

За сколько подключается клиенту?

Настройка софта – около получаса. Отдельно, разово, оформляется телефонный номер и безусловная переадресация с рабочего номера клиента.

автор – Семенов Евгений, Forward Deployed Software Engineer
ещё кейсы

Похожие проекты

все кейсы →

Нужен голосовой агент?

Хотите бота, который отвечает на звонки как живой оператор? Расскажите задачу – разберём и подберём архитектуру под неё: где важнее скорость, где голос, где цена.

Обсудить задачу
статьи по теме

Разобрано в блоге

все статьи →