alt.freeweights.qwen / Qwen3-ForcedAligner-0.6B-hf
From: Qwen <huggingface.co/Qwen>Newsgroups: alt.freeweights.qwenSubject:

Qwen3-ForcedAligner-0.6B-hf

Date: 2026-11-15Commit: c07281dSigned: 2DC28CC7B26A283B ✓

Token classification model with 918M parameters. Safetensors weights, 1.85 GB in all. Published by Qwen under Apache-2.0.

918M params1.85GBQwen3-ForcedAligner-0.6B-hfsafetensorspermissive
FactsParams918MSize1.85 GBFormatssafetensorsTasktoken classificationLicenseApache-2.0From sourcepermissive
$ fw get Qwen/Qwen3-ForcedAligner-0.6B-hf
# manifest sha256 aa11097f2d55… · 1.85 GB · 8 files
$ fw verify ./Qwen3-ForcedAligner-0.6B-hf Qwen/Qwen3-ForcedAligner-0.6B-hf
From sourceHosted (signed)Qwen/Qwen3-ForcedAligner-0.6B-hfLast check: 2026-11-15 02:32 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Works with

Runs with

Ranked by fit to this model (safetensors), then by GitHub stars.

Overview

Size
1.85 GB
Weights
1.84 GB (safetensors)
Parameters
918M
Formats
safetensors
Task
token classification
License
Apache-2.0 (permissive)
Files
8, each with a sha256
Publisher
Qwen
Added
2026-11-15
Section
alt.freeweights.qwen
Lineage

Original release from the publisher.

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 02:32 UTCpassed

Model card

From the publisher at commit c07281d. Shown as plain text with links; images open at the publisher.

Qwen3-ForcedAligner (Transformers native)#

Overview#

Image: image

The Qwen3-ASR family includes Qwen3-ASR-1.7B and Qwen3-ASR-0.6B, which support language identification and ASR for 52 languages and dialects. Both leverage large-scale speech training data and the strong audio understanding capability of their foundation model, Qwen3-Omni. The 1.7B version achieves state-of-the-art performance among open-source ASR models and is competitive with the strongest proprietary commercial APIs.

Key features:

  • All-in-one: Supports language identification and speech recognition for 30 languages and 22 Chinese dialects, including English accents from multiple countries and regions.
  • Excellent and Fast: High-quality and robust recognition under complex acoustic environments. Qwen3-ASR-0.6B reaches 2000× throughput at a concurrency of 128. Both models support streaming/offline unified inference with a single model and handle long audio.
  • Forced Alignment: Qwen3-ForcedAligner-0.6B supports timestamp prediction for arbitrary units within up to 5 minutes of speech in 11 languages, surpassing E2E-based forced-alignment models in accuracy.
Model Architecture#

Image: image

Available Checkpoints#
ModelSupported LanguagesSupported DialectsInference ModeAudio Types
Qwen/Qwen3-ASR-1.7B-hf & Qwen/Qwen3-ASR-0.6B-hfChinese (zh), English (en), Cantonese (yue), Arabic (ar), German (de), French (fr), Spanish (es), Portuguese (pt), Indonesian (id), Italian (it), Korean (ko), Russian (ru), Thai (th), Vietnamese (vi), Japanese (ja), Turkish (tr), Hindi (hi), Malay (ms), Dutch (nl), Swedish (sv), Danish (da), Finnish (fi), Polish (pl), Czech (cs), Filipino (fil), Persian (fa), Greek (el), Hungarian (hu), Macedonian (mk), Romanian (ro)Anhui, Dongbei, Fujian, Gansu, Guizhou, Hebei, Henan, Hubei, Hunan, Jiangxi, Ningxia, Shandong, Shaanxi, Shanxi, Sichuan, Tianjin, Yunnan, Zhejiang, Cantonese (HK), Cantonese (Guangdong), Wu, MinnanOffline / StreamingSpeech, Singing Voice, Songs with BGM
Qwen/Qwen3-ForcedAligner-0.6B-hfChinese, English, Cantonese, French, German, Italian, Japanese, Korean, Portuguese, Russian, Spanish—NARSpeech

Setup#

Until Qwen3-ForcedAligner is part of an official Transformers release, install from source:

pip install git+https://github.com/huggingface/transformers

Usage#

With Qwen3-ASR#

Transcribe with the ASR model, then pass the transcript and audio to the forced aligner.

import torch
from transformers import AutoProcessor, AutoModelForMultimodalLM, AutoModelForTokenClassification

asr_model_id = "Qwen/Qwen3-ASR-0.6B-hf"
aligner_model_id = "Qwen/Qwen3-ForcedAligner-0.6B-hf"

asr_processor = AutoProcessor.from_pretrained(asr_model_id)
asr_model = AutoModelForMultimodalLM.from_pretrained(asr_model_id, device_map="auto")

