Голосовой стек своими руками — это связка из трёх компонентов: Whisper распознаёт речь, LLM (Claude или GPT) генерирует ответ, ElevenLabs озвучивает его. Без Vapi, без Retell, без месячной платы за платформу, которую вы не контролируете. Ниже — архитектура, реальные цены на август 2026 и код минимального прототипа на Python.
В 2026 году собрать голосового агента без managed-платформы можно за вечер: Whisper API стоит от 0.006 доллара за минуту, ElevenLabs Flash — 0.05 доллара за 1000 символов синтеза. В статье: когда DIY выгоднее платформы, архитектура на Python и обработка задержки между Whisper, LLM и ElevenLabs.
Что такое DIY-голосовой стек своими руками?
DIY-стек — это три отдельных API, соединённых вашим кодом: распознавание речи, языковая модель для логики и синтез речи. Никакой прослойки в виде готовой платформы между вами и разговором.
Vapi и Retell берут деньги за инфраструктуру, которая уже стоит между вами и звонящим человеком. Retell в 2026 году стартует от 0.07 доллара за минуту голосовой инфраструктуры, но на практике почти всегда добавляются модель, телефония и голос — итоговая цена уходит в диапазон 0.13–0.31 доллара за минуту. У Vapi похожая история: заявленные 0.05 доллара за минуту превращаются в 0.10–0.30 при полной комплектации.
DIY-стек снимает эту прослойку. Вы платите только за то, что реально используете: минуты Whisper, токены LLM, символы ElevenLabs. Взамен вы сами пишете весь конвейер: приём аудио, определение конца фразы, обработку ошибок, повторные подключения. Это инженерная работа, а не готовый продукт из коробки.

Как устроена связка Whisper, LLM и ElevenLabs?
Аудио идёт от микрофона в Whisper, транскрипт уходит в LLM с контекстом разговора, ответ модели потоково передаётся в ElevenLabs и озвучивается. Три независимых API, соединённых асинхронным кодом.
Каждый компонент отвечает за одну задачу и ничего не знает о двух других. Whisper API от OpenAI превращает аудиопоток в текст, поддерживает 57+ языков и не делает различий в цене между ними. LLM — та же модель, что вы используете для обычных текстовых задач в Cursor или Claude Code, просто на входе теперь транскрипт вместо напечатанного текста. ElevenLabs берёт текстовый ответ модели и превращает его в аудио с задержкой, которую можно уложить в первые сотни миллисекунд при потоковой генерации.
Полная цепочка выглядит так: аудиопоток от звонящего → буферизация и определение конца фразы (voice activity detection) → отправка сегмента в Whisper → передача транскрипта в LLM вместе с историей диалога → потоковая генерация ответа токен за токеном → передача первых готовых фраз в ElevenLabs → воспроизведение звонящему. Каждый переход — это отдельная сетевая задержка, и именно с ней приходится бороться в первую очередь.

Сколько стоит Whisper для распознавания речи в 2026 году?
Whisper API стоит 0.006 доллара за минуту вне зависимости от языка. Более дешёвая GPT-4o mini transcribe — 0.003 доллара за минуту, а версия для реального времени — около 0.017 доллара за минуту.
OpenAI держит цену на Whisper плоской с момента запуска: 0.006 доллара за минуту, округление до секунды, без скидок за объём. Час аудио обходится в 0.36 доллара, сто часов — в 36 долларов. Но у классического Whisper есть ограничение, о которое разбиваются многие DIY-проекты: он работает только батчем. Загружаете целый файл, ждёте полный транскрипт. Стриминга и партиальных результатов нет.
Для голосового агента в реальном времени OpenAI в 2026 году добавила gpt-realtime-whisper — около 0.017 доллара за минуту с потоковыми дельтами транскрипта. Дороже классики почти в три раза, зато без задержки на ожидание конца файла.
| Модель | Цена | Стриминг | Когда использовать |
|---|---|---|---|
| Whisper (whisper-1) | $0.006/мин | Нет | Пакетная транскрибация звонков, подкастов |
| GPT-4o mini transcribe | $0.003/мин | Нет | Массовая дешёвая транскрибация без реального времени |
| gpt-realtime-whisper | ~$0.017/мин | Да | Живой голосовой агент, звонки в реальном времени |

