MAATRIX / Блог / Whisper на VPS: распознавание речи в текст

Whisper на VPS: распознавание речи в текст

Whisper на VPS: распознавание речи в текст
Блог MAATRIX · 2026-07-07

Whisper от OpenAI превращает аудио в текст на десятках языков, включая русский. На своем VPS ты транскрибируешь подкасты, звонки и голосовые без загрузки чужих сервисов и без лимитов на минуты.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Зачем свой Whisper

Облачные API распознавания берут деньги за минуту и отправляют твое аудио на чужие серверы. Локальный Whisper решает и то, и другое: транскрибируешь сколько угодно, данные не покидают твою машину — это критично для звонков, медицины, юридических записей.

Whisper бывает разных размеров: от tiny (быстро, грубо) до large-v3 (точно, тяжело). Разница в качестве заметна на шумных записях и редких словах: чем крупнее модель, тем меньше ошибок в терминах и именах. Но крупная модель требует больше RAM и времени, поэтому размер подбирают под задачу и железо.

Для CPU-сервера оптимальны small и medium через оптимизированную реализацию faster-whisper. Они дают хороший баланс: разборчивый русский текст с тайм-кодами при разумной скорости, пригодной для потоковой обработки архива записей.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS для Whisper

Установка faster-whisper

Обычный whisper на CPU медленный. Бери faster-whisper на движке CTranslate2 — он в разы быстрее при той же точности. Ставим зависимости:

apt update && apt install -y python3 python3-venv python3-pip ffmpeg
python3 -m venv ~/whisper-venv
source ~/whisper-venv/bin/activate
pip install faster-whisper

ffmpeg обязателен — он декодирует любые форматы аудио (mp3, m4a, ogg, wav) перед подачей в модель.

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Первая транскрипция

Скрипт transcribe.py, который распознает файл на русском:

from faster_whisper import WhisperModel

model = WhisperModel("medium", device="cpu", compute_type="int8")
segments, info = model.transcribe("audio.mp3", language="ru")

print("Язык:", info.language)
for seg in segments:
    print(f"[{seg.start:.1f}s -> {seg.end:.1f}s] {seg.text}")

Параметр compute_type="int8" включает квантизацию — модель занимает меньше RAM и считается быстрее на CPU почти без потери качества.

python transcribe.py

Обработка длинных файлов

Модель скачивается один раз при первом запуске и кешируется в ~/.cache/huggingface. Для часовых записей увеличивай размер beam-поиска ради точности или уменьшай ради скорости:

segments, info = model.transcribe(
    "lecture.mp3", language="ru", beam_size=5, vad_filter=True)

Флаг vad_filter=True отсекает тишину — это ускоряет обработку и убирает галлюцинации в паузах. Здесь помогает NVMe у MAATRIX: длинные аудио читаются с диска быстро, а кеш модели грузится мгновенно.

API-обертка на FastAPI

Чтобы принимать аудио по сети, оберни модель в HTTP-сервис:

pip install fastapi uvicorn python-multipart
from fastapi import FastAPI, UploadFile
from faster_whisper import WhisperModel
import tempfile

app = FastAPI()
model = WhisperModel("small", device="cpu", compute_type="int8")

@app.post("/transcribe")
async def transcribe(file: UploadFile):
    with tempfile.NamedTemporaryFile(suffix=".mp3", delete=False) as f:
        f.write(await file.read())
        path = f.name
    segments, _ = model.transcribe(path, language="ru")
    return {"text": " ".join(s.text for s in segments)}
uvicorn app:app --host 127.0.0.1 --port 8001

Чтобы сервис пережил перезагрузку, оберни запуск в systemd-юнит с Restart=always — точно так же, как для других AI-сервисов. Тогда транскрипция доступна по сети постоянно, и бот или веб-приложение обращается к ней в любой момент.

Частые ошибки

  • ffmpeg not found — установи пакет ffmpeg, без него не читается mp3/m4a.
  • Медленно на large — на CPU бери small/medium с compute_type=int8.
  • Галлюцинации в тишине — включи vad_filter=True.
  • Неверный язык — задай language="ru" явно, автоопределение иногда ошибается на коротких фрагментах.

Отдельно про производительность: faster-whisper на движке CTranslate2 использует все ядра процессора, поэтому многоядерный AMD EPYC у MAATRIX линейно ускоряет распознавание, а быстрый NVMe убирает задержки на чтении длинных аудиофайлов и загрузке кеша модели.

Проверка API боем:

curl -X POST http://127.0.0.1:8001/transcribe -F "file=@audio.mp3"

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS для Whisper

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Частые вопросы

Какой размер модели выбрать для CPU?

Для баланса скорости и точности на русском — medium с compute_type=int8. Если важна скорость и объемы большие, бери small.

Whisper понимает русский?

Да, отлично. Модели multilingual поддерживают русский из коробки, достаточно указать language="ru" для стабильности.

Уходит ли мое аудио на сторонние серверы?

Нет. Модель работает локально на твоем VPS, файлы не покидают сервер — это ключевое отличие от облачных API распознавания.

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.