Skip to content

Releases: hangry-labs/Qwen3-ASR-STT

v1.0

Choose a tag to compare

@TheMasterOfDisasters TheMasterOfDisasters released this 04 Oct 04:31
Immutable release. Only release title and notes can be modified.

v1.0

  • Hardened the public API contract for OpenAI-client integrations while retaining its convenient permissive behavior: documented multipart and realtime schemas in /docs, made the single loaded model optional to specify, added model registration timestamps, completed unaligned verbose_json metadata, made SRT/VTT use real forced alignment, enforced timestamp-format rules, added tested AAC support and a configurable 100 MB upload limit, normalized unexpected failures, grouped custom and compatible routes, and added a live OpenAI Python client contract regression.
  • Added persistent and on-demand forced-aligner lifecycle management. Word or Segment selection can load the aligner without restarting, while the System tab can release its VRAM or keep it loaded across container replacements through the unified product data volume. Segment output is now divided into punctuation-, silence-, and duration-aware cues instead of one whole-file block.
  • Added Japanese word/segment alignment support to the image, capability-aware timestamp language validation, automatic idle aligner release, forced verbose_json timestamp output, actionable language-tokenizer errors, persistent realtime defaults, and one unified data volume for model assets, compiler caches, and application settings across releases.
  • Added a viewport-bounded Qwen3-ASR-STT brand hero that collapses into a responsive persistent header, restores its state before first paint, keeps the full loaded model available as hover detail, and links the displayed UI version to GitHub Releases. Refreshed the WebP Hangry Labs artwork across the UI, examples, and 404 page; added a localized, linked “Powered by Hangry Labs" signature; and placed the Hangry Labs logo immediately left of the Qwen mascot in the compact header. Reduced the vendored Lucide font to the glyphs used by the workspace.
  • Refined microphone workflows with automatic example loading, single-button record/stop controls for both recorded and realtime audio, responsive recording waveforms, aligned device refresh controls, and clearer recording status placement.
  • Expanded the System-tab GPU monitor with one-second tracking charts for compute load, memory activity, VRAM, temperature, power, fan speed, and graphics/memory clocks. Added timestamped hover values, one- and ten-minute windows, on-demand server sampling, and browser-session history restoration. The System layout now keeps operational controls in the narrower left column while the wider GPU monitor remains at the top right.
  • Extended transcription benchmarks with detected GPU identity, end-to-end request latency, audio duration, real-time factor, and realtime throughput. The refreshed 0.6B run processed 1,320.936 seconds of audio in 32.376 seconds on an RTX 5070 Ti, or 40.80 times realtime, while scoring 96.10% plus a 0.41% bonus.
  • Reorganized runtime composition into a dedicated product application layer, limited the browser and API modules to their own responsibilities, colocated GPU telemetry with the UI, removed the obsolete API-only launcher and direct-library input/export compatibility paths, and pruned seven unused packages from the locked Docker dependency set.
  • Polished forced-alignment workflows with timestamp choice restoration during ordinary page refreshes, automatic removal of incompatible examples, live load-completion feedback, tokenizer preloading, and dynamic-shape compilation to avoid first-use recompilation when audio or alignment language changes.
  • Replaced quadratic forced-aligner timestamp repair with a stable O(N log N) implementation based on upstream PR QwenLM/Qwen3-ASR#215, preserving existing anchors and interpolation results.
  • Reproduced zero-duration lexical timestamps from QwenLM/Qwen3-ASR#197 and added a model-score-aware constrained decoder fallback that preserves ordinary alignment output while resolving affected words into positive, monotonic spans.
  • Profiled the cumulative realtime path from QwenLM/Qwen3-ASR#199, reproduced 4.8× latency growth and a 74-second model-context failure, and replaced unbounded accumulation with a configurable stable rolling audio/transcript window. A 120-second regression now completes with a 30-second inference cap and stable post-window update latency.
  • Added a deterministic 44-case audio robustness benchmark for QwenLM/Qwen3-ASR#165, covering silence, synthetic noise, hum, echo, and weak speech in automatic and forced-language modes. The 0.6B baseline produced no false positives for 10 automatic-language non-speech cases but hallucinated text for 18 of 20 forced-language cases; clean speech remained accurate at 1% amplitude. The runtime intentionally preserves model-native silence handling instead of adding VAD or energy gating that could alter streaming, alignment, quiet-speech, or training-data workflows.
  • Reproduced the prompt/context leakage reported in QwenLM/Qwen3-ASR#186: forced-language decoding can copy context when audio is silent or weak, while real speech can anchor the same context as a useful vocabulary hint. This upstream model behavior remains unchanged rather than adding lossy prompt filtering or a separate hotword model.
  • Added GitHub Container Registry as an official image mirror. One workflow publishes identical full and tiny rolling and immutable tags to Docker Hub and GHCR.
  • Unified full and tiny publishing in one Buildx job so both variants reuse the same dependency graph without loading either image into the runner's Docker store. Model prefetch now depends only on its focused downloader code and build arguments, and baked assets occupy an independent final-image layer, allowing unrelated UI/API changes to reuse both the downloads and the large model layer.
  • Added complete browser UI localization for English, Polish, Japanese, Chinese, Spanish, and German. Official locale routes (/en, /pl, /ja, /zh, /es, and /de) provide stable guide links, while the root page defaults to English and remembers each browser's selected language.
  • Added a responsive, dependency-free GitHub Pages showcase with playable repository audio, reference transcripts, native-language filters, and self-contained localization for all 30 supported transcription languages. Selecting a language now filters its recording and localizes the page automatically, while the browser UI links to the matching language directly.
  • Made public Docker and API commands single-line for direct use in Bash, PowerShell, and Windows Command Prompt, documented the provenance of generated audio fixtures, and kept GitHub Release publication as an explicit manual gate after tagged deployment validation.
  • Added concise GitHub README summaries in Norwegian Bokmål, Polish, Japanese, Simplified Chinese, and Spanish, with a language switcher below the project logo and locale-matched links to the complete Hangry Labs product guides.

