Automatic Speech Recognition
Transformers
Safetensors
Chinese
English
qwen3_asr
taiwan-mandarin
traditional-chinese
code-switching
qwen3-asr
speech
Instructions to use JacobLinCool/TEA-ASR-1.1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use JacobLinCool/TEA-ASR-1.1 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("automatic-speech-recognition", model="JacobLinCool/TEA-ASR-1.1")# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("JacobLinCool/TEA-ASR-1.1") model = AutoModelForMultimodalLM.from_pretrained("JacobLinCool/TEA-ASR-1.1", device_map="auto") - Notebooks
- Google Colab
- Kaggle
File size: 8,987 Bytes
b8188d1 bda08df b8188d1 344a623 b8188d1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 | ---
base_model: Qwen/Qwen3-ASR-1.7B
license: mit
library_name: transformers
pipeline_tag: automatic-speech-recognition
language:
- zh
- en
tags:
- automatic-speech-recognition
- taiwan-mandarin
- traditional-chinese
- code-switching
- qwen3-asr
- speech
---
# TEA-ASR-1.1 · Taiwan Everyday Audio 🍵
**TEA-ASR is an open, drop-in speech-recognition model purpose-built for Taiwan Mandarin.** It turns real speech
into natural **Traditional Chinese** with authentic **Taiwan vocabulary**, and it stays robust through the everyday
**Mandarin–English code-switching** common in Taiwan. Adapted from the state-of-the-art **Qwen3-ASR** foundation and
merged into a single self-contained checkpoint, TEA-ASR **loads and runs exactly like stock Qwen3-ASR** — no
converters, no post-processing — while matching or surpassing both a dedicated Taiwan specialist and a large
multilingual model on every public benchmark we evaluate.
`TEA-ASR-1.1` is the **2B second-generation flagship (best accuracy)** and **improves on TEA-ASR-1 across every
benchmark**. A companion **TEA-ASR-1.1-mini** shares the recipe at 780M — see
[`JacobLinCool/TEA-ASR-1.1-mini`](https://huggingface.co/JacobLinCool/TEA-ASR-1.1-mini).
> **Need a controllable numeral style?** The
> [`TEA-ASR-1.1-fmt`](https://huggingface.co/JacobLinCool/TEA-ASR-1.1-fmt) variant adds a verified
> numeral-convention dial (`digits` 108年 / `zh-num` 一百零八年) for formatting-sensitive,
> Mandarin-dominant use, trading a small measured amount of dense-code-switch robustness. This
> flagship stays the best pick for recognition quality and heavy code-switching.
## What's new in 1.1
- 🔀 **Code-switch leap** — ASCEND 10.59 → **9.60**, CSZS 10.98 → **10.94**; the English side of code-switch
(ASCEND-en) improves most.
- 🎯 **Better on everything** — CommonVoice, NTUML2021 lectures, and both code-switch sets all move down versus
TEA-ASR-1, on the same protocol.
- 🪶 Still a **single drop-in checkpoint**, `< 10 hours` of public training audio, no runtime post-processing.
## Key features
- 🎯 **Built for Taiwan Mandarin** — Traditional script **and** Taiwan-style word choice, produced by the model
itself.
- 🔀 **Code-switch robust** — handles natural zh-en mixing instead of translating Mandarin into English.
- 🧩 **Drop-in Qwen3-ASR compatible** — same loading and inference API as the base model; nothing else to install
or call.
- 🪶 **Lightweight adaptation** — a small decoder LoRA on a frozen audio encoder, trained on a few hours of public
audio, then merged for deployment.
## Quick start
```bash
pip install qwen-asr
```
```python
from qwen_asr import Qwen3ASRModel
model = Qwen3ASRModel.from_pretrained("JacobLinCool/TEA-ASR-1.1")
result = model.transcribe(audio="utterance.wav", language="Chinese")[0]
print(result.text) # -> Traditional Chinese with Taiwan lexicon
```
Set `language="Chinese"` for Taiwan speech (recommended). You can also pass a `context=` string of hotwords
(names, jargon) for contextual biasing, exactly as with the base Qwen3-ASR.
## Benchmark results
Mixed Error Rate (MER%, **lower is better**), all numbers from a **single self-measured run under one protocol**
(see [Evaluation](#evaluation)). Columns: the two TEA-ASR-1.1 models, the original (unadapted) **Qwen3-ASR** bases,
and two references — **Breeze-ASR-25** (a Taiwan-specialist ASR) and **Whisper-large-v3**. **Bold = this model.**
| Benchmark | TEA-ASR-1.1 | TEA-ASR-1.1-mini | Qwen3-ASR-1.7B | Qwen3-ASR-0.6B | Breeze-ASR-25 | Whisper-large-v3 |
|---|---|---|---|---|---|---|
| CommonVoice 19 (zh-TW) | **3.58** | 5.12 | 3.90 | 5.79 | 8.03 | 10.17 |
| ASCEND (zh-en) | **9.60** | 11.20 | 10.57 | 12.54 | 17.53 | 19.61 |
| CSZS (zh-en) | **10.94** | 12.51 | 11.03 | 16.03 | 12.18 | 23.24 |
| NTUML2021 | **6.67** | 7.53 | 10.12 | 11.03 | 7.50 | 9.68 |
**Generational improvement — TEA-ASR-1.1 vs TEA-ASR-1** (2B flagship, same protocol, lower is better):
| Benchmark | TEA-ASR-1.1 | TEA-ASR-1 | Δ |
|---|---|---|---|
| CommonVoice 19 (zh-TW) | **3.58** | 3.64 | −0.06 |
| ASCEND (zh-en) | **9.60** | 10.59 | −0.99 |
| CSZS (zh-en) | **10.94** | 10.98 | −0.04 |
| NTUML2021 | **6.67** | 6.80 | −0.13 |
**How to read this.** **TEA-ASR-1.1** is the flagship model on this page and posts the best error rate on every
benchmark in the suite — ahead of the Taiwan-specialist Breeze-ASR-25, far ahead of Whisper-large-v3, and below its
own predecessor TEA-ASR-1 on all four sets. **TEA-ASR-1.1-mini** delivers most of that quality at well under half
the parameters (780M vs 2B). The metric **folds away script differences** (see Evaluation), so it does *not* reflect
the decisive practical change: TEA-ASR emits **Traditional script and Taiwan vocabulary natively**, whereas the base
produces Simplified script.
## Evaluation
- **Metric — Mixed Error Rate (MER).** Character Error Rate for Chinese and Word Error Rate for the English tokens,
computed jointly per utterance and micro-averaged.
- **Content fold (applied uniformly to every dataset and every system).** Before scoring, both the reference and
the hypothesis are normalized to a common form — **converted to Simplified Chinese with OpenCC (`t2s`)**,
lowercased, and stripped of punctuation. This isolates *recognition* from *script style*, so a Simplified-output
model and a Traditional-output model (TEA-ASR) are compared fairly on content. (TEA-ASR's actual output is
Traditional; the fold is only for scoring.)
- **Decoding.** TEA-ASR and Qwen3-ASR are decoded with `language=Chinese`; Whisper-large-v3 and Breeze-ASR-25 use
their own automatic language detection. All systems are scored with the **same code on the same public splits**;
we do not import numbers reported elsewhere.
| Dataset | What it tests | Eval split (n) |
|---|---|---|
| **CommonVoice 19 (zh-TW)** | Read Taiwan-Mandarin speech | full test (5013) |
| **ASCEND** | Spontaneous Mandarin–English code-switch conversation | full test (1315) |
| **CSZS (zh-en)** | Zero-resource code-switch benchmark | full test (3176) |
| **NTUML2021** | Mandarin lecture speech (university ML course) | test[:2000] |
- **No train/test leakage.** Fine-tuning used **only** the *training* pools, disjoint from every evaluation split:
the NTUML2021 *train* split, the ASCEND *train* split, and a CommonVoice slice drawn from
`validated_without_test` (CommonVoice's official non-test pool, disjoint from its *test* split). Evaluation
therefore runs on the **full, untouched** CommonVoice / ASCEND / NTUML2021 *test* splits; CSZS is a separate
dataset not used in training at all. Every number above is leak-free.
## How it was built
- **Base** `Qwen/Qwen3-ASR-1.7B` (AuT audio encoder + Qwen3 decoder).
- **Adaptation**: a rank-16 **decoder LoRA** (plus a low-LR encoder LoRA) trained on **under 10 hours of public
audio** (CommonVoice zh-TW, ASCEND, NTUML2021, and [TaiMECS](https://huggingface.co/datasets/JacobLinCool/TaiMECS)),
with general + code-switch **replay** to preserve the base model's broad and bilingual ability. The 1.1 recipe
adds error-analysis-driven targeted supplements and English-preservation training so dense code-switch is
*transcribed*, not translated.
- **Localization**: Traditional-script + Taiwan-lexicon output is rendered through the model's **own tokenizer**
(the surface mapping is baked once at build time); there is **no post-processing at inference** — the Traditional
output comes straight from the model's own tokenizer decode.
- **Packaging**: the adapter is **merged** into the base and the localized tokenizer is shipped with it, so the
release is a single drop-in checkpoint that loads like stock Qwen3-ASR (decode verified bit-exact on 152k+
sequences).
- **Decoding tip**: pass `language="Chinese"` for Taiwan speech; this also prevents translation-style outputs on
dense code-switch.
## Limitations
- **Scope**: validated on the Qwen3-ASR family (0.6B and 1.7B); the released models load via the `qwen-asr` package,
exactly like the base.
- **Compact model trade-off**: the 780M TEA-ASR-1.1-mini trails the 2B flagship on the hardest code-switch sets; for
heavy Mandarin–English mixing prefer TEA-ASR-1.1.
## Acknowledgements
- Base model: [Qwen3-ASR](https://huggingface.co/Qwen/Qwen3-ASR-1.7B) by Alibaba Cloud (Apache-2.0; underlying
weights remain subject to the Apache-2.0 license and its attribution/NOTICE terms).
- [TaiMECS](https://huggingface.co/datasets/JacobLinCool/TaiMECS) (CC-BY-4.0).
- Benchmarks: Common Voice (Mozilla), ASCEND (CAiRE), CSZS, NTU ML2021.
## Citation
```bibtex
@misc{teaasr2026,
title = {Tokenizer-First Adaptation of Mandarin ASR to Taiwan Mandarin},
author = {TEA-ASR contributors},
year = {2026},
note = {TEA-ASR (Taiwan Everyday Audio); adapted from Qwen3-ASR}
}
```
The TEA-ASR adaptation and this checkpoint are released under the **MIT License**.
|