Какую LLM ставить в логику диалога?
Для голосового агента модель работает так же, как в текстовом чате: получает транскрипт вместо печатного сообщения и отвечает потоково, чтобы ElevenLabs могла начать озвучку раньше.
Разницы между текстовым и голосовым использованием модели почти нет на уровне API. Разница в требованиях к скорости: пользователь на созвоне не готов ждать пять секунд паузы перед ответом. Поэтому потоковая генерация (streaming) обязательна, а системный промпт стоит держать короче, чем в обычном чат-боте, — модели с длинным контекстом тратят на него время до первого токена.
Отдельно нужно решить вопрос с инструментами (function calling). Если агент должен, например, проверить статус заказа или записать встречу, функции описываются докстрингом и передаются модели так же, как в обычном агентном коде — модель сама решает, когда их вызвать, на основе транскрипта.

Сколько стоит ElevenLabs и какая у него задержка?
ElevenLabs Flash синтезирует речь за 0.05 доллара за 1000 символов с задержкой ниже 100 мс. Более качественный Multilingual v2 стоит вдвое дороже и звучит естественнее, но чуть медленнее.
ElevenLabs в мае 2026 снизила цены на API до 55% и добавила pay-as-you-go без обязательной подписки. Актуальная модель на август 2026: Flash и Turbo — 0.05 доллара за 1000 символов, Multilingual v2/v3 — 0.10 доллара за 1000 символов. Распознавание речи через их Scribe v2 стоит 0.22 доллара за час, realtime-версия — 0.39 доллара за час. Отдельный тариф — Conversational AI (их собственный слой агентов): 0.08 доллара за минуту с burst-ценой 0.16 при пиковой нагрузке.
Для голосового агента без пауз важнее не цена, а латентность. Flash проектировался специально под реальное время: генерация начинается раньше, чем модель дописала всё предложение целиком, если вы стримите текст по кусочкам. Multilingual v2 звучит богаче интонационно, но платит за это временем генерации — для агентов в реальном времени его обычно берут только там, где качество голоса важнее скорости ответа.
| Тариф ElevenLabs | Цена | Что входит |
|---|---|---|
| Starter, $6/мес | 120 000 симв. Flash | Небольшие проекты, тестирование |
| Creator, $22/мес | 440 000 симв. Flash | Регулярная нагрузка, до 220 API-минут Multilingual |
| Pro, $99/мес | больше объёма + PCM 44.1kHz | Продакшн с высоким качеством звука |
| API pay-as-you-go | $0.05/1000 симв. Flash | Оплата по факту без подписки |

Как выглядит архитектура на Python?
Минимальный прототип: три асинхронные функции — распознавание, генерация ответа, синтез — соединённые очередью, чтобы каждый следующий шаг стартовал, не дожидаясь полного завершения предыдущего.
Ниже — упрощённый скелет без обработки ошибок и переподключений, только логика конвейера. Задача каждого блока — начать работу как можно раньше, а не после того, как предыдущий шаг закончился целиком.
import asyncio
from openai import AsyncOpenAI
from elevenlabs import stream, generate
client = AsyncOpenAI()
async def transcribe(audio_chunk: bytes) -> str:
# определение конца фразы (VAD) отсекает паузу до отправки
result = await client.audio.transcriptions.create(
model="whisper-1",
file=audio_chunk,
)
return result.text
async def generate_reply(transcript: str, history: list) -> "AsyncIterator[str]":
stream_resp = await client.chat.completions.create(
model="gpt-4o-mini",
messages=history + [{"role": "user", "content": transcript}],
stream=True,
)
async for chunk in stream_resp:
token = chunk.choices[0].delta.content
if token:
yield token
async def speak(text_stream) -> None:
audio = generate(
text=text_stream,
voice="Rachel",
model="eleven_flash_v2_5", # Flash — приоритет на низкую задержку
stream=True,
)
stream(audio)
async def pipeline(audio_chunk: bytes, history: list):
transcript = await transcribe(audio_chunk)
reply_stream = generate_reply(transcript, history)
await speak(reply_stream)На практике узкое место почти всегда одно и то же: пауза перед первым токеном LLM. Whisper и ElevenLabs Flash при правильной настройке укладываются в доли секунды, а вот большая модель с длинным системным промптом может думать секунду и дольше. Отсюда практическое правило: сокращайте промпт, включайте стриминг везде, где он есть, и отправляйте в ElevenLabs первые готовые фразы, не дожидаясь полного ответа модели.
Максим: «Мог просто засесть до пяти ночи и просто там править одну какую-то функцию, которая не работала. Если бы не терпение, в моменте я уже испотел и мне хотелось просто всё это закрыть. Но я понимал, что это можно решить и нужно решить, чтобы идти дальше.»
Отладка задержки между тремя независимыми API — ровно такая работа. Один переход починили, всплывает следующий.