Run this release with either image variant:

Standard image

docker run --name qwen3-asr-stt-v1-0 --restart unless-stopped -p 8000:8000 --gpus all -v qwen3_asr_stt_data:/app/persistent hangrylabs/qwen3-asr-stt:v1.0@sha256:ea222327b6e999803715abdded7f714a689c54f83a30addbce30e83d163c4527

Tiny image

docker run --name qwen3-asr-stt-v1-0-tiny --restart unless-stopped -p 8000:8000 --gpus all -e HF_HUB_OFFLINE=0 -e TRANSFORMERS_OFFLINE=0 -v qwen3_asr_stt_data:/app/persistent hangrylabs/qwen3-asr-stt:v1.0_tiny@sha256:92fe5ffec58b53c068895c94bfe407201cad2aa0f577ca03e842d9efb69257b7

v0.2.0

Choose a tag to compare

@TheMasterOfDisasters TheMasterOfDisasters released this 02 Oct 13:39
Immutable release. Only release title and notes can be modified.

v0.2.0

  • Synchronized the maintained Hangry Labs runtime with upstream Qwen3-ASR through upstream commit 7c6daf7.
  • Migrated the runtime to the upstream Hugging Face Qwen3-ASR and forced-aligner implementations.
  • Replaced the legacy checkpoints with Qwen3-ASR-0.6B-hf, Qwen3-ASR-1.7B-hf, and Qwen3-ForcedAligner-0.6B-hf in the offline image.
  • Replaced the deleted custom vLLM model/plugin with vLLM 0.26's maintained built-in Qwen3-ASR implementation and made it the production default.
  • Corrected a major migration regression where production inference had temporarily fallen back to native Transformers instead of the optimized graph-backed vLLM path.
  • Upgraded and locked PyTorch 2.11 CUDA 13.0, Transformers 5.14, and vLLM 0.26, including a compiler/runtime compatibility pin for FlashInfer JIT builds.
  • Restored full-and-piecewise CUDA graph execution, FlashInfer kernels, deterministic decoding, representative auto/forced-language warmups, and persistent vLLM, FlashInfer, and TorchInductor caches.
  • Reduced the 0.6B 300-file transcription benchmark from 277.136 seconds on the initial v0.2 native Transformers path to 31.497 seconds on the integrated vLLM path. This is 43% faster than the historical v0.1 result of 55.382 seconds while maintaining comparable quality at 96.05 versus 95.99.
  • Preserved realtime decoding, optional native forced alignment, serialized inference, readiness, watchdog, and process-recovery safeguards.
  • Replaced the previous Gradio interface with a responsive local browser UI on the main port 8000, removing the second UI listener and Gradio runtime dependency.
  • Added the branded model/readiness/version header, replaceable waveform upload and recording editors, playback and trimming tools, multilingual examples, direct aligner capability feedback, realtime-setting explanations, API status, and GPU visibility.
  • Vendored Lucide and WaveSurfer assets for offline UI use and preserved their licenses in the distribution and third-party notices.
  • Removed the legacy qwen_asr.server.app module and direct-library example scripts so the supported product surface is the Docker-first standalone UI and OpenAI-compatible API.

