AGONTS

Голос и телефония

STT, TTS, транспорты и PSTN-операторы — всё в UI, без env-переменных, без vendor lock-in.

Платформа принимает и совершает голосовые звонки с ИИ-агентом. Всё настраивается в UI — без env-переменных, без привязки к конкретным вендорам. Можно начать за 15 минут с облачных провайдеров и перейти на self-hosted когда понадобится.

Зачем голос в 2026

Текстовые чаты закрывают часть обращений, но голос остаётся главным каналом для:

  • Пожилой аудитории — они не пишут, только звонят.
  • Сложных эмоциональных тем (жалобы, болезнь, финансовые проблемы).
  • Мобильного контекста — люди в машине, на улице, с ребёнком — не пишут.
  • Регионов с плохим интернетом — звонок работает всегда.
  • Высокочувствительных переговоров (запись на приём к врачу, подписка на дорогой продукт).

Телеком-статистика подтверждает: 50-70% клиентских обращений идут по телефону даже в 2026 году. Это огромный пул автоматизации.

Что даёт голосовой бот

24/7 приём звонков

Без пропущенных, без «наши операторы перегружены».

0 секунд ожидания

Бот отвечает с первого гудка. NPS вырастает мгновенно.

Параллельность

1000 звонков одновременно = 1000 агентов. Не надо нанимать в сезон.

Консистентность

Тон, скрипт, качество — одинаковые у всех. Нет «попал на неопытного оператора».

Аналитика речи

Транскрипт каждого звонка. Анализируйте, о чём говорят клиенты, где теряются.

Снижение затрат

Типовой колл-центр стоит $20-40/час на оператора. Бот — $0.05-0.20 за минуту разговора.


Четыре сценария использования

Клиент на вашем сайте жмёт кнопку «Позвонить» — разговаривает в браузере.

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

  1. Клиент жмёт кнопку в виджете.
  2. Браузер просит разрешение на микрофон.
  3. Начинается разговор прямо в браузере — без установки приложений, без платных звонков.

Когда использовать:

  • SaaS-продукты с консультациями.
  • B2B-сервисы, где клиент хочет быстро уточнить детали.
  • Онлайн-магазины с визуальными продуктами (мебель, одежда).

Стек: browser-webrtc + любой STT + любой TTS.

Клиент набирает ваш городской или мобильный номер — попадает на бота.

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

  1. Вы покупаете номер у телеком-оператора (Twilio, Telnyx, российские).
  2. Настраиваете у оператора переадресацию SIP на наш endpoint.
  3. Все звонки на этот номер идут к боту.

Когда использовать:

  • Массовое обслуживание (поддержка, запись, консультации).
  • Замена колл-центра на первой линии.
  • Ночные смены / выходные без операторов.

Стек: sip-media-stream + STT + TTS + номер у оператора.

Бот сам набирает клиента и разговаривает.

Сценарии:

  • Напоминания о записи («завтра в 14:00 запись к доктору Иванову»).
  • Подтверждения заказа («подтверждаете доставку на сегодня?»).
  • Холодные звонки (квалификация лидов).
  • NPS-опросы («как вам понравилось обслуживание?»).
  • Обзвон должников (мягкое напоминание).

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

  1. Flow-triggered или API-triggered запуск.
  2. Берётся номер клиента из CRM.
  3. Бот набирает через PSTN-оператора.
  4. Когда клиент поднял — начинается разговор.

Стек: pstn-rest-api (телеком-оператор) + STT + TTS.

Вы встраиваете бота в свою существующую корпоративную АТС.

Суть: у вас уже есть номера, SIP-trunk, оператор связи. Вам не надо это менять — просто ставите бота как «первый оператор» в IVR.

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

  1. В АТС настраиваете IVR-правило: «новый звонок → передать медиа на SIP-URI нашего сервера».
  2. АТС форкает медиа-поток (обычно μ-law 8 кГц) на наш endpoint.
  3. Платформа обрабатывает и возвращает ответ.

Когда использовать:

  • Крупный бизнес с корпоративной телефонией (Asterisk, FreeSWITCH, Avaya).
  • Колл-центры 100+ операторов, хотят «помощника» на первой линии.
  • Когда нельзя менять номера (банки, госсектор).

Стек: sip-media-stream (SIP-мост) + STT + TTS.


Ничего не залочено на вендора

Принцип платформы

В платформе нет жёстких имён Twilio, Telnyx, Deepgram, ElevenLabs, OpenAI. Любой провайдер голоса — обычная запись в настройках с URL, ключом, моделью и голосом.

Почему это важно

