Mixed Chinese–English speech recognition: our benchmark

We ran the speech engines that Vocco ships, in the exact builds the app downloads, on 300 utterances of real Mandarin–English conversation. Here are the numbers, how we got them, and where every engine still fails.

Updated October 28, 2026 · Written by the developer of Vocco

Result: Qwen3 ASR, Vocco's default download, had the lowest overall mixed error rate: 0.157, about 16 errors per 100 characters and words. Paraformer, another Vocco engine, was close behind at 0.170 and slightly better on the sentences that mix languages; that gap is within noise. Apple's on-device recognizer had the best Chinese but got more than half of the English words wrong. Whisper large-v3-turbo trailed all of them.

Results

ASCEND test set, first 300 utterances. Lower is better for error rates. RTF is processing time divided by audio length on an Apple M5 Pro with 4 CPU threads; below 1 means faster than real time.

EngineMERChinese CEREnglish WERRTF
Qwen3 ASR 0.6B int8 (Vocco default)0.1570.1110.2870.088
Paraformer Large0.1700.1050.3490.011
SenseVoice Small0.1850.1280.3470.014
Apple on-device recognizer, zh-CN (baseline)0.2070.0930.5260.042
Whisper large-v3-turbo, automatic language*0.2770.2440.371–
Whisper large-v3-turbo, language fixed to Chinese*0.3730.2630.682–

95% bootstrap intervals for MER (10,000 resamples): Qwen3 0.134–0.182, Paraformer 0.146–0.195, SenseVoice 0.161–0.212, Apple 0.179–0.236. The 0.013 gap between Qwen3 and Paraformer is not statistically significant; Qwen3's lead over SenseVoice is. *Whisper rows come from our July 2026 run on the same 300 utterances (WhisperKit, Neural Engine) and were not re-run. Vocco runs Whisper with a fixed language that follows the interface language, so with a Chinese interface the second Whisper row is the one that applies. Our July write-up quoted 0.152 for Qwen3; that was the full-precision reference model, and the int8 build scores 0.157 (0.158 with the libraries in Vocco 1.0.5 and later, see Method).

By type of sentence

The 300 utterances split into 155 Chinese-only, 83 English-only and 62 mixed. MER per subset:

EngineChinese only (155)English only (83)Mixed (62)
Qwen3 ASR int80.0940.2750.170
Paraformer Large0.1020.3650.145
SenseVoice Small0.1310.3120.184
Apple on-device, zh-CN0.0930.4610.207
Whisper large-v3-turbo (auto)*0.2740.3620.232

Qwen3's lead comes mostly from English: on English-only sentences it is ahead of Paraformer by 0.089, a significant gap. On the sentences that mix languages Paraformer is ahead (not significant), partly because Qwen3 now and then translates a whole mixed sentence into English or answers in the wrong script, as in the first examples below. Apple's recognizer is as good as anything here on pure Chinese and the weakest on English.

Where the engines go wrong

Real utterances from the test set. The reference is what was said; the outputs are unedited.

Mixed · what was said所以我们现在开始talk about our research topics Qwen3: So we're going to start talking about our research topics. MER 0.69 · translated the whole sentence into English Paraformer: 所以我们现在开始 talk about our research topics MER 0.00 Apple: 所以我们现在开始 talk abouturesearch tobig。 MER 0.31
Mixed · what was said然后当了one semester Qwen3: 然后当了温斯莫斯特。 MER 0.83 · wrote the English as Chinese characters SenseVoice: 然后当了one master。 MER 0.17 Apple: 然后当了 oner master。 MER 0.33
Mixed · what was said[UNK] very spicy food也不辣 Qwen3: สั่งฟรีสปายซี่ฟูดเดียบอ้า MER 1.00 · answered in Thai script SenseVoice: Thank, very spicy food you. MER 0.57
Mixed · what was said在念呃computer engineering对那u g的时候我是在台湾 Qwen3: 在念啊,computer engineering。对,那U G的时候,我是在台湾。 MER 0.06 Paraformer: 在一啊 comengineerary 对那 u g 的时候我是在台湾 MER 0.24 Apple: 在念 companagineering对 UG的时候我是在台湾。 MER 0.35
English · what was saidso you you already found a job or not Qwen3: So you've you already found a job or not. MER 0.11 Paraformer: so you you already found what job bnot MER 0.33 Apple: So you you aleady fund which of a not. MER 0.56
English · what was saidi'm not nervous Qwen3: I'm not nervous. MER 0.00 Paraformer: i know number MER 0.75 SenseVoice: (Korean script) MER 1.00

Method

Test set