Run this release with either image variant:

Standard image

docker run --name qwen3-asr-stt-v0-2-0 --restart unless-stopped -p 8000:8000 --gpus all hangrylabs/qwen3-asr-stt:v0.2.0@sha256:3b04e64ef9a516b879b8829dc142ad0b192adb371cc2162e610ea5c6da2eb7e3

Tiny image

docker run --name qwen3-asr-stt-v0-2-0-tiny --restart unless-stopped -p 8000:8000 --gpus all -e HF_HUB_OFFLINE=0 -e TRANSFORMERS_OFFLINE=0 -v qwen3_asr_stt_v0_2_0_hf_cache:/app/.cache/huggingface hangrylabs/qwen3-asr-stt:v0.2.0_tiny@sha256:2facd0a2b4396ce656c38773bed7dba1d2ad6c401d2881ff39c0a81a83333524

v0.1.0

Choose a tag to compare

@TheMasterOfDisasters TheMasterOfDisasters released this 02 Oct 11:53
Immutable release. Only release title and notes can be modified.

v0.1.0

  • Forked Qwen3-ASR into a Hangry Labs runtime-focused project for local and private speech-to-text inference.
  • Added a Python 3.13 runtime with pinned dependencies and reproducible full and tiny Docker image targets.
  • Added a full offline-capable image with the Qwen3-ASR 0.6B and 1.7B models plus the optional forced-aligner asset baked into the image and validated during builds.
  • Added a tiny image for smaller deployments that download models into a persistent Hugging Face cache volume.
  • Made Qwen3-ASR 0.6B the default model while retaining configurable 1.7B support and model-specific GPU/context profiles.
  • Added persistent vLLM/Torch compile caching, startup warmup, deterministic decoding, bounded generation, and offline runtime defaults.
  • Added a combined FastAPI and Gradio service that exposes the browser UI and APIs from one container and port.
  • Added a browser UI for file upload, microphone recording, bundled examples, language selection, realtime transcription, API status, response inspection, and GPU monitoring.
  • Added the OpenAI-compatible /v1/audio/transcriptions API with JSON, verbose JSON, and text responses, automatic or forced language selection, model discovery, and supported-language routes.
  • Added local realtime transcription session APIs and UI streaming with buffered appends, incremental results, finalization, deletion, and abandoned-session cleanup.
  • Added optional forced alignment for timestamped transcription responses without loading the aligner into VRAM by default.
  • Added HTTPS certificate and key configuration so browser microphone capture can work from secure remote origins.
  • Serialized access to the synchronous offline vLLM engine to prevent unsafe overlapping inference across API, realtime, UI, warmup, and watchdog operations.
  • Added inference and queue deadlines, degraded readiness state, diagnostic logging, and supervised process recycling when an engine call cannot be recovered safely.
  • Added separate liveness and readiness endpoints, inference metrics, startup readiness probes, and a periodic auto-language inference watchdog.
  • Added 0.6B and 1.7B VRAM and multilingual transcription benchmark workflows with mandatory prewarming and a 300-file, 30-language test corpus.
  • Added Taskfile workflows for dependency locking, image builds, local deployments, model-specific benchmarks, API checks, logs, cleanup, CodeQL analysis, and guarded releases.
  • Added GitHub Actions for lightweight source and packaging checks plus full/tiny Docker image publication with rolling and immutable release tags.
  • Removed upstream training, fine-tuning, and dataset-preparation surfaces to keep the fork focused on inference, Docker deployment, API compatibility, UI testing, and operational reliability.

Standard image

docker run --name qwen3-asr-stt-v0-1-0 --restart unless-stopped -p 8000:8000 --gpus all hangrylabs/qwen3-asr-stt:v0.1.0@sha256:da0ce7034fe162989e8c23bc6b28ccab40eda32708893eff203bb22532742916

Tiny image

docker run --name qwen3-asr-stt-v0-1-0-tiny --restart unless-stopped -p 8000:8000 --gpus all -e HF_HUB_OFFLINE=0 -e TRANSFORMERS_OFFLINE=0 -v qwen3_asr_stt_v0_1_0_hf_cache:/app/.cache/huggingface hangrylabs/qwen3-asr-stt:v0.1.0_tiny@sha256:0274e0b2cfcbb5595f24fccec5b0dcbbdfc8e3baf2ba66c737154d843a73f3fe