Традиционный рынок: вендоры продают «всё в одном пакете» — Twilio даёт номера + STT + TTS, Deepgram — только STT, ElevenLabs — только TTS. При этом каждый вендор привязывает вас к себе через проприетарный API.

Проблемы lock-in:

  • Цены повышаются — вы не можете легко уйти.
  • Появляется более качественный вариант — надо переписывать интеграцию.
  • Провайдер закрывается / меняет стратегию — у вас проблема.
  • На compliance-аудите: «ваши данные идут в US? Переделайте».

Как устроено у нас

Каждый провайдер — запись в таблице настроек с:

  • URL API (куда слать запросы).
  • Ключ доступа.
  • Модель / голос / параметры.
  • Тип драйвера (как именно общаться с этим API).

Пример: вам нравится качество Deepgram — настраиваете. Через полгода появился Rev.ai дешевле — настраиваете вторым провайдером, переключаете в один клик, старый оставляете как fallback.

Свобода, которую это даёт

  1. Смена поставщика = правка одной записи. Без пересборки, без простоя.
  2. Изоляция воркспейсов. Каждый клиент платформы держит свои ключи и свой стек.
  3. Гибридный подход. Один STT для бизнеса, другой для тестов — оба работают параллельно.
  4. Compliance. Self-hosted Whisper для регулируемых кейсов, облачный — для остального.

Четыре слоя голоса

   Клиент


  ┌─────────────┐   как пришёл звук
  │  Transport  │   (браузер / SIP / PSTN)
  └──────┬──────┘

  ┌─────────────┐   распознавание речи
  │     STT     │   (аудио → текст)
  └──────┬──────┘

  ┌─────────────┐   логика разговора
  │  Flow + LLM │
  └──────┬──────┘

  ┌─────────────┐   синтез речи
  │     TTS     │   (текст → аудио)
  └──────┬──────┘

      Клиент

Каждый слой настраивается отдельно. Можно менять TTS не трогая STT. Можно переключать Transport не ломая голос. Это главное преимущество архитектуры.


Слой 1 — STT (распознавание речи)

Задача: превратить аудио клиента в текст. От качества зависит всё дальнейшее — если STT плохо распознал, LLM получит мусор на входе.

Варианты подключения

Как работает: клиент говорит → накапливается 2-5 секунд аудио → отправляется целиком на сервер → возвращается текст.

Плюсы: проще в реализации, работает с любым OpenAI-совместимым сервером (Whisper, локальный OpenAI-совместимый Whisper-сервер).

Минусы: задержка 1-3 секунды между концом фразы клиента и получением текста. Для живого диалога — на грани комфорта.

Когда брать: начинаете с облачного OpenAI Whisper или self-hosted OpenAI-compatible сервера, задержка 2-3 сек допустима.

Что нужно знать: адрес сервера, ключ, опционально — модель и язык.

Как работает: клиент говорит → аудио стримится по чанкам → сервер отвечает промежуточными транскрипциями по мере речи → финальная версия в конце фразы.

Плюсы: задержка менее 500ms после конца фразы. Живой диалог. Можно показывать клиенту промежуточный текст (что он сказал — в реальном времени).

Минусы: сложнее настроить. Часто платные сервисы.

Когда брать: production, где важна отзывчивость. Практически все массовые голосовые боты на streaming STT.

Что нужно знать: WebSocket URL, ключ, опционально — модель и язык.

Популярные STT-провайдеры

ПровайдерФорматЯзыкиЦенаПримечание
OpenAI Whisper APIHTTP100+$6/часСтандарт, хорошо с русским
DeepgramWS30+$3-7/часСамый быстрый streaming
AssemblyAIWS30+$4-12/часХорошая аналитика
Google SpeechWS125+$9-17/часEnterprise-решение
Self-hosted WhisperHTTP100+~$0 (если GPU есть)Полный контроль
Яндекс SpeechKitWS10+₽1.5/минДля российского рынка

Рекомендации по выбору


Слой 2 — TTS (синтез речи)

Задача: озвучить ответ агента. От качества зависит ощущение клиента — «говорит с роботом» vs «говорит с человеком».

Варианты подключения

Стандарт. POST на /v1/audio/speech с JSON, получаете аудио.

Плюсы: простой, работает с OpenAI TTS и совместимыми (Deepgram Aura, Groq TTS, self-hosted).

Что нужно: адрес сервера, ключ, голос по умолчанию.

Универсальный адаптер для нестандартных API (ElevenLabs, Yandex, кастомные TTS).

Плюсы: работает с любым поставщиком, который умеет вернуть аудио стримом.

