VibeCoderzVibeCoderz
Все статьи
2026/08/1810 мин чтения

Whisper плюс LLM плюс ElevenLabs: собрать голосовой стек своими руками без платформ

Голосовой стек своими руками — это связка из трёх компонентов: Whisper распознаёт речь, LLM (Claude или GPT) генерирует ответ, ElevenLabs озвучивает его. Без Vapi, без Retell, без месячной платы за платформу, которую вы не контролируете. Ниже — архит…

Содержание (12)+

Голосовой стек своими руками — это связка из трёх компонентов: 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.

All Posts

Автор

Максим Наговицын
Максим Наговицын

Маркетинг-стратег, IT-предприниматель, ментор по вайбкодингу

2026/08/18

10+ лет в маркетинге, 300+ клиентских проектов: сайты, реклама, боты. Создатель GoBanana (228K+ пользователей, 11.6 млн ₽ выручки) и VibeCoderz. Делаю AI-продукты сам через Claude Code, Cursor, Windsurf и консультирую тех, кто хочет так же.

Об авторе →

Читать далее

📢 Новость

Claude Code: новый CLI-агент от Anthropic

Anthropic выпустила Claude Code — терминальный AI-агент для разработчиков. Инструмент работает прямо в командной строке и умеет писать, редактировать и запускать код.

2026/02/27
📝 Конспект

Zcode AI: Полный гид по визуальному интерфейсу для Claude Code и AI-агентов

Узнайте, как использовать Zcode для управления Claude Code, Gemini и Codex в едином GUI. Настройка провайдеров, MCP-серверов и визуальный вайбкодинг.

2026/02/28
📝 Конспект

YouTube-канал с монетизацией из любой точки мира: Пошаговый гайд 2026

Инструкция по созданию YouTube-канала: обход блокировок SMS, настройка расширенных функций через виртуальные номера и правила безопасности для монетизации.

2026/02/28
📝 Конспект

Windsurf Code Maps: Как глубоко понимать архитектуру проекта перед написанием кода

Полный гайд по Windsurf Code Maps, модели Sway 1.5 и Sway Grep. Узнайте, как визуализировать архитектуру кода и ускорить разработку в 13 раз.

2026/02/28
📝 Конспект

Vk Fast Cash Strategy

Аудитория ВКонтакте — это те же люди, что и в Instagram, но 'социальный контракт' площадки другой. Если Instagram — это 'дорогой ресторан' с демонстрацией успеха, то VK — это 'душевная шашлычная'. Здесь не работает глянцевый 'успешный успех

2026/02/28