The tag rides the same decoder-prefix channel as the language hint:
from qwen_asr import Qwen3ASRModel
m = Qwen3ASRModel.from_pretrained("JacobLinCool/TEA-ASR-1.1-fmt")
m.transcribe(audio="utt.wav", language="Chinese")
(The public transcribe(language=...) API validates the language string, so pass the full prefix
through the forced-prefix path — see the demo Space
source for a 20-line reference implementation.)
Measured control strength (multi-digit test panels, deterministic first-30 selection;
scripts/probe_numeral_flip.py):
Table with columns: Panel (audio), pair flip (both directions honored), digits compliance, zh-num compliance| Panel (audio) | pair flip (both directions honored) | digits compliance | zh-num compliance |
|---|
| CommonVoice zh-TW (Chinese-numeral speech) | 0.63 | 0.67 | 0.93 |
| NTUML2021 (digit-convention lectures) | 0.53 | 0.60 | 0.80 |
(Measured on this released checkpoint.)
The dial is a strong bias, not a hard switch: expect it to flip most multi-digit renderings and
to leave single digits (是1 / 是一) and decimals/percentages to the domain's natural convention.
keep-en biases embedded English toward verbatim output; plain decoding already preserves English
well, so its per-utterance effect is modest.
Benchmark results
Mixed Error Rate (MER%, lower is better), same protocol as the TEA-ASR-1.1 card (content fold:
OpenCC t2s + lowercase + punctuation strip; full test splits; single self-measured run).
Table with columns: Benchmark, TEA-ASR-1.1-fmt, TEA-ASR-1.1, Qwen3-ASR-1.7B, Breeze-ASR-25, Whisper-large-v3| Benchmark | TEA-ASR-1.1-fmt | TEA-ASR-1.1 | Qwen3-ASR-1.7B | Breeze-ASR-25 | Whisper-large-v3 |
|---|
| CommonVoice 19 (zh-TW) | 3.96 | 3.58 | 3.90 | 8.03 | 10.17 |
| ASCEND (zh-en) | 9.63 | 9.60 | 10.57 | 17.53 | 19.61 |
| CSZS (zh-en) | 11.29 |
How to read this. The fmt variant matches the flagship on lectures (best-in-family 6.57) and
ASCEND, and pays a measured premium on CommonVoice (+0.38) and dense code-switch (CSZS +0.35) for
the numeral dial — the training mass that makes the tag causal necessarily shifts the conditioned
output space. If you don't need convention control, use TEA-ASR-1.1.
Evaluation, data, and packaging
Identical to TEA-ASR-1.1: same leak-free
train/test protocol, < 10 hours of public training audio (CommonVoice zh-TW, ASCEND, NTUML2021,
TaiMECS), rank-16 decoder LoRA + low-LR encoder LoRA merged into a single drop-in checkpoint,
Traditional output rendered by the model's own tokenizer (no runtime post-processing; decode
verified bit-exact on 152k+ sequences). The fmt recipe additionally trains numeral-convention
counterfactual pairs — the same real audio supervised under both conventions with opposite tags —
mined from the same public corpora (no extra audio budget).
Acknowledgements & license
Same as TEA-ASR-1.1: adapted from Qwen3-ASR
(Apache-2.0); TaiMECS (CC-BY-4.0); benchmarks: Common Voice, ASCEND, CSZS, NTU ML2021.
Released under the MIT License.
@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}
}