Whisper на VPS: распознавание речи в текст
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 — десятки моделей в одном окне. Оплата картой РФ и по СБП.