Что нужно: вы сами настраиваете шаблон тела запроса через плейсхолдеры {{text}} и {{voiceId}}.

Популярные TTS-провайдеры

ПровайдерКачествоРусскийЦенаПримечание
ElevenLabs🏆$0.30-1/1000 символовЭталон — «звучит как человек»
OpenAI TTS$15/1M символовНадёжный, быстрый
Deepgram Aura🟡$0.015/минутаТолько английский на top quality
Яндекс SpeechKit🏆₽2/1000 символовЛучший для русского
Self-hosted XTTS v2~$0Open-source, нужен GPU
Google Cloud TTS$4-16/1MEnterprise

Параметры голоса

  • Voice ID — конкретный «голос». У ElevenLabs — тысячи пользовательских голосов, можно создать свой. У OpenAI — 10 голосов (alloy, echo, fable, nova, onyx, shimmer…).
  • Speed — скорость речи. 1.0 = нормальная. 1.1-1.2 часто ускоряется для улучшения UX.
  • Sample rate — частота дискретизации (8кГц / 16кГц / 24кГц). Для SIP — 8кГц, для WebRTC — 16кГц.

Рекомендации по выбору


Слой 3 — Transport (откуда приходит звук)

Определяет канал — как голос попадает в платформу.

Клиент говорит прямо в браузере через WebRTC. Без ключей — используются STT/TTS воркспейса по умолчанию.

Технически: браузер открывает WebSocket к нашему endpoint, PCM16 аудио стримится в обе стороны.

Когда использовать:

  • Веб-виджет на сайте.
  • Демо для потенциальных клиентов.
  • Внутренний тест новых сценариев.

Ограничения:

  • Страница должна быть по HTTPS (WebRTC не работает по HTTP).
  • Клиент должен разрешить микрофон.
  • На iOS Safari есть особенности инициализации микрофона.

Для корпоративных АТС / SBC / провайдеров связи.

Технически: наш endpoint /telephony/sip-stream/ws принимает WebSocket-стрим с μ-law или PCM аудио. Ваша АТС настроена форкать медиа туда.

Когда использовать:

  • У вас есть корпоративная АТС (Asterisk, FreeSWITCH, Avaya, Cisco CUCM).
  • У вас SIP-trunk от телеком-оператора — хотите добавить AI-линию.
  • Нужна интеграция с существующим IVR.

Что настраивать со стороны АТС:

  • В диалплане правило: для определённых номеров / кнопок IVR — передать медиа на SIP-URI нашего сервера.
  • Кодек μ-law 8 кГц (стандарт телефонии).
  • Если SIP-over-TLS — установить сертификаты.

Время настройки: обычно 1-3 часа с инженером АТС.

Текстовый режим без реального аудио. Для тестов, smoke-checks, CI/CD.

Полезно в dev-окружении — тестировать сценарии без реальных звонков и без оплаты STT/TTS.


Слой 4 — Telephony (исходящие в PSTN)

Задача: чтобы агент мог сам позвонить клиенту на обычный телефон. Нужен телеком-оператор с REST API для call-control.

Как работает

  1. Ваш flow или API дёргает «позвонить клиенту X на номер Y».
  2. Платформа обращается к оператору: POST /calls { to: "+79...", from: "+79...", webhookUrl: "..." }.
  3. Оператор физически набирает номер через PSTN.
  4. Клиент поднимает трубку → оператор создаёт SIP-соединение → медиа начинает стримиться в нашу платформу.
  5. Дальше — как SIP-звонок (STT → Flow → TTS).

Популярные операторы

ОператорГеоЦена за минутуПримечание
TwilioGlobal$0.013-0.08Стандарт рынка, API отличный
TelnyxGlobal (сильны в Европе)$0.0035-0.05Дешевле Twilio
PlivoGlobal$0.008-0.06Азия сильная
Vonage (Nexmo)Global$0.01-0.08Enterprise-friendly
SinchGlobal$0.007-0.07-
Wavix / FlowrouteUS$0.005-0.02Только для США
ZadarmaРоссия+СНГ₽0.25-1.5Удобный для РФ
SipuniРоссия₽0.3-2-

Требование — REST call-control API

Оператор должен уметь принимать:

POST /calls { to, from, webhookUrl, applicationId }
→ { id, status }

Большинство современных операторов это поддерживают. Наш адаптер pstn-rest-api — универсальный, настраивается полями:

  • Адрес API оператора.
  • Ключ авторизации.
  • ID приложения у оператора.
  • Номер отправителя по умолчанию.
  • Webhook-URL для callback-ов (статусы звонков).

