# vLLM Audio Transcriptions API: локальная транскрибация русской речи

Источник: https://modelium.tech/zhurnal/vllm-transkripciya-audio-api/

vLLM принимает аудиофайл через совместимый с OpenAI маршрут /v1/audio/transcriptions, если запущена поддерживаемая ASR-модель и установлены аудиозависимости. Для контрольной русской записи подойдёт openai/whisper-small с полем language=ru, но качество, загрузку модели и требования к железу нужно проверить на своём стенде. Список моделей и успешный HTTP-ответ не заменяют сверки текста с записью.

На 6 октября 2026 года по закреплённой документации vLLM поддерживает `/v1/audio/transcriptions` для ASR-моделей. В этом маршруте аудио обрабатывает ваш сервер с выбранной моделью, а не внешний OpenAI API; **само по себе имя модели Hugging Face не доказывает отсутствие исходящего скачивания весов**. Ни сервер, ни модель Modelium не запускал. [s1](#src-s1) [s2](#src-s2) [s6](#src-s6)

## Когда выбирать vLLM для распознавания речи?

Если у вас уже есть совместимый vLLM-стенд и нужен HTTP-контракт для собственной программы, используйте отдельный ASR-checkpoint и multipart-запрос к `/v1/audio/transcriptions`. Это не чатовый `/v1/chat/completions`, не перевод речи и не генерация голоса. Для одной записи на CPU или другого железа сравните пути [Whisper](/zhurnal/whisper-modeli/) и [faster-whisper](/zhurnal/faster-whisper/) прежде, чем выделять GPU-сервер: универсального победителя и собственных измерений здесь нет. [s1](#src-s1) [s2](#src-s2) [s6](#src-s6)

Проверяемая цепочка: **разрешённая к обработке русская запись → openai/whisper-small → совместимое с вашей версией vLLM железо и аудиозависимости → loopback API → текст → ручная сверка с исходной записью**. В карточке Whisper-small указан русский язык и метка `apache-2.0`, а закреплённый API HF перечисляет `model.safetensors`. Это данные карточки и репозитория, не измерение русской точности и не оценка нужной RAM/VRAM. Перед промышленным использованием прочитайте лицензию и требования всего стека самостоятельно. [s2](#src-s2) [s7](#src-s7) [s8](#src-s8)

## Как подготовить сервер и запись?

Официальная документация требует установить аудиозависимости командой `pip install 'vllm[audio]'` в **собственном подготовленном окружении**. Пример vLLM запускает сервер через `vllm serve openai/whisper-large-v3`; здесь вместо large-v3 выбрана указанная в списке поддерживаемых архитектур `openai/whisper-small`. Для контроля весов укажите HF-ревизию `973afd24965f72e36ca33b3055d56a652f456b4d` и запишите используемую версию vLLM, сопоставив её с документацией на Git SHA `138810056093301f4881050fcf2b1786939da387`. Поддержку конкретного GPU, драйвера и доступной памяти проверяйте до загрузки; этот текст не задаёт минимальных требований. [s1](#src-s1) [s2](#src-s2) [s3](#src-s3) [s8](#src-s8)

На подходящем стенде пробная команда по интерфейсу vLLM: `vllm serve openai/whisper-small --revision 973afd24965f72e36ca33b3055d56a652f456b4d --host 127.0.0.1 --port 8000`. Она не запускалась Modelium: сначала проверьте CLI-флаги именно установленной версии и доступность модели на целевой машине. Имя HF может привести к скачиванию весов; предварительное кеширование, сетевые правила и проверка исходящих соединений обязательны, если нужен закрытый контур. После запуска запрос `curl -fsS http://127.0.0.1:8000/v1/models` позволяет сверить ID модели, но ещё не подтверждает транскрибацию. [s2](#src-s2) [s3](#src-s3) [s5](#src-s5) [s6](#src-s6) [s8](#src-s8)

Подготовьте короткий WAV или MP3 **со своим голосом или с правом обработки** и заранее сделайте эталонный текст; отметьте имена, числа и паузы. API документирует FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV, WEBM. Размер входного файла по умолчанию ограничен 25 МБ через `VLLM_MAX_AUDIO_CLIP_FILESIZE_MB`; в документе безопасности также указан отдельный лимит декодированной длительности 600 секунд. Размер сжатого файла не гарантирует прохождение длительности и не задаёт требования к VRAM. [s1](#src-s1) [s5](#src-s5)

## Как отправить русскую запись и прочитать ответ?

Выполните на машине с тестовым `audio.wav`: `curl -fsS -X POST http://127.0.0.1:8000/v1/audio/transcriptions -F 'file=@audio.wav' -F 'model=openai/whisper-small' -F 'language=ru' -F 'response_format=json'`. Это `multipart/form-data`, **не** JSON с путём к файлу; `language=ru` задаёт язык входной записи, `response_format=json` возвращает поле `text`. Официальный пример клиента vLLM пользуется тем же Audio Transcriptions API, но ставит `language=en` для англоязычного демо: переносить `en` на русскую речь нельзя. Команда — инструкция по документации, а не результат прогона. [s1](#src-s1) [s3](#src-s3) [s4](#src-s4)

При успешном запросе сохраните фактически полученное значение `text`, идентификатор модели, версию сервера, длительность и ссылку на исходное аудио в своём приватном журнале. Не используйте пример JSON в документации как якобы ответ вашей модели. Если нужен формат `verbose_json`, документация показывает сегменты, но отдельно предупреждает: поле `no_speech_prob` сейчас не поддерживается, несмотря на его наличие в иллюстративном JSON. Для простой проверки текста достаточно `json`; требования к меткам времени уточняйте по фактическому ответу версии. [s1](#src-s1) [s4](#src-s4)

## Как проверить качество на русской речи без вымышленных процентов?

Прослушайте запись и сравните её с сохранённым `text`: отдельно пометьте пропущенные слова, неверные имена, цифры и участки тишины. Для серии своих записей фиксируйте одинаковые правила пунктуации и нормализации чисел до сравнения. Если у вас есть вручную размеченный эталон, ошибка по словам WER = (замены + удаления + вставки) / число слов эталона; это **методика собственного будущего теста**, а не опубликованный результат модели. На одном коротком аудио нельзя обобщать точность для переговоров, диктовки и шумной телефонной речи. [s7](#src-s7)

Если сервер возвращает отказ или пустой текст, сначала сверьте ID модели в `/v1/models`, формат файла, длительность, наличие `vllm[audio]`, язык и логи загрузки. Изменяйте по одному фактору, затем повторяйте на той же записи. Если памяти не хватает, не выводите её минимум из размера `model.safetensors`: нужны реальные логи конкретного железа и конфигурации. Прерывание локального сервера — Ctrl+C; после пилота удалите локальные тестовые аудио, транскрипты и неиспользуемые кеши по своей политике хранения. [s1](#src-s1) [s2](#src-s2) [s5](#src-s5) [s8](#src-s8)

## Какие границы безопасности у локального API?

Пробный `--host 127.0.0.1` ограничивает входящий HTTP этим хостом, но не доказывает сетевую изоляцию машины и не гарантирует отсутствие исходящих загрузок. Документ vLLM предупреждает, что `--api-key` защищает `/v1/audio/transcriptions`, но **не все** маршруты на том же сервере: для чужих клиентов нужен отдельный proxy с allowlist маршрутов, аутентификацией и сетевыми правилами. Не подставляйте реальные переговоры в непроверенный endpoint. [s1](#src-s1) [s5](#src-s5)

Главный следующий шаг — открыть [задачу локального распознавания речи](/zhurnal/raspoznavanie-rechi-lokalno/), сверить фактический транскрипт с записью и выбрать runtime по своему железу и требованиям приватности. Если нужен процесс без Python-сервера vLLM, сравните [whisper.cpp](/zhurnal/whisper-cpp/); результаты альтернатив тоже проверяйте на одном и том же аудио, а не по несопоставимым карточкам. [s2](#src-s2) [s7](#src-s7)

## Источники

1. [vLLM: Speech to Text APIs, Transcriptions](https://github.com/vllm-project/vllm/blob/138810056093301f4881050fcf2b1786939da387/docs/serving/online_serving/speech_to_text.md) — получено 2026-10-06
2. [vLLM: список ASR архитектур и Whisper-small](https://github.com/vllm-project/vllm/blob/138810056093301f4881050fcf2b1786939da387/docs/models/supported_models.md) — получено 2026-10-06
3. [vLLM: официальный Python клиент Audio Transcriptions](https://github.com/vllm-project/vllm/blob/138810056093301f4881050fcf2b1786939da387/examples/speech_to_text/openai/openai_transcription_client.py) — получено 2026-10-06
4. [vLLM: протокол запроса транскрипции](https://github.com/vllm-project/vllm/blob/138810056093301f4881050fcf2b1786939da387/vllm/entrypoints/speech_to_text/transcription/protocol.py) — получено 2026-10-06
5. [vLLM: Security и пределы API key](https://github.com/vllm-project/vllm/blob/138810056093301f4881050fcf2b1786939da387/docs/usage/security.md) — получено 2026-10-06
6. [vLLM: обзор Online Serving API](https://github.com/vllm-project/vllm/blob/138810056093301f4881050fcf2b1786939da387/docs/serving/online_serving/README.md) — получено 2026-10-06
7. [openai/whisper-small: карточка автора на HF](https://huggingface.co/openai/whisper-small/blob/973afd24965f72e36ca33b3055d56a652f456b4d/README.md) — получено 2026-10-06
8. [openai/whisper-small: метаданные HF закреплённой ревизии](https://huggingface.co/api/models/openai/whisper-small/revision/973afd24965f72e36ca33b3055d56a652f456b4d) — получено 2026-10-06
