GraySoft
Projects Models About FAQ Contact Download guIDE →

cstr/qwen3-forced-aligner-0.6b-gguf q8_0 GGUF - Free GGUF Download is indexed on GraySoft with repository links, GGUF quant files, and Hugging Face metadata. This page helps you pick a local model for guIDE or other runtimes. See related models in the same shard below.

Model Intelligence Sheet

cstr/qwen3-forced-aligner-0.6b-gguf overview

GGUF conversions of Qwen/Qwen3-ForcedAligner-0.6B — a single-pass forced aligner that takes any (audio, transcript) pair and predicts per-word/per-token timestamps. Reuses the Qwen3-ASR audio encoder + 28-layer LLM body but swaps the lm_head from (vocab, d) to (5000, d): each placeholder you embed in the input gets a 5000-class softmax over class 80 ms timestamps. Plug it into CrispASR via -am qwen3-forced-aligner-.gguf to get word-level timing on any transcription backend — voxtral, voxtral4b, qwen3-asr, granite, parakeet, canary, cohere, even whisper. It's an alternative to the existing canary-ctc-aligner second-pass with broader language coverage and 80-ms resolution.

ggmlggufforced-alignmentspeech-to-textaudiotimestampsqwen3automatic-speech-recognitionzhenyuefrdeitjakoptruesbase_model:Qwen/Qwen3-ForcedAligner-0.6Bbase_model:quantized:Qwen/Qwen3-ForcedAligner-0.6Blicense:apache-2.0region:us
cstr/qwen3-forced-aligner-0.6b-gguf visual
Downloads
345
Likes
1
Pipeline
automatic-speech-recognition
Library
ggml
Visibility
Public
Access
Open

Repository Files & Downloads

4 files detected
Direct downloads for all repository files
FileTypeQuantizationSizeLink
qwen3-forced-aligner-0.6b-f16.gguf GGUF F16 1.72 GB Download
qwen3-forced-aligner-0.6b-q4_k.gguf GGUF Q4_K 504.49 MB Download
qwen3-forced-aligner-0.6b-q5_0.gguf GGUF 613.36 MB Download
qwen3-forced-aligner-0.6b-q8_0.gguf GGUF 939.94 MB Download

Model Details Live

Model Slug
cstr/qwen3-forced-aligner-0.6b-gguf
Author
cstr
Pipeline Task
automatic-speech-recognition
Library
ggml
Created
2026-04-11
Last Modified
2026-04-11
Gated
No
Private
No
HF SHA
84beb0c7affb90c55a0c3ee0649c725d291a89ff
License
apache-2.0
Language
zh, en, yue, fr, de, it, ja, ko, pt, ru, es
Base Model
Qwen/Qwen3-ForcedAligner-0.6B

Metadata Inspector