aligner_processor = AutoProcessor.from_pretrained(aligner_model_id)
aligner_model = AutoModelForTokenClassification.from_pretrained(
    aligner_model_id, dtype=torch.bfloat16, device_map="auto"
)

audio_url = "https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav"

# Step 1: Transcribe
inputs = asr_processor.apply_transcription_request(audio=audio_url)
inputs = inputs.to(asr_model.device, asr_model.dtype)
output_ids = asr_model.generate(**inputs, max_new_tokens=256)
generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]
parsed = asr_processor.decode(generated_ids, return_format="parsed")[0]
transcript = parsed["transcription"]
language = parsed["language"] or "English"

# Step 2: Prepare alignment inputs
aligner_inputs, word_lists = aligner_processor.prepare_forced_aligner_inputs(
    audio=audio_url, transcript=transcript, language=language,
)
aligner_inputs = aligner_inputs.to(aligner_model.device, aligner_model.dtype)

# Step 3: Run forced aligner
with torch.inference_mode():
    outputs = aligner_model(**aligner_inputs)

# Step 4: Decode timestamps
timestamps = aligner_processor.decode_forced_alignment(
    logits=outputs.logits,
    input_ids=aligner_inputs["input_ids"],
    word_lists=word_lists,
    timestamp_token_id=aligner_model.config.timestamp_token_id,
)[0]

for item in timestamps:
    print(f"{item['text']:<20} {item['start_time']:>8.3f}s → {item['end_time']:>8.3f}s")

"""
Word                  Start (s)    End (s)
------------------------------------------
Mr                        0.560      0.800
Quilter                   0.800      1.280
is                        1.280      1.440
the                       1.440      1.520
apostle                   1.520      2.080
...
"""
With another ASR model#

The forced aligner accepts transcripts from any ASR system. Below is a batch inference example using NVIDIA Parakeet CTC for transcription.

import torch
from datasets import Audio, load_dataset
from transformers import AutoModelForCTC, AutoProcessor, AutoModelForTokenClassification

parakeet_processor = AutoProcessor.from_pretrained("nvidia/parakeet-ctc-1.1b")
parakeet_model = AutoModelForCTC.from_pretrained(
    "nvidia/parakeet-ctc-1.1b", dtype="auto", device_map="cuda",
)

aligner_model_id = "Qwen/Qwen3-ForcedAligner-0.6B-hf"
aligner_processor = AutoProcessor.from_pretrained(aligner_model_id)
aligner_model = AutoModelForTokenClassification.from_pretrained(
    aligner_model_id, dtype=torch.bfloat16, device_map="cuda",
)

ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
ds = ds.cast_column("audio", Audio(sampling_rate=parakeet_processor.feature_extractor.sampling_rate))
audio_arrays = [ds[i]["audio"]["array"] for i in range(3)]
sr = ds[0]["audio"]["sampling_rate"]

# Batch transcribe with Parakeet
inputs = parakeet_processor(audio_arrays, sampling_rate=sr, return_tensors="pt", padding=True).to(
    parakeet_model.device, dtype=parakeet_model.dtype
)
with torch.inference_mode():
    outputs = parakeet_model.generate(**inputs)
transcripts = parakeet_processor.decode(outputs)

# Batch align with Qwen3 Forced Aligner
aligner_inputs, word_lists = aligner_processor.prepare_forced_aligner_inputs(
    audio=audio_arrays, transcript=transcripts, language="English",
)
aligner_inputs = aligner_inputs.to(aligner_model.device, aligner_model.dtype)

with torch.inference_mode():
    aligner_outputs = aligner_model(**aligner_inputs)

batch_timestamps = aligner_processor.decode_forced_alignment(
    logits=aligner_outputs.logits,
    input_ids=aligner_inputs["input_ids"],
    word_lists=word_lists,
    timestamp_token_id=aligner_model.config.timestamp_token_id,
)

for i, (transcript, timestamps) in enumerate(zip(transcripts, batch_timestamps)):
    print(f"\n[Sample {i}] {transcript}")
    for item in timestamps[:5]:
        print(f"  {item['text']:<20} {item['start_time']:>8.3f}s → {item['end_time']:>8.3f}s")
    if len(timestamps) > 5:
        print(f"  ... ({len(timestamps) - 5} more words)")

Speed & Memory Improvements#

Torch compile#

The forced aligner is an especially good fit for torch.compile because it runs a single forward pass with no autoregressive decoding. This makes it ideal for bulk audio timestamping: transcribe with any ASR model, then batch-align with the compiled forced aligner for maximum throughput.

On an A100, we observed a speed-up of ~2.5× for a batch size of 4 (benchmark script).

import torch
from transformers import AutoProcessor, AutoModelForTokenClassification

model_id = "Qwen/Qwen3-ForcedAligner-0.6B-hf"
num_warmup = 5
batch_size = 4

processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForTokenClassification.from_pretrained(model_id, dtype=torch.bfloat16).to("cuda")

audio_url = "https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav"
transcript = "Mr. Quilter is the apostle of the middle classes."