Первый запуск: веб-виджет за 15 минут

Настройки → Голос и телефония

Откройте раздел. Увидите 4 секции: STT, TTS, Transport, Telephony.

Добавьте STT-провайдер

Нажмите «Добавить STT».

Для быстрого старта: выберите OpenAI Whisper.

Заполните:

  • Имя: «OpenAI Whisper Main».
  • Base URL: https://api.openai.com/v1.
  • API-ключ: ваш ключ OpenAI.
  • Модель: whisper-1.
  • Язык: ru (или auto).

Сохраните → пометьте Default.

Добавьте TTS-провайдер

Нажмите «Добавить TTS».

Для быстрого старта: выберите OpenAI TTS.

Заполните:

  • Имя: «OpenAI TTS Main».
  • Base URL: https://api.openai.com/v1.
  • API-ключ: тот же ключ OpenAI.
  • Модель: tts-1-hd (качество) или tts-1 (скорость).
  • Голос: nova (женский) или onyx (мужской).

Сохраните → пометьте Default.

Добавьте Transport

Нажмите «Добавить Transport».

Выберите Браузерный микрофон.

Без дополнительных полей — просто сохраните и пометьте Default.

Готово — протестируйте

Откройте виджет чата в админке → включите голосовой режим → жмите микрофон → разговаривайте.

Должно работать за 15 минут с момента старта.

Что дальше

  • Для исходящих звонков: добавьте Telephony провайдера (ваш телеком-оператор) → Default.
  • Для SIP-АТС: замените Transport default на SIP-мост, настройте АТС форкать медиа в наш endpoint.

Жизненный цикл звонка — подробно

Клиент жмёт микрофон в виджете на вашем сайте.
Браузер запрашивает доступ к микрофону, клиент разрешает.
Открывается WebSocket к нашему endpoint /voice/ws.
Первый message от браузера — API-ключ воркспейса для авторизации.
Платформа проверяет ключ, permission voice:sessions, workspace.
Runtime достаёт default STT и default TTS из воркспейса.
Создаётся voice session — запись в БД, присваивается sessionId.
Клиент говорит — PCM16 аудио стримится через WebSocket → в STT.
STT возвращает промежуточную и финальную транскрипцию.
Финальный текст → conversation-handler → flow → LLM.
LLM генерирует ответ → вызывает инструменты если нужно.
Ответ → TTS → аудио стримится обратно в браузер.
Браузер играет звук клиенту через динамики.
В фоне пишется voice_minute для биллинга.
Клиент кладёт трубку / закрывает виджет → сессия закрывается.
Клиент набирает ваш городской номер.
Звонок попадает в вашу АТС через SIP-trunk оператора.
АТС по диалплану определяет: этот номер обслуживает бот.
АТС устанавливает SIP-соединение с нашим endpoint и начинает форкать медиа (μ-law 8 кГц).
Платформа конвертирует μ-law → PCM16 (через mulaw codec).
Дальше — как веб-звонок: STT → flow → LLM → TTS.
Ответ TTS кодируется в μ-law и уходит в SIP-поток обратно в АТС.
АТС передаёт клиенту в трубку.
DTMF-тоны (если клиент нажимает цифры) — передаются через SIP INFO или RTP telephone-event.
Клиент кладёт трубку → АТС шлёт BYE → платформа закрывает сессию.
Flow или external API вызывает dial({to, flowId}).
Runtime достаёт default telephony провайдера воркспейса.
Отправляется POST /calls на API оператора.
Оператор физически набирает номер (PSTN).
Клиент поднял трубку — оператор шлёт webhook на наш endpoint.
Мы в ответ устанавливаем SIP-соединение с оператором.
Медиа форкается в нашу платформу — дальше как SIP-звонок.
Статусы (ringing, answered, completed, busy, no-answer) приходят через webhook от оператора.

Оптимизация качества голоса

Проблема: робот звучит как робот

Симптомы: клиенты сразу просят «позовите человека», жалуются в отзывах «разговаривал с роботом».

Причины и фиксы:

Проблема: большая задержка

Симптомы: клиент сказал → пауза 3-5 секунд → бот отвечает. Разговор неестественный.

Из чего складывается задержка:

Клиент говорит 3 сек

  ├─ +200ms: STT-streaming финализирует транскрипт

  ├─ +1500ms: LLM генерирует первый токен ответа

  ├─ +300ms: TTS начинает генерировать аудио

  └─ +200ms: первые байты аудио долетают до клиента
  ────────
   ~2200ms

