Локальный Qwen3-ASR-1.7B¶
Сервис использует уже подготовленные runtime/qwen3-asr-env и models/qwen3-asr-1.7b. Скрипт ничего не устанавливает и не загружает. Тяжёлые файлы модели и окружение остаются локальными; обычный запуск не зависит от каталога artifacts.
Из обычного терминала PowerShell, рабочий каталог E:\five-api:
-Check проверяет наличие окружения, версии пакетов, исходник inference и SHA256 всех файлов модели. Он не импортирует Torch, не создаёт CUDA-контекст, не загружает модель и не запускает сервер. Успешная проверка не гарантирует наличия свободной видеопамяти: фактическое размещение проверяется при ручном запуске.
Сервер работает в открытом терминале; остановка — Ctrl+C. По умолчанию это физическая GPU 1, видимая процессу как cuda:0, BF16, SDPA, официальный greedy decoder, batch 1 и максимум 1024 новых токена. Порт занят — скрипт завершится, не останавливая чужой процесс. Перезапуск выполняется пользователем вручную. CPU можно выбрать явно: -Device cpu -Precision float32 (8 потоков, существенно медленнее). Автоматического перехода на CPU нет.
API¶
Выбор в приложении¶
В Playground модель называется Qwen3-ASR 1.7B. Публичные файловые API
принимают Qwen3-ASR-1.7B: в STT v1 передайте
model=Qwen3-ASR-1.7B&lang=en-US, в STT v3 —
recognitionModel.model: "Qwen3-ASR-1.7B", а в
OpenAI-совместимом API — model="Qwen3-ASR-1.7B"
и language="en". Для русского выберите ru-RU или ru соответственно.
В приложении доступны готовые файлы на 30 поддерживаемых языках, включая длинные записи. Результат содержит текст без точных пословных таймкодов и диаризации. Живой поток, режим Текст по мере обработки и уточнение финалов потока для этой модели недоступны. Тариф — 8,75 кредита в минуту, длительность округляется вверх до секунды.
Поддерживаемые языки¶
Список соответствует официальной карточке Qwen3-ASR-1.7B
и локальному worker. В Playground выберите Язык записи, затем
Qwen3-ASR 1.7B. STT v1/v3 используют locale из таблицы; OpenAI-совместимый
API принимает соответствующий ISO-код. Актуальный список опубликован также
в GET /api/stt/capabilities → models.Qwen3-ASR-1.7B.supportedLanguages.
| Язык | STT v1/v3 | ISO-код |
|---|---|---|
| Русский | ru-RU |
ru |
| Английский | en-US |
en |
| Китайский (мандаринский) | zh-CN |
zh |
| Кантонский | yue-HK |
yue |
| Арабский | ar-SA |
ar |
| Немецкий | de-DE |
de |
| Французский | fr-FR |
fr |
| Испанский | es-ES |
es |
| Португальский | pt-PT |
pt |
| Индонезийский | id-ID |
id |
| Итальянский | it-IT |
it |
| Корейский | ko-KR |
ko |
| Тайский | th-TH |
th |
| Вьетнамский | vi-VN |
vi |
| Японский | ja-JP |
ja |
| Турецкий | tr-TR |
tr |
| Хинди | hi-IN |
hi |
| Малайский | ms-MY |
ms |
| Нидерландский | nl-NL |
nl |
| Шведский | sv-SE |
sv |
| Датский | da-DK |
da |
| Финский | fi-FI |
fi |
| Польский | pl-PL |
pl |
| Чешский | cs-CZ |
cs |
| Филиппинский | fil-PH |
fil |
| Персидский | fa-IR |
fa |
| Греческий | el-GR |
el |
| Венгерский | hu-HU |
hu |
| Македонский | mk-MK |
mk |
| Румынский | ro-RO |
ro |
Язык задаётся явно; автоматическое определение в этом маршруте не включено. Узбекский, казахский, кыргызский и таджикский в этот набор Qwen не входят.
Прямой API локального сервиса¶
Проверка готовности: GET http://127.0.0.1:8050/health. Uvicorn загружает модель до начала приёма HTTP: во время запуска соединение обычно ещё недоступно. После успешного запуска — 200 с точной моделью, ревизией, устройством, декодером и лимитами; 503 возвращается, если endpoint доступен, но worker не готов. GET /v1/models возвращает идентификатор Qwen/Qwen3-ASR-1.7B.
curl.exe http://127.0.0.1:8050/v1/audio/transcriptions `
-F "file=@E:/audio/clip.wav" `
-F "model=Qwen/Qwen3-ASR-1.7B" `
-F "language=ru"
Ключ не нужен; по умолчанию сервер доступен только на loopback. Это совместимый базовый multipart-интерфейс OpenAI: file, model, language, response_format=json|text, temperature=0. Пустой prompt разрешён, непустой отклоняется. SDK, требующий формальный api_key, может передать произвольную непустую строку: сервер её не использует. /transcribe — алиас того же обработчика.
Русский язык выбран по умолчанию; допускаются ISO-коды поддерживаемых языков (en и другие, перечислены в /health) или их английские названия. Язык принудительно задан; это не автоматическое определение языка. Неподдерживаемые параметры, таймкоды, streaming и ненулевая temperature отклоняются, а не игнорируются. JSON содержит text, model, revision, language, duration, complete и информацию о завершении генерации. Формат text возвращает только расшифровку.
Ограничения и проверки¶
- Один запрос выполняется за раз; по умолчанию ожидают ещё два. Переполненная очередь — 429, слишком долгое ожидание — 503.
- В этой версии один клип длительностью 0,1–30 секунд, не более 16 MiB; доступны
-MaxAudioSeconds(уменьшение до 1–30) иQWEN3_ASR_MAX_UPLOAD_BYTES. Надёжные входные форматы — WAV/FLAC; декодирование выполняет установленный libsndfile, без внешнего ffmpeg. Стерео усредняется, частота преобразуется в 16 kHz. - Более длинное аудио получает явный 413, без обрезки. Это ограничение данной сервисной версии, не архитектурный предел Qwen. В установленном
qwen-asr 0.0.6встроенная разбивка ASR начинается на 1200 секундах и соединяет тексты без разделителя; она не используется в этом коротком маршруте. Для длинных записей нужен отдельный проверенный процесс разбиения и соединения. - Каждый ответ обязан завершиться EOS в пределах 1024 токенов. Незавершённая генерация — 502; частичный текст не возвращается как успешный. Нет автоматического повторного распознавания, исправления через LLM, confidence или выдуманных таймкодов.
- Таймаут запроса — 240 секунд (
-RequestTimeoutSeconds). Активную native/CUDA-операцию нельзя безопасно прервать Python-кодом: при отмене или таймауте её завершение дожидаются, сохраняя единственный вычислительный слот. Поэтому фактический возврат ошибки может задержаться до окончания этой операции.
Зафиксированы модель Qwen/Qwen3-ASR-1.7B, ревизия 7278e1e70fe206f11671096ffdd38061171dd6e5, qwen-asr 0.0.6, torch 2.7.0+cu128, transformers 4.57.6, numpy 1.26.4. Хэши хранятся в app/standalone/qwen3_asr_model.py. Настройки соответствуют ранее проверенному локальному batch-декодеру; HTTP-контракт и ошибки проверяются отдельными мок-тестами без запуска сервиса и модели.