aligner_inputs, word_lists = processor.prepare_forced_aligner_inputs(
    audio=[audio_url] * batch_size,
    transcript=[transcript] * batch_size,
    language=["English"] * batch_size,
)
aligner_inputs = aligner_inputs.to("cuda", torch.bfloat16)

model.forward = torch.compile(model.forward)

# Warmup
with torch.no_grad():
    for _ in range(num_warmup):
        _ = model(**aligner_inputs)

# Inference
with torch.no_grad():
    outputs = model(**aligner_inputs)

Citation#

@article{Qwen3-ASR,
  title={Qwen3-ASR Technical Report},
  author={Xian Shi, Xiong Wang, Zhifang Guo, Yongqi Wang, Pei Zhang, Xinyu Zhang, Zishan Guo,
          Hongkun Hao, Yu Xi, Baosong Yang, Jin Xu, Jingren Zhou, Junyang Lin},
  journal={arXiv preprint arXiv:2601.21337},
  year={2026}
}

Files

8 files · 1.85 GBWeights 1.84 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 8 files with their sha256
FileSizesha256
.gitattributes1.57 KB34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930
README.md9.42 KB30de8315ece609b239c719539336b99188a2a92aef89a1fdcd60b11e40abd063
chat_template.jinja551 B59b5ae119bda7c00089bba5f49af775791ea67c7aeb7d2b828cddda9463121bf
config.json248 KB82ac390b36a8f80c5a0c4e202367debd149e5d8c30abe4cf5eed439101b1c5ce
model.safetensors1.84 GB00568245ceca5af1991d28562a75fe1ddc9bfeb041c27fda66947ea05c47fb86
processor_config.json487 Bbc0b230081b44e629dd5b9045b78495615c1831b4b9f4cffe97bd37e82a6156a
tokenizer.json11.4 MBcadfb9cbd9ff8f4e309075ec6a71b063295ff796afb4b5dbc0fd2873fbb301f2
tokenizer_config.json998 B945e980986de2ca7768f3326bfdbb4fbea3406f972b8ae0be233089f2b253c11
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
c07281df29 pinned now2026-11-15 02:32 UTC8 files · 1.85 GB

Use it

$ fw get Qwen/Qwen3-ForcedAligner-0.6B-hf
# manifest sha256 aa11097f2d55… · 1.85 GB · 8 files
$ fw verify ./Qwen3-ForcedAligner-0.6B-hf Qwen/Qwen3-ForcedAligner-0.6B-hf
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/Qwen/Qwen3-ForcedAligner-0.6B-hf.json --dir ./Qwen3-ForcedAligner-0.6B-hf $ python3 fw.py verify ./Qwen3-ForcedAligner-0.6B-hf ./Qwen__Qwen3-ForcedAligner-0.6B-hf.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download Qwen/Qwen3-ForcedAligner-0.6B-hf --revision c07281df297b9905d24a508279258cccf987a064 --local-dir ./Qwen3-ForcedAligner-0.6B-hf

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
30de8315ece609b239c719539336b99188a2a92aef89a1fdcd60b11e40abd063
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: Qwen <huggingface.co/Qwen>Newsgroups: alt.freeweights.qwenSubject: Qwen3-ForcedAligner-0.6B-hfDate: 2026-11-15Commit: c07281dSigned: 2DC28CC7B26A283B ✓
Upstream
Qwen/Qwen3-ForcedAligner-0.6B-hf
Pinned commit
c07281df297b9905d24a508279258cccf987a064
Manifest
Qwen3-ForcedAligner-0.6B-hf.json · .minisig
Manifest sha256
aa11097f2d551376b468d0552822b66ec30af8da201f21d47e12e4991ff31e13
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 02:32 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/Qwen/Qwen3-ForcedAligner-0.6B-hf.json $ curl -O https://freeweights.allternit.com/manifests/Qwen/Qwen3-ForcedAligner-0.6B-hf.json.minisig $ minisign -Vm Qwen3-ForcedAligner-0.6B-hf.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

No related models in this catalog.Nothing here lists this model as its parent, and it names no parent.
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download Qwen/Qwen3-ForcedAligner-0.6B-hf
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. Qwen3-ForcedAligner-0.6B-hf.json. Provenance. Takedown history: none.
From: BAAI <huggingface.co/BAAI>Subject: Aquila-VL-2B-llava-qwen
From: Perciqa <huggingface.co/Perciqa>Subject: Aurora-Code-1
From: BAAI <huggingface.co/BAAI>Subject: bge-reasoner-embed-qwen3-8b-0923
From: amazon <huggingface.co/amazon>Subject: BMOJOF-primed-HQwen3-8B-Instruct
From: nbeerbower <huggingface.co/nbeerbower>Subject: Bubba-Qwen3.6-27B-LoRA
From: bartowski <huggingface.co/bartowski>Subject: bytkim_Qwen3.8-27B-pi-GGUF