ASCEND (HKUST, LREC 2022) is a corpus of spontaneous Mandarin–English conversation: 10.6 hours from 23 speakers, with many short turns and fillers. We used the first 300 utterances of the test split in the corpus's own order, not a hand-picked sample: 2,070 reference tokens, of which 1,526 are Chinese characters and 544 English words. ASCEND is licensed CC BY-SA 4.0.

Metric

Mixed error rate (MER): Chinese is scored per character and English per word, in one edit-distance alignment. The same alignment gives a Chinese character error rate (CER) and an English word error rate (WER), so you can see which half of the sentence an engine loses. Before scoring, reference and output are both normalized the same way: Traditional characters to Simplified, full-width to half-width, lowercase, punctuation removed. Spelling style is not penalized; recognition errors are. Numbers are not normalized, so "3" against "three" counts as an error for every engine.

Engines and builds

EngineModel filesHow it was run
Qwen3 ASR 0.6Bjkman2023/sherpa-onnx-qwen3-asr-0.6B-int8-2026-03-25: conv_frontend.onnx, encoder.int8.onnx, decoder.int8.onnx, tokenizer/sherpa-onnx 1.13.4 C API with onnxruntime 1.24.4, the libraries in Vocco 1.0.4 (current when we ran this; see below for 1.0.5 and later); CPU, 4 threads, greedy decoding, max_new_tokens 512
SenseVoice Smallpengzhendong/sherpa-onnx-sense-voice-zh-en-ja-ko-yue: model.onnx, tokens.txtSame runtime; language auto, inverse text normalization on
Paraformer Largepengzhendong/sherpa-onnx-paraformer-zh: model.onnx, tokens.txtSame runtime; Vocco's punctuation pass skipped, since punctuation is removed before scoring
Apple (baseline)System speech assets, zh-CNSpeechTranscriber API on macOS 26, on-device
Whisper large-v3-turboopenai_whisper-large-v3-v20240930_turbo (WhisperKit CoreML)WhisperKit on the Neural Engine, July 2026

Every model file's SHA-256 was checked against its repository. Re-running Qwen3 against the libraries inside an installed copy of Vocco 1.0.4 gave the same text on all 300 utterances. Through the PyPI sherpa-onnx wheel instead, Qwen3 scores 0.159: int8 output shifts slightly between runtime builds, while SenseVoice and Paraformer do not change.

Vocco 1.0.5 and later embed onnxruntime 1.27.0, which fixes a memory leak in speaker diarization. We re-ran the same 300 utterances with those libraries on October 27, 2026: Paraformer and SenseVoice gave identical text on all 300; Qwen3 int8 changed on 73 and scored 0.158 (Chinese CER 0.113, English WER 0.285), 0.0014 worse than the table above, with a 95% interval of −0.009 to +0.013, so not a real difference. The ranking is the same. The tables and examples on this page, and the files in the repository, are from the October 22 run.

The Apple row is a baseline, not one of Vocco's engines as run in the app. Vocco's Apple Speech option uses the older SFSpeechRecognizer API, which a command-line tool cannot get permission for without a prompt. SpeechTranscriber is Apple's newest on-device speech-to-text API; it is not the Dictation feature itself.

Hardware and software

October 22, 2026. Apple M5 Pro (18 cores), 48 GB memory, macOS 26.6.2, on AC power. Each utterance was decoded whole, one at a time, after one untimed warm-up. Scoring used the same mer.py and normalize.py as our July run (self-test 16 of 16). The 300 utterance IDs, the reference texts, every engine's output and the scripts are public at github.com/leemingynng-create/vocco-asr-benchmark; one command reproduces the run.

Limits of this test

Questions

What is MER?

Mixed error rate. The reference and the output are split into Chinese characters and English words, aligned once, and the substitutions, deletions and insertions are divided by the number of reference tokens. It is the usual metric for Mandarin–English code-switching.

Did you test Wispr Flow, Typeless or macOS Dictation?

No. Wispr Flow and Typeless transcribe in the cloud, and neither they nor macOS Dictation can be pointed at a fixed set of audio files, so the comparison would not be like for like. We included Apple's on-device recognizer, through its developer API, as the closest built-in baseline.

Can I reproduce this?

Yes. The scripts, utterance IDs, reference texts and every engine's output are at github.com/leemingynng-create/vocco-asr-benchmark. One command downloads ASCEND and the models, builds the runner and scores everything. Text results should match exactly; timings depend on your Mac.

How this page was made: all numbers come from our own runs, dated above, with the scripts and outputs described in the method. Text drafted with AI assistance and checked against the run outputs.

Dictate with the engine that scored best

Vocco's default download is Qwen3 ASR. Free, no sign-up.

macOS 14 or later · Apple silicon

Vocco for Mac · freeDownload free