Оптимизации:

  • Streaming STT вместо HTTP — экономит 1-2 сек.
  • Лёгкая модель (GPT-4o-mini вместо GPT-4o) — экономит 500ms.
  • Короткий системный промпт — меньше токенов input → быстрее.
  • Streaming TTS — бот начинает говорить через 300ms вместо 2 сек.
  • Географическая близость к провайдерам — для России лучше брать российские или европейские endpoint-ы (не US).

Реалистичная цель: 1.5-2.5 секунды задержки после конца фразы клиента. Меньше 1 секунды — только с идеальной инфрой.

Проблема: плохое распознавание

Симптомы: бот «не понял, повторите», транскрипция содержит бред.

Фиксы:

  • Явно указать язык в настройках STT (не auto).
  • Более точная модель (Whisper large-v3 вместо base).
  • Шумоподавление на клиенте — для WebRTC это браузер, для SIP — на АТС.
  • Частота дискретизации — 16 кГц лучше 8 кГц. Для SIP — используйте HD-кодеки (Opus) если оператор поддерживает.

Безопасность

Как устроена изоляция

  • 🔒 API-ключи провайдеров хранятся только в БД. В UI-ответах — лишь индикатор «ключ сохранён», сами байты не возвращаются.
  • 🔒 Каждый запрос привязан к воркспейсу — нельзя прочитать чужие ключи или чужих операторов.
  • 🔒 WebSocket для голоса требует платформенного API-ключа с правом voice:sessions. Без него клиент получает 401.
  • 🔒 Повторное подключение к уже активной сессии отклоняется — защита от перехвата.
  • 🔒 Все минуты пишутся в usage_events с привязкой к воркспейсу для корректного биллинга.
  • 🔒 Записи звонков (если включены) шифруются в S3 + доступ только по роли Admin+.

Compliance


Тарификация

Голос считается в минутах активного разговора. Минута начинается с открытия сессии, заканчивается при close. Лимит в месяц — по плану.

Что входит в минуту:

  • Работа STT (аудио → текст).
  • LLM-запросы для генерации ответов.
  • Работа TTS (текст → аудио).
  • Использование MCP-инструментов во время звонка.

Что НЕ входит (оплачивается отдельно провайдерам):

  • Стоимость минуты у телеком-оператора (для исходящих звонков).
  • Стоимость LLM-токенов у LLM-провайдера.

Реальная экономика на типичном кейсе:

  • Средняя длительность разговора: 2.5 минуты.
  • Стоимость за минуту у нас: ~$0.05.
  • Стоимость у телеком-оператора: ~$0.02/мин.
  • Стоимость LLM-токенов: ~$0.01 на разговор.
  • Стоимость STT/TTS: ~$0.03 на разговор.

Итого: ~$0.20 за разговор. Живой оператор — $1.50-3.00. Экономия ~10×.


Отладка типичных проблем


Метрики здоровья голосового канала

МетрикаЗдоровоеТревога
Average Speech Time (средняя длина сессии)2-4 мин>5 мин — бот «застрял»
First Response Time (до первого ответа клиента)<2 сек>4 сек — неестественно
Average Latency (между репликами)1-3 сек>5 сек — клиент уходит
STT Accuracy (точность распознавания)85-95%<75% — модель не та
Call Abandonment Rate (бросают звонок)10-20%>35% — бот раздражает
Successful Goal Rate (запись/продажа/решение)40-70%<25% — flow не работает
CSAT после звонка (если опрос)4+ из 5<3.5 — системная проблема

On this page

Зачем голос в 2026Что даёт голосовой ботЧетыре сценария использованияНичего не залочено на вендораПочему это важноКак устроено у насСвобода, которую это даётЧетыре слоя голосаСлой 1 — STT (распознавание речи)Варианты подключенияПопулярные STT-провайдерыРекомендации по выборуСлой 2 — TTS (синтез речи)Варианты подключенияПопулярные TTS-провайдерыПараметры голосаРекомендации по выборуСлой 3 — Transport (откуда приходит звук)Слой 4 — Telephony (исходящие в PSTN)Как работаетПопулярные операторыТребование — REST call-control APIПервый запуск: веб-виджет за 15 минутНастройки → Голос и телефонияДобавьте STT-провайдерДобавьте TTS-провайдерДобавьте TransportГотово — протестируйтеЧто дальшеЖизненный цикл звонка — подробноОптимизация качества голосаПроблема: робот звучит как роботПроблема: большая задержкаПроблема: плохое распознаваниеБезопасностьComplianceТарификацияОтладка типичных проблемМетрики здоровья голосового канала