Downloads · 30 days
51
10% of all-time downloads
yuriyvnv/Qwen3-ASR-0.6B-PT
Qwen3-ASR-0.6B-PT is a automatic speech recognition model from yuriyvnv. Use it when you need speech turned into text. It is set up for transformers. The card lists the license as apache-2.0.
<div align="center" <img src="https://img.shields.io/badge/Parameters-0.6B-red" alt="0.6B Parameters" <img src="https://img.shields.io/badge/Modality-Speech%20%E2%86%92%20Text-purple" alt="Speech to Text" <img src="ht…
Downloads · 30 days
51
10% of all-time downloads
All-time downloads
493
Public
Parameters
782M
3.1 GB on disk
Likes
2
Public
Click a slice to open those files.
.safetensors1.6 GB · 99%
From the Hugging Face model README
A Portuguese-specialised automatic speech recognition (ASR) model, fine-tuned from Qwen/Qwen3-ASR-0.6B. It outputs cased, punctuated Portuguese text and works as a drop-in replacement for the base model.
Update. v2 release. The v1 run (synthetic_pt_high_quality, 6 epochs) converged at epoch ~1.9 of 6 with -33%/-32% relative WER vs zero-shot on CV17/CV22-pt test. For this final release we fold CV22-pt train + validation together with the WAVe-filtered synthetic_transcript_pt corpus into one training set to maximise the data the model sees, train for just 3 epochs (the point at which v1 had converged), and validate only on the held-out CV17-pt and CV22-pt test sets. The goal is the strongest possible 0.6B Portuguese model for production use, not another methodological ablation.
On Common Voice 17 (test) it reaches 11.37% WER (down from 17.91% zero-shot, -36.5% relative).
WER and CER on held-out Common Voice test sets — same samples, same protocol,
no test-time tricks. "Zero-shot" is the base
Qwen/Qwen3-ASR-0.6B called with
language="Portuguese". The fine-tuned numbers are bold.
| Test set | Samples | Zero-shot WER | Fine-tuned WER | Δ WER | CER (zero-shot → fine-tuned) |
|---|---|---|---|---|---|
| Common Voice 17 (test) | 9,467 | 17.91 | 11.37 | -6.54 (-36.5%) | 5.43 → 3.66 |
| Common Voice 22 (test) | 9,641 | 18.26 | 11.85 | -6.41 (-35.1%) | 5.53 → 3.83 |
Lower is better. Both held-out test sets see roughly a one-third relative reduction in word error rate versus the already-strong base model.
🔬 Reproducibility note. Both the zero-shot baseline and the fine-tuned numbers above were measured with the same evaluation function (
train_qwen3_asr.evaluate_model), the same greedy decoding settings, and the same reference normalisation (see next section). This is an apples-to-apples comparison.
Common Voice transcripts are crowd-sourced and inconsistent in casing and trailing punctuation. To give the model a clean, predictable target distribution we apply a small, deterministic written-form normalisation to every reference at load time, both during training and during evaluation:
., …, .., ... at the
end is replaced with a single ... ! ? …) or a closing bracket / quote
() ] } " ' etc.).The exact function lives in src/evaluation/score_written_form.py of the
project repository. Concretely:
| Raw reference | Normalised |
|---|---|
bom dia | Bom dia. |
o gato dorme... | O gato dorme. |
como estás? | Como estás? (unchanged) |
"oi" | "Oi" (closing quote → no .) |
Because the same normalisation is applied to references used for the zero-shot baseline above, the gain reported in the results table reflects the fine-tune itself — not a metric quirk caused by mismatched references.
Install the official qwen-asr package, then load this model exactly the
same way you would load the base Qwen3-ASR:
pip install qwen-asr
import torch
from qwen_asr import Qwen3ASRModel
model = Qwen3ASRModel.from_pretrained(
"yuriyvnv/Qwen3-ASR-0.6B-PT",
dtype=torch.bfloat16,
device_map="cuda:0",
)
result = model.transcribe(audio="audio.wav", language="Portuguese")
print(result[0].text)
Batch inference, automatic language detection, streaming, and vLLM serving all work identically to the base model — see the upstream Qwen3-ASR documentation for details.
Dataset: yuriyvnv/synthetic_transcript_pt + fsicoli/common_voice_22_0 (pt) — Common Voice 22 Portuguese train + validation combined with synthetic_transcript_pt (cv_high_quality, WAVe-filtered CV17-Portuguese), shuffled with the run seed. After duration filtering and transcript-length filtering: 61,579 training samples and 9,641 validation samples.
Recipe: follows the official QwenLM SFT recipe with our local hyperparameters:
| Parameter | Value |
|---|---|
| Learning rate | 2e-05 |
| Scheduler | linear |
| Warmup ratio | 0.02 |
| Per-device batch size | 92 |
| Gradient accumulation | 2 |
| Effective batch size | 184 |
| Epochs | 3.0 |
| Precision | bf16 mixed |
| Gradient checkpointing | enabled |
| Optimizer | AdamW (fused) |
Trained on a single H100. The best checkpoint was selected by validation loss.
This model would not exist without the work of others. Thank you to:
If this model is useful in your work, please cite the base Qwen3-ASR report:
@article{qwen3asr2025,
title = {Qwen3-ASR Technical Report},
author = {Qwen Team},
year = {2025},
url = {https://arxiv.org/abs/2601.21337}
}
And, if relevant, this Portuguese fine-tune:
yuriyvnv/Qwen3-ASR-0.6B-PT — Portuguese fine-tune of Qwen3-ASR-0.6B
trained on Common-Voice-derived data with WAVe-based
quality filtering.