CoolFace
Modelpublic

OpenASR/qwen3-forced-aligner-0.6b

sourceHugging Faceapache-2.0updated 1mo agoView on Hugging Face
0likes4.4kdownloads
Model Card

<div align="center">

Qwen3-ForcedAligner 0.6B · OpenASR

Word-level forced alignment for OpenASR transcripts -- a non-autoregressive Qwen3 audio+text model that refines per-word timestamps

![License](https://huggingface.co/Qwen/Qwen3-ForcedAligner-0.6B/blob/c7cbfc2048c462b0d63a45797104fc9db3ad62b7/LICENSE) ![Format](https://github.com/QuintinShaw/openasr) ![Runtime](https://openasr.org) ![Base model](https://huggingface.co/Qwen/Qwen3-ForcedAligner-0.6B)

A capability-pack support model for the [OpenASR](https://github.com/QuintinShaw/openasr) runtime — pure-Rust inference, no Python at inference time. Not a standalone transcription model: it augments another OpenASR ASR model's own decode path.

</div>


✨ Highlights

  • 🎯 Refined word timestamps — consumes a finished transcript's text plus the source audio and replaces a model family's own approximate per-word timestamps with aligner-refined spans (--word-timestamps=aligned)
  • Non-autoregressive — a single forward pass over interleaved audio/text with argmax at <timestamp> positions (5000 80ms-wide bins), not incremental greedy decoding, so it is not dispatched through the qwen3-asr runtime
  • 🧩 Shares its backbone with Qwen3-ASR — the same audio-encoder + LM thinker tensor layout, byte-for-byte; only the final head differs (an independent 5000-way classification head instead of the tied vocabulary head)
  • 🔌 Shared attribution dependency — used explicitly by --word-timestamps=aligned and internally when external diarization must split a coarse ASR segment at speaker changes
  • 🦀 Validated native Q4_K default — the public q4k name follows OpenASR's unified tier naming, while boundary-sensitive audio, token-embedding, and timestamp-head matrices stay Q80; Q8_0 and FP16 remain available
  • 🦀 Native in OpenASR.oasr packs run with no Python at inference, engineered for peak performance on CPU & GPU

🚀 Quickstart

bash
# 1. Install the OpenASR CLI  ·  https://openasr.org
# 2. Pull the pack
openasr pull qwen3-forced-aligner-0.6b:q4

# 3. Use it as an opt-in refinement for another model's transcribe call
openasr transcribe meeting.wav --model <asr-model> --word-timestamps=aligned

📦 Pack

QuantFile (`.oasr`)Size
fp16qwen3-forced-aligner-0.6b-fp16.oasr1.84 GB
q8_0qwen3-forced-aligner-0.6b-q8_0.oasr986 MB
q4_kqwen3-forced-aligner-0.6b-q4_k.oasr765 MB

🧠 About Qwen3-ForcedAligner 0.6B

Qwen3-ForcedAligner-0.6B is a word-level forced-alignment model from Qwen, sharing its audio-encoder + LM thinker tensor layout byte-for-byte with Qwen3-ASR (same Qwen3ASRForConditionalGeneration architecture). The only structural difference is the final head: instead of a tied vocabulary lm_head, it uses an independent Linear(hidden_size, 5000) classification head over 80ms-wide timestamp bins. Given a transcript's text and its source audio, it runs a single non-autoregressive forward pass and reads off word-boundary timestamps at argmax <timestamp> positions -- refining a model family's own (typically decode-time-approximate) per-word timestamps. This OpenASR repo repackages the weights as .oasr packs that run natively in the OpenASR runtime -- no Python at inference, all decoding local. OpenASR recommends the validated q4_k tier and also ships q8_0 and an fp16 full-precision reference tier. The q4k label is the catalog's unified product name, not a claim that every matrix uses Q4K: the audio encoder, token embedding, and timestamp head remain Q8_0, and pack verification replays the exact per-tensor policy. Q3 and legacy all-Q4 packs are rejected because small logit perturbations can move a word boundary across multiple 80ms bins.

Not a standalone transcription model. This pack cannot transcribe audio by itself; it is an alignment dependency consumed explicitly via openasr transcribe <audio> --model <asr-model> --word-timestamps=aligned. It is also invoked internally when external speaker diarization must split a coarse ASR segment at speaker changes; internally requested word anchors are removed again unless the caller asked to receive them.

Verification: local verification covers a tensor-parity check against the real upstream checkpoint -- every source safetensors tensor maps 1:1 to a destination tensor, plus the two synthesized frontend tensors. On the fixed 205-item Chinese alignment set, the recommended q4k pack's CPU and Apple M1 Metal outputs each stayed within 320ms of the official reference and within one 80ms model bin of q80. All published tiers pass their declared per-tensor quantization policy.

⚙️ How this pack was made

Converted from Qwen/Qwen3-ForcedAligner-0.6B with the OpenASR local-source importer (openasr model-pack import qwen-forced-aligner ...).

The .oasr container is GGUF-backed; each shipped quant stores weights at the requested precision while parity-sensitive tensors stay f32 where required.

⚖️ License

This pack inherits the upstream model's license: Apache-2.0 (source). OpenASR packaging retains the upstream copyright; the only modifications are format conversion and quantization.

🙏 Acknowledgements

This pack is a redistribution of Qwen3-ForcedAligner-0.6B, created and open-sourced by Qwen (Qwen/Qwen3-ForcedAligner-0.6B). All credit for the original architecture, training, and weights belongs to the authors; the license is inherited from and identical to the upstream model (Apache-2.0). OpenASR only performs format conversion, quantization, runtime verification, and local-inference adaptation.

🔗 Links

  • 🦀 OpenASR — <https://github.com/QuintinShaw/openasr>
  • 🌐 Website — <https://openasr.org>
  • 🤗 Upstream modelQwen/Qwen3-ForcedAligner-0.6B