Голосовой ИИ-бот на своём VPS: STT, LLM и TTS
Голосовой ассистент — это три звена: распознать речь, подумать, ответить голосом. Соберём весь пайплайн на VPS, где вы контролируете и модель, и данные пользователей.
Содержание
Из чего состоит голосовой бот
['Голосовой ИИ — это конвейер из трёх компонентов, каждый из которых можно держать локально на сервере:', '- STT (speech-to-text) — распознавание речи, обычно Whisper
- LLM — генерация ответа, локальная модель или API
- TTS (text-to-speech) — синтез голоса, например Piper
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS для голосового ботаТребования к серверу
['Whisper и TTS ощутимо грузят CPU. Для модели whisper base/small и Piper комфортно на 4 vCPU и 8 ГБ RAM. Если добавляете локальную LLM — берите 16 ГБ RAM. Латентность конвейера складывается из трёх этапов, поэтому производительность на ядро здесь решает: чем быстрее CPU, тем короче пауза между вопросом и голосовым ответом.', 'apt update && apt install -y python3 python3-venv ffmpeg git\npython3 -m venv ~/venv && source ~/venv/bin/activate\npip install faster-whisper openai piper-tts', 'ffmpeg обязателен: через него конвертируются входные аудио в нужный формат.']
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Шаг 1: распознавание речи (Whisper)
['faster-whisper работает на CPU заметно быстрее оригинала. Пример распознавания файла:', 'from faster_whisper import WhisperModel\nmodel = WhisperModel("small", device="cpu", compute_type="int8")\nsegments, _ = model.transcribe("input.wav", language="ru")\ntext = " ".join(s.text for s in segments)\nprint(text)', 'compute_type int8 экономит память и ускоряет инференс на CPU почти без потери качества. Модель загружайте один раз при старте сервиса и держите в памяти: повторная загрузка на каждый запрос добавит секунды задержки. Размер модели выбирайте по компромиссу: base быстрее и легче, small и medium точнее на именах и терминах, но требовательнее к CPU.']
Шаг 2: ответ LLM
['Распознанный текст отправляем в модель. Для приватного контура — локальная Ollama, для скорости — внешний API. Системным промптом задайте роль ассистента и попросите отвечать короткими фразами: длинные абзацы плохо звучат в синтезе и раздражают на слух. Голосовой диалог любит лаконичность.', 'from openai import OpenAI\nai = OpenAI(api_key="...", base_url="http://127.0.0.1:11434/v1")\nr = ai.chat.completions.create(model="qwen2.5:7b",\n messages=[{"role": "user", "content": text}])\nanswer = r.choices[0].message.content']
Шаг 3: синтез речи (Piper)
['Piper — быстрый нейросетевой TTS, работает офлайн. Скачайте голосовую модель и озвучьте ответ:', 'echo "$answer" | piper --model ru_RU-model.onnx --output_file reply.wav', 'Готовый reply.wav отдаёте пользователю — через Telegram voice, веб-виджет или SIP-шлюз, в зависимости от канала. Piper поставляется с готовыми голосами под разные языки; русские модели скачиваются отдельными файлами .onnx вместе с конфигом. Выбор голоса влияет на восприятие бота не меньше, чем качество ответов, поэтому послушайте несколько вариантов перед запуском в прод.']
Сборка в сервис и типичные грабли
['Оберните пайплайн в FastAPI-эндпоинт (принимает аудио, возвращает аудио) и поднимите через systemd или gunicorn/uvicorn с автозапуском. Три модели — Whisper, LLM и Piper — держите загруженными в память единожды при старте процесса, тогда каждый запрос обрабатывается без прогрева.', '- Долгий холодный старт — держите модель Whisper загруженной в память, не грузите на каждый запрос.
- Нет ffmpeg — Whisper упадёт на декодировании, ставьте пакет заранее.
- Хрип в TTS — проверьте частоту дискретизации выходного WAV (обычно 22050 Гц).
- Пики CPU — распознавание и синтез не запускайте параллельно на слабом тарифе.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS для голосового ботаНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли сделать голосового бота без GPU?
Да. faster-whisper и Piper работают на CPU; на быстром NVMe и EPYC задержки приемлемы для небольших нагрузок.
Куда уходит аудио пользователей?
Если STT, LLM и TTS локальные — никуда. Всё остаётся на вашем VPS, что важно для приватности.
Какой тариф выбрать?
Для STT+TTS хватит 4 vCPU / 8 ГБ RAM; с локальной LLM берите 16 ГБ RAM.
Поддерживается ли русский язык?
Да, у Whisper и Piper есть русские модели — качество распознавания и синтеза достойное.