Перейти к содержанию
modelium.
Начать с задачи
←

vLLM Audio Transcriptions 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 s2 s6

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

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

Проверяемая цепочка: разрешённая к обработке русская запись → openai/whisper-small → совместимое с вашей версией vLLM железо и аудиозависимости → loopback API → текст → ручная сверка с исходной записью. В карточке Whisper-small указан русский язык и метка apache-2.0, а закреплённый API HF перечисляет model.safetensors. Это данные карточки и репозитория, не измерение русской точности и не оценка нужной RAM/VRAM. Перед промышленным использованием прочитайте лицензию и требования всего стека самостоятельно. s2 s7 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 s2 s3 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 s3 s5 s6 s8

Подготовьте короткий WAV или MP3 со своим голосом или с правом обработки и заранее сделайте эталонный текст; отметьте имена, числа и паузы. API документирует FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV, WEBM. Размер входного файла по умолчанию ограничен 25 МБ через VLLM_MAX_AUDIO_CLIP_FILESIZE_MB; в документе безопасности также указан отдельный лимит декодированной длительности 600 секунд. Размер сжатого файла не гарантирует прохождение длительности и не задаёт требования к VRAM. s1 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 s3 s4

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

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

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

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

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

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

Главный следующий шаг — открыть задачу локального распознавания речи, сверить фактический транскрипт с записью и выбрать runtime по своему железу и требованиям приватности. Если нужен процесс без Python-сервера vLLM, сравните whisper.cpp; результаты альтернатив тоже проверяйте на одном и том же аудио, а не по несопоставимым карточкам. s2 s7

Источники

  1. vLLM: Speech to Text APIs, Transcriptions — revision 138810056093301f4881050fcf2b1786939da387. Получено 06.10.2026.
  2. vLLM: список ASR архитектур и Whisper-small — revision 138810056093301f4881050fcf2b1786939da387. Получено 06.10.2026.
  3. vLLM: официальный Python клиент Audio Transcriptions — revision 138810056093301f4881050fcf2b1786939da387. Получено 06.10.2026.
  4. vLLM: протокол запроса транскрипции — revision 138810056093301f4881050fcf2b1786939da387. Получено 06.10.2026.
  5. vLLM: Security и пределы API key — revision 138810056093301f4881050fcf2b1786939da387. Получено 06.10.2026.
  6. vLLM: обзор Online Serving API — revision 138810056093301f4881050fcf2b1786939da387. Получено 06.10.2026.
  7. openai/whisper-small: карточка автора на HF — revision 973afd24965f72e36ca33b3055d56a652f456b4d. Получено 06.10.2026.
  8. openai/whisper-small: метаданные HF закреплённой ревизии — revision 973afd24965f72e36ca33b3055d56a652f456b4d. Получено 06.10.2026.