Normalized metadata (stored in metadata_json)
{
  "metadata": {},
  "card_data": {
    "license": "apache-2.0",
    "base_model": "Qwen/Qwen3-ForcedAligner-0.6B",
    "language": [
      "zh",
      "en",
      "yue",
      "fr",
      "de",
      "it",
      "ja",
      "ko",
      "pt",
      "ru",
      "es"
    ],
    "tags": [
      "forced-alignment",
      "speech-to-text",
      "audio",
      "timestamps",
      "gguf",
      "ggml",
      "qwen3"
    ],
    "pipeline_tag": "automatic-speech-recognition",
    "library_name": "ggml",
    "frontmatter": {
      "license": "apache-2.0",
      "base_model": "Qwen/Qwen3-ForcedAligner-0.6B",
      "language": [
        "zh",
        "en",
        "yue",
        "fr",
        "de",
        "it",
        "ja",
        "ko",
        "pt",
        "ru",
        "es"
      ],
      "tags": [
        "forced-alignment",
        "speech-to-text",
        "audio",
        "timestamps",
        "gguf",
        "ggml",
        "qwen3"
      ],
      "pipeline_tag": "automatic-speech-recognition",
      "library_name": "ggml"
    },
    "hero_image_url": "",
    "summary": "GGUF conversions of Qwen/Qwen3-ForcedAligner-0.6B — a single-pass forced aligner that takes any (audio, transcript) pair and predicts per-word/per-token timestamps. Reuses the Qwen3-ASR audio encoder + 28-layer LLM body but swaps the lm_head from (vocab, d) to (5000, d): each  placeholder you embed in the input gets a 5000-class softmax over class * 80 ms timestamps. Plug it into CrispASR via -am qwen3-forced-aligner-*.gguf to get word-level timing on **any** transcription backend — voxtral, voxtral4b, qwen3-asr, granite, parakeet, canary, cohere, even whisper. It's an alternative to the existing canary-ctc-aligner second-pass with broader language coverage and 80-ms resolution.",
    "quick_links": [],
    "benchmark_table_html": "",
    "readme_markdown": "---\nlicense: apache-2.0\nbase_model: Qwen/Qwen3-ForcedAligner-0.6B\nlanguage:\n  - zh\n  - en\n  - yue\n  - fr\n  - de\n  - it\n  - ja\n  - ko\n  - pt\n  - ru\n  - es\ntags:\n  - forced-alignment\n  - speech-to-text\n  - audio\n  - timestamps\n  - gguf\n  - ggml\n  - qwen3\npipeline_tag: automatic-speech-recognition\nlibrary_name: ggml\n---\n\n# Qwen3-ForcedAligner-0.6B — GGUF (CrispASR)\n\nGGUF conversions of [`Qwen/Qwen3-ForcedAligner-0.6B`](https://huggingface.co/Qwen/Qwen3-ForcedAligner-0.6B) — a single-pass forced aligner that takes any (audio, transcript) pair and predicts per-word/per-token timestamps. Reuses the Qwen3-ASR audio encoder + 28-layer LLM body but swaps the lm_head from `(vocab, d)` to `(5000, d)`: each `<timestamp>` placeholder you embed in the input gets a 5000-class softmax over `class * 80 ms` timestamps.\n\nPlug it into [CrispASR](https://github.com/CrispStrobe/CrispASR) via `-am qwen3-forced-aligner-*.gguf` to get word-level timing on **any** transcription backend — voxtral, voxtral4b, qwen3-asr, granite, parakeet, canary, cohere, even whisper. It's an alternative to the existing `canary-ctc-aligner` second-pass with broader language coverage and 80-ms resolution.\n\n## What's in the box\n\n| File | Size | Quantization | Notes |\n|---|---|---|---|\n| `qwen3-forced-aligner-0.6b-f16.gguf` | 1.84 GB | F16 | Reference precision; matches PyTorch bfloat16 within float-noise tolerance |\n| `qwen3-forced-aligner-0.6b-q8_0.gguf` | 0.99 GB | Q8_0 | Effectively lossless |\n| `qwen3-forced-aligner-0.6b-q5_0.gguf` | 0.64 GB | Q5_0 | Slightly slower than Q4_K but a bit more accurate on edge cases |\n| `qwen3-forced-aligner-0.6b-q4_k.gguf` | 0.53 GB | Q4_K | 3.5× compressed; smallest reasonable choice |\n\nAll four contain:\n\n* The full audio encoder (24 layers, d_model 1024, 16 heads, 4096 ff)\n* The Qwen3 0.6B LLM body (28 layers, d_model 1024, 16 heads / 8 KV heads, 3072 ff, 152K vocab, RoPE θ=1e6)\n* The 5000-class **forced-alignment** lm_head (instead of the 152K-class lm_head used by the regular ASR variants)\n* Full GPT-2-style BPE vocab + merges, mel filterbank, and Hann window\n\n## How it differs from the ASR models\n\nSame body, different head:\n\n| | Qwen3-ASR-0.6B / 1.7B | Qwen3-ForcedAligner-0.6B |\n|---|---|---|\n| Audio encoder | 24-layer, d_model 1024 | identical |\n| Text decoder | Qwen3 28-layer | identical body |\n| `lm_head` shape | `(vocab=152K, d)` | **`(5000, d)`** — timestamp classes |\n| Inference mode | Autoregressive (decode token by token) | **Single forward pass** over the whole input |\n| Use case | Audio → text | (Audio, text) → per-word timestamps |\n| Output | Generated tokens | argmax(lm_head)·80 ms at each `<timestamp>` placeholder |\n\nThe CrispASR C++ runtime auto-detects which variant a loaded GGUF is by reading the lm_head shape from `output.weight.ne[1]` — no separate backend, no separate library.\n\n## Use with CrispASR\n\n```bash\n# Build crispasr (one-time)\ngit clone https://github.com/CrispStrobe/CrispASR\ncd CrispASR\ncmake -B build -DCMAKE_BUILD_TYPE=Release\ncmake --build build -j$(nproc) --target whisper-cli\n\n# Word-level SRT from any transcription backend, using FA for timing.\n# `-am` (--aligner-model) auto-routes to the qwen3-fa path when the\n# filename contains \"forced-aligner\" (case-insensitive).\n\n# voxtral 3B + Qwen3-FA timing\n./build/bin/crispasr --backend voxtral \\\n    -m voxtral-mini-3b-2507-q8_0.gguf \\\n    -f my_audio.wav \\\n    -am qwen3-forced-aligner-0.6b-q4_k.gguf \\\n    -osrt -ml 1\n\n# parakeet + Qwen3-FA (parakeet has its own native word timestamps, but\n# you can override them with FA on the same audio)\n./build/bin/crispasr --backend parakeet \\\n    -m parakeet-tdt-0.6b-v3-q4_k.gguf \\\n    -f my_audio.wav \\\n    -am qwen3-forced-aligner-0.6b-q4_k.gguf \\\n    -osrt -ml 1\n\n# Granite, qwen3-asr, voxtral4b, cohere, canary all work the same way.\n```\n\nThe Python equivalent on the upstream side is `Qwen3ForcedAligner.align(audio, text, language)` from `qwen-asr`. Our C++ wrapper does the whole pipeline (mel → encoder → prompt build with `<timestamp>` placeholders → embed + audio splice → single FA forward → argmax at placeholder positions → ms conversion) in one call to `qwen3_asr_align_words(ctx, samples, n_samples, words[], n_words, out_start_ms, out_end_ms)`.\n\n## Languages\n\nSame as upstream Qwen3-ForcedAligner: Chinese, English, Cantonese, French, German, Italian, Japanese, Korean, Portuguese, Russian, Spanish (11 languages).\n\nThe current C++ wrapper uses **whitespace pre-tokenization** for splitting the transcript into words. This works well for English and the other Latin/Cyrillic-script languages but is sub-optimal for Chinese / Japanese where the upstream Python uses character-level / morphological tokenizers (`tokenize_japanese`, `tokenize_korean` via soynlp). Adding char-level tokenization for CJK languages is a follow-up tracked in the CrispASR repo.\n\n## How it was made\n\n```bash\n# 1. Download the base model from HF\nhf download Qwen/Qwen3-ForcedAligner-0.6B --local-dir ./Qwen3-ForcedAligner-0.6B\n\n# 2. Convert to F16 GGUF (the qwen3-asr converter handles both ASR and\n#    ForcedAligner variants — sizes are read from config.json so the\n#    same script handles both checkpoints)\npython models/convert-qwen3-asr-to-gguf.py \\\n    --input ./Qwen3-ForcedAligner-0.6B \\\n    --output qwen3-forced-aligner-0.6b-f16.gguf\n\n# 3. Quantize\n./build/bin/crispasr-quantize qwen3-forced-aligner-0.6b-f16.gguf qwen3-forced-aligner-0.6b-q8_0.gguf q8_0\n./build/bin/crispasr-quantize qwen3-forced-aligner-0.6b-f16.gguf qwen3-forced-aligner-0.6b-q5_0.gguf q5_0\n./build/bin/crispasr-quantize qwen3-forced-aligner-0.6b-f16.gguf qwen3-forced-aligner-0.6b-q4_k.gguf q4_k\n```\n\nThe C++ side needed two small additions to support FA models alongside ASR models in the existing qwen3 backend:\n\n1. **Flexible lm_head shape.** `qwen3_asr_load_model` now reads the actual `output.weight.ne[1]` instead of asserting it equals `llm.vocab_size`. For ASR models the two are equal (152K); for FA models the head is 5000 wide.\n\n2. **Single-pass aligner forward.** A new `qwen3_asr_run_aligner()` extern \"C\" entry point runs `build_graph_llm_kv(..., last_token_only=false)` so the lm_head sees every token position, not just the last. The result is a `(5000, T)` logit matrix; `qwen3_asr_align_words()` reads argmax at the positions where `input_id == 151705` (`<timestamp>` placeholder) and converts to ms via `class * 80`.\n\n## Verification\n\nEnd-to-end on samples/jfk.wav with voxtral as the transcription backend:\n\n```bash\ncrispasr --backend voxtral -m voxtral-mini-3b-2507-q8_0.gguf \\\n    -f samples/jfk.wav \\\n    -am qwen3-forced-aligner-0.6b-q4_k.gguf -ml 1\n```\n\n```\n[00:00:00.320 --> 00:00:00.560]  And\n[00:00:00.960 --> 00:00:00.960]  so,\n[00:00:00.960 --> 00:00:01.280]  my\n[00:00:01.360 --> 00:00:01.680]  fellow\n[00:00:02.080 --> 00:00:02.160]  Americans,\n... (10 s total, 21 words)\n```\n\nSame audio with all four quants produces near-identical timing — the worst spread between F16 and Q4_K on this clip is 80 ms (one alignment-class step).\n\n## License\n\nApache-2.0, same as upstream Qwen3-ForcedAligner-0.6B.\n\n## Citation\n\n```bibtex\n@misc{qwen3asr,\n    title  = {Qwen3-ASR},\n    author = {Qwen Team},\n    year   = {2026},\n    url    = {https://huggingface.co/Qwen/Qwen3-ForcedAligner-0.6B}\n}\n```\n",
    "related_quantizations": []
  },
  "tags": [
    "ggml",
    "gguf",
    "forced-alignment",
    "speech-to-text",
    "audio",
    "timestamps",
    "qwen3",
    "automatic-speech-recognition",
    "zh",
    "en",
    "yue",
    "fr",
    "de",
    "it",
    "ja",
    "ko",
    "pt",
    "ru",
    "es",
    "base_model:Qwen/Qwen3-ForcedAligner-0.6B",
    "base_model:quantized:Qwen/Qwen3-ForcedAligner-0.6B",
    "license:apache-2.0",
    "region:us"
  ],
  "likes": 1,
  "downloads": 345,
  "gated": false,
  "private": false,
  "last_modified": "2026-04-11T18:06:21.000Z",
  "created_at": "2026-04-11T18:05:33.000Z",
  "pipeline_tag": "automatic-speech-recognition",
  "library_name": "ggml"
}
Source payload excerpt (from Hugging Face API)
{
  "_id": "69da8d6de48aad1702de67c0",
  "id": "cstr/qwen3-forced-aligner-0.6b-GGUF",
  "modelId": "cstr/qwen3-forced-aligner-0.6b-GGUF",
  "sha": "84beb0c7affb90c55a0c3ee0649c725d291a89ff",
  "createdAt": "2026-04-11T18:05:33.000Z",
  "lastModified": "2026-04-11T18:06:21.000Z",
  "author": "cstr",
  "downloads": 345,
  "likes": 1,
  "gated": false,
  "private": false,
  "pipeline_tag": "automatic-speech-recognition",
  "library_name": "ggml",
  "siblings_count": 6
}