Собирать самому или брать LiveKit как открытый фреймворк?
Полностью ручная сборка с нуля — это низкоуровневая работа с аудиопотоками. LiveKit Agents даёт open-source фреймворк с готовым voice pipeline поверх Whisper, LLM и TTS, и его можно полностью самостоятельно хостить.
Между «написать всё руками» и «взять managed-платформу» есть средний вариант — открытые фреймворки вроде LiveKit Agents. Базовый голосовой агент на нём собирается примерно за 52 строки кода: импорт зависимостей, класс агента с системным промптом в init, точка входа entry_point, настройка пайплайна STT → LLM → TTS. Функции-инструменты добавляются декоратором @function_tool, а сам LiveKit можно развернуть в собственном облаке или использовать бесплатный тариф их хостинга, оставив только оплату ключа модели. Подробный разбор этого пути — в статье про LiveKit Agents как open-source стек на Python.
Разница с полностью ручной сборкой в контроле: LiveKit решает за вас низкоуровневые вопросы вроде передачи аудиопотоков между сервером и браузером, а вы описываете только логику. Полностью ручной вариант из примера выше даёт максимум контроля, но требует самостоятельно писать буферизацию, VAD и обработку сетевых обрывов.

Когда собирать самому, а когда брать готовую платформу?
Собирайте сами, если нужен полный контроль над данными или нестандартная логика. Берите Vapi или Retell, если нужен рабочий продукт быстро и без инженерных ресурсов на интеграцию трёх отдельных API.
Платформа выигрывает не по цене, а по скорости запуска и встроенному комплаенсу. У Retell из коробки есть SOC 2 Type II, HIPAA и GDPR, у Vapi — телефония через Twilio без ручной настройки. Для команды без инженеров под это выгоднее заплатить 0.10–0.30 доллара за минуту и не думать про инфраструктуру.
DIY-стек выигрывает там, где логика продукта не ложится в готовые сценарии платформы, или где объём звонков уже достаточно большой, чтобы окупить время на сборку и последующую поддержку трёх интеграций. Важно понимать честно: при низкой нагрузке инженерное время на сборку и обслуживание DIY-стека может обойтись дороже, чем разница в цене с платформой. Дешевле DIY становится не по умолчанию, а после того как объём вырос настолько, что платформенная наценка за минуту начала перевешивать зарплату инженера, который поддерживает интеграцию.
| Критерий | DIY-стек | Готовая платформа |
|---|---|---|
| Контроль над данными | Полный, всё на своих серверах | Разговоры проходят через сторонний managed-сервис |
| Скорость запуска | Дни-недели на сборку | Минуты на подключение |
| Встроенная телефония | Нужно настраивать Twilio отдельно | Есть из коробки |
| Комплаенс (HIPAA, SOC 2) | На вас | Часто включён |
| Цена при низкой нагрузке | Может быть дороже из-за времени разработки | Предсказуема, но с наценкой за минуту |
| Цена при высокой нагрузке | Обычно дешевле | Наценка растёт линейно с минутами |
Во сколько реально обходится DIY-стек в месяц?
При тысяче минут разговоров в месяц связка Whisper + GPT-4o mini + ElevenLabs Flash обходится примерно в 60–90 долларов против 100–300 долларов на managed-платформе с той же нагрузкой.
Возьмём тысячу минут разговоров в месяц, среднюю длину реплики бота около 400 символов на минуту диалога. Whisper на распознавание — 6 долларов. LLM с коротким контекстом на GPT-4o mini — в районе 10–20 долларов в зависимости от длины истории. ElevenLabs Flash на 400 000 символов синтеза — около 20 долларов. Итого 35–45 долларов инфраструктуры плюс время на разработку и поддержку самого конвейера, которое в деньгах не выражено, но реально существует.
Для сравнения, тот же объём на Vapi или Retell со всеми компонентами внутри — от 70 до 310 долларов, в зависимости от выбранных моделей и голосов. Разница ощутима уже на тысяче минут, но она перестаёт быть решающей, если время инженера на поддержку стека стоит дороже сэкономленной разницы.

Какие ошибки чаще всего допускают при сборке своего голосового стека?
Главные ошибки: ассистент слушает собственный голос через динамики, нет паузы на фоновый шум перед записью, и весь пайплайн синхронный без стриминга.
Есть базовый набор проблем, которые всплывают у всех, кто впервые собирает голосовой конвейер, даже на простых учебных проектах:
- Ассистент слышит сам себя. Если микрофон не отключается на время воспроизведения ответа, бот начинает распознавать собственную речь как новую команду. Решение простое: сначала озвучиваем ответ, потом включаем прослушивание.
- Фоновый шум путается с речью. Метод
adjust_for_ambient_noise()с прослушиванием около секунды перед стартом заметно снижает число ложных срабатываний. - Синхронная обработка вместо потоковой. Если ждать полного ответа модели перед отправкой в TTS, пользователь слышит паузу в несколько секунд. Асинхронная обработка на каждом переходе — не опция, а обязательное условие для голоса в реальном времени.
- Игнорирование voice activity detection. Без определения конца фразы система либо режет пользователя на полуслове, либо ждёт слишком долго после того, как он уже закончил говорить.

Глоссарий
VAD (voice activity detection) — определение момента, когда человек закончил говорить, чтобы система не ждала дольше нужного и не резала фразу раньше времени.
Streaming (потоковая генерация) — передача данных частями по мере готовности, а не единым блоком после завершения всей обработки. Ключевое требование для низкой задержки в голосовых агентах.
Function calling — механизм, при котором LLM самостоятельно решает вызвать заранее описанную функцию в коде (например, проверить погоду), основываясь на смысле запроса.
Managed-платформа — сервис вроде Vapi или Retell, который берёт на себя инфраструктуру голосового агента в обмен на плату за минуту использования.
Частые вопросы про DIY-голосовой стек
Можно ли использовать Whisper для голосового агента в реальном времени?
Классический Whisper API работает только батчем и не подходит для живого диалога без доработок. Для реального времени берите gpt-realtime-whisper с потоковыми дельтами транскрипта или сторонние стриминговые STT.
Какая модель ElevenLabs дешевле всего для DIY-стека?
Flash и Turbo стоят 0.05 доллара за 1000 символов и специально спроектированы под низкую задержку, поэтому они же обычно и оптимальны для голосовых агентов в реальном времени.
Нужен ли LiveKit, если я хочу собрать всё сам?
Не обязательно. LiveKit Agents — открытый фреймворк, который берёт на себя низкоуровневую передачу аудио и даёт готовый voice pipeline. Полностью ручная сборка возможна, но требует больше кода на буферизацию и обработку сети.
Правда ли, что свой стек всегда дешевле готовой платформы?
Нет. При небольшом объёме звонков время на разработку и поддержку трёх отдельных интеграций может стоить дороже, чем разница в цене с Vapi или Retell. DIY выгоднее на объёме или при нестандартной логике.
Как подключить телефонию к DIY-стеку?
Через Twilio: он принимает звонки и передаёт аудиопоток в вашу систему в формате ulaw_8000, который ElevenLabs и большинство STT поддерживают напрямую без конвертации.
Сколько стоит распознавание речи на русском языке?
Столько же, сколько на английском: Whisper API не делает различий в цене между языками, тариф фиксированный — 0.006 доллара за минуту вне зависимости от языка аудио.
Что делать, если ассистент путает похожие команды?
Для несложных сценариев помогает нечёткое сравнение строк (fuzzy matching): оно распознаёт вариации одной и той же команды вместо точного совпадения текста.
Если хотите собрать голосового агента под конкретную задачу бизнеса, а не тестовый прототип, посмотрите каталог AI-инструментов на VibeCoderz или запишитесь на консультацию к Максиму — разберём архитектуру под вашу нагрузку и бюджет. Больше про голосовых агентов — в статье Голосовые AI агенты: гайд для вайбкодера.
Источники: ElevenLabs, OpenAI Speech-to-Text Guide.
Обновлено: август 2026.