Benchmarks
RTF(实时因子)小于 1.0 表示快于实时。
Apple Silicon (MLX + CoreML)
所有 benchmark 都在 Apple M5 Pro、48 GB、macOS 25.5 上运行,使用 release 构建和已编译的 metallib。
ASR — 词错率
在 LibriSpeech test-clean(2620 段录音,约 5.4 小时英文朗读)上评估。
| Engine | Quant | WER% | RTF | xRT | Peak RSS |
|---|---|---|---|---|---|
| Qwen3-ASR 1.7B MLX | 5-bit | 1.32 | 0.027 | 36.4× | 1.92 GB |
| Qwen3-ASR 1.7B MLX | 8-bit | 1.52 | 0.033 | 30.5× | 2.7 GB |
| Qwen3-ASR 0.6B MLX | 8-bit | 1.82 | 0.015 | 66.0× | 1.3 GB |
| Qwen3-ASR 0.6B MLX | 5-bit | 1.74 | 0.014 | 70.5× | 1.03 GB |
| WhisperKit Large-v3 Turbo | FP16 | 1.71 | 0.084 | 11.9× | 0.4 GB |
| WhisperASR native CoreML | FP16 | 1.40 | 0.089 | 14.0× | 384 MB |
| Qwen3-ASR 0.6B MLX | 4-bit | 2.20 | 0.012 | 85.6× | 1.0 GB |
| Parakeet TDT v3 | INT8 | 2.37 | 0.009 | 117.4× | 0.9 GB |
| Qwen3-ASR 0.6B CoreML | INT8 | 3.02 | 0.098 | 10.2× | 1.4 GB |
| Omnilingual CTC 300M MLX | 4-bit | 4.26 | 0.005 | 222.1× | 0.4 GB |
| Omnilingual CTC 300M CoreML | INT8 | 5.67 | 0.128 | 7.8× | 0.5 GB |
| Nemotron Streaming | INT8 | 2.82 | 0.058 | 17.1× | 961 MB |
重点选择:Qwen3-ASR MLX 1.7B 5-bit 以 1.32% WER 成为新的准确率领先项,优于 WhisperKit Large-v3 Turbo(1.71%)和自家的 1.7B 8-bit(1.52%),同时比 8-bit 少用约 600 MB 峰值 RSS,速度快 23%。Parakeet TDT v3 是英语场景最快选择(117× 实时,25 种欧洲语言)。Omnilingual CTC 300M MLX 4-bit 是多语言吞吐领先项:222× 实时,384 MB 峰值,1 672 种语言。
Qwen3-ASR 0.6B CoreML 行使用重建后的分块 block-attention 编码器(aufklarer/Qwen3-ASR-CoreML)。之前的导出会对零填充 mel 运行未掩码的全局自注意力,并在第一个句末句号后立即输出 <|im_end|>(同一测试集重建前为 24.88% WER)。
需要更聚焦的选型指南?请查看 Qwen3-ASR vs Whisper:准确率、速度与内存。
长音频稳定性(持续的 Neural Engine 负载)
顺序处理 200 段 LibriSpeech 录音(约 30 分钟音频,M5 Pro)。测试在持续转写下 WER 或延迟是否会退化。
| 指标 | 前 25% | 后 25% | 整体 |
|---|---|---|---|
| WER% | 1.30 | 1.23 | 2.43 |
| RTF | 0.672 | 0.400 | 0.539 |
未检测到退化。整个会话期间 WER 保持稳定。RTF 实际上随着 CoreML 的执行计划缓存预热而提升。在 42 分钟连续 Neural Engine 推理后没有出现热降频。Parakeet 独立处理每个 chunk——不存在跨 chunk 的状态累积。
多语言结果(FLEURS)
对 CJK 语言使用 CER(无词边界)。Parakeet 支持约 25 种欧洲语言(不包含 CJK)。
| 语言 | 指标 | Qwen3 4-bit | Qwen3 8-bit | Parakeet INT8 |
|---|---|---|---|---|
| 西班牙语 | WER | 6.44 | 5.06 | 5.18 |
| 英语 | WER | 6.57 | 5.64 | 9.30 |
| 中文 | CER | 8.41 | 7.71 | — |
| 德语 | WER | 9.45 | 6.81 | 12.33 |
| 法语 | WER | 11.42 | 8.50 | 13.02 |
| 日语 | CER | 16.11 | 8.64 | — |
| 俄语 | WER | 16.35 | 10.52 | 11.49 |
| 韩语 | WER | 19.95 | 6.89 | — |
| 印地语 | WER | 25.93 | 18.57 | — |
| 阿拉伯语 | WER | 33.47 | 20.31 | — |
压缩差异
量化到更低位宽带来的精度损失。
| 变体 | WER% | 替换 | 插入 | 删除 | 错误总数 | 大小 |
|---|---|---|---|---|---|---|
| Qwen3 0.6B 8-bit | 2.80 | 1111 | 92 | 268 | 1471 | 960 MB |
| Qwen3 0.6B 4-bit | 3.34 | 1323 | 123 | 308 | 1754 | 675 MB |
| 差异 | +0.54 | +212 | +31 | +40 | +283 | -30% |
| Parakeet TDT INT8 | 2.74 | 990 | 125 | 308 | 1423 | 634 MB |
Qwen3-ASR 1.7B MLX 在 5-bit 下达到 1.32% WER(8-bit 为 1.52%),优于 WhisperKit Large-v3 Turbo(1.71%),并在 Apple Silicon 上以 30-36× 实时速度运行。
TTS — 往返可懂度
合成文本,然后用 Qwen3-ASR 0.6B 把音频再转写回来,并相对原始文本计算 WER。在 30 个内置英文对话句上评估。
| 引擎 | 模型 | 参数量 | 大小 | WER% | RTF |
|---|---|---|---|---|---|
| CosyVoice3 | 0.5B 4-bit | 500M | ~1.9 GB | 3.25 | 0.59 |
| Qwen3-TTS | 1.7B 4-bit | 1.7B | ~2.3 GB | 3.47 | 0.79 |
| Qwen3-TTS | 1.7B 8-bit | 1.7B | ~3.5 GB | 3.66 | 0.85 |
| Kokoro-82M | CoreML | 82M | ~170 MB | 3.90 | 0.17 |
| Qwen3-TTS | 0.6B 8-bit | 600M | ~960 MB | 9.74 | 0.76 |
| Qwen3-TTS | 0.6B 4-bit | 600M | ~675 MB | 15.58 | 0.76 |
声音克隆(零样本)
使用同一段 12 秒参考音频做零样本声音克隆;回读 = 用 Qwen3-ASR 转写输出并与输入文本对比。Apple M5 Pro,48 GB;RTF 为墙钟时间 ÷ 音频秒数(越低越快)。
| 引擎 | 参数量 | Peak RSS | 音频 | 合成 | RTF | 回读 |
|---|---|---|---|---|---|---|
| Higgs TTS 3 (clone) | 4B bf16 | 8.6 GB | 6.04 s | 4.73 s | 0.78 | 完全一致 |
| F5-TTS (16 steps) | 336M fp16 | 0.8 GB | 5.09 s | 2.91 s | 0.57 | 差 1 词 |
| F5-TTS (32 steps) | 336M fp16 | 0.8 GB | 5.09 s | 5.75 s | 1.13 | 差 1 词 |
| IndexTTS2 (clone) | 1.5B-class fp16 | 3.0 GB | 5.80 s | 5.8 s | 1.0 | 完全一致 |
延迟分解(Qwen3-TTS)
| 阶段 | 时间 | 占总时间 | 说明 |
|---|---|---|---|
| Embed | 1-3 ms | <1% | 文本嵌入(TTFT) |
| Generate | 2-6 s | ~92% | 自回归生成 codec token |
| Decode | 244-457 ms | ~8% | Codec 解码器到波形 |
所有 TTS 引擎都比实时更快(RTF < 1.0)。CosyVoice3 在可懂度方面领先(3.25% WER)。Kokoro 最快(RTF 0.17),仅 170 MB。
VAD — 检测精度
FLEURS 评估(10 种语言,250 个文件)
在相同阈值下,相对于 Python FireRedVAD 参考 ground truth 进行评估。
| 引擎 | 参数量 | 后端 | F1% | FAR% | MR% | RTF |
|---|---|---|---|---|---|---|
| FireRedVAD | 588K | CoreML (ANE) | 99.12 | 2.52 | 0.47 | 0.007 |
| Silero v5 | 309K | CoreML (ANE) | 95.13 | 15.76 | 1.89 | 0.022 |
| Silero v5 | 309K | MLX (GPU) | 95.11 | 15.85 | 1.89 | 0.027 |
| Pyannote | 1.5M | MLX (GPU) | 94.86 | 14.71 | 2.92 | 0.358 |
VoxConverse 评估(多说话人)
5 个多说话人对话文件,在 10 ms 帧分辨率下评估。
| 引擎 | 参数量 | 后端 | F1% | FAR% | MR% | RTF |
|---|---|---|---|---|---|---|
| Pyannote | 1.5M | MLX (GPU) | 98.22 | 50.09 | 0.19 | 0.358 |
| Silero v5 | 309K | CoreML (ANE) | 97.52 | 33.29 | 2.69 | 0.022 |
| Silero v5 | 309K | MLX (GPU) | 95.98 | 21.02 | 5.88 | 0.027 |
| FireRedVAD | 588K | CoreML (ANE) | 94.21 | 40.12 | 5.05 | 0.007 |
与已发表数据的对比
| 模型 | F1% | FAR% | MR% | 参数量 | 数据集 |
|---|---|---|---|---|---|
| Pyannote(我们) | 98.22 | 50.09 | 0.19 | 1.5M | VoxConverse |
| FireRedVAD(论文) | 97.57 | 2.69 | 3.62 | 588K | FLEURS-VAD-102 |
| Silero(我们) | 95.98 | 21.02 | 5.88 | 309K | VoxConverse |
| Silero-VAD(论文) | 95.95 | 9.41 | 3.95 | 309K | FLEURS-VAD-102 |
| FireRedVAD(我们) | 94.21 | 69.33 | 5.05 | 588K | VoxConverse |
FireRedVAD 在 FLEURS 上达到 99.12% F1,并具有最低的虚警率(2.52%),运行速度达 135 倍实时。Silero v5 提供最佳的流式选择,每个 chunk 仅 32 ms。
说话人嵌入向量
提取延迟
20 秒音频片段,预热后 10 次迭代。
| 模型 | 维度 | 后端 | 延迟 |
|---|---|---|---|
| CAM++ (3D-Speaker) | 192 | CoreML (ANE) | 12 ms |
| WeSpeaker ResNet34-LM | 256 | MLX (GPU) | 64 ms |
| WeSpeaker ResNet34-LM | 256 | CoreML (ANE) | 143 ms |
嵌入向量质量(VoxConverse)
5 个多说话人录音中分段级 embedding 之间的余弦相似度。分离度越高 = 说话人区分能力越强。
| 模型 | 后端 | 同说话人 | 不同说话人 | 分离度 |
|---|---|---|---|---|
| WeSpeaker | MLX | 0.726 | 0.142 | 0.584 |
| WeSpeaker | CoreML | 0.726 | 0.143 | 0.582 |
| CAM++ | CoreML | 0.723 | 0.395 | 0.328 |
三个引擎都与 Python pyannote 参考实现匹配(分离度 0.577,余弦相似度 >0.96)。WeSpeaker 在 MLX 和 CoreML 上都达到 0.584 分离度。CAM++ 运行速度快 5 倍(12 ms vs 65 ms),分离度也不错(0.328)。
音源分离 — SDR
在 MUSDB18-HQ(50 段完整测试曲目,立体声 44.1 kHz)上的信号失真比 (SDR)。越高越好。两个模型尺寸:HQ(每个声轨 8.9M 参数)和 L(每个声轨 28.3M 参数)。
| 目标 | UMX-HQ (MLX) | UMX-L (MLX) | UMX-HQ(已发表) |
|---|---|---|---|
| 人声 | 6.23 dB | ~10.5 dB | 6.32 dB |
| 鼓 | 6.44 dB | ~7.0 dB | 5.73 dB |
| 贝斯 | 4.56 dB | ~5.5 dB | 5.23 dB |
| 其他 | 3.41 dB | ~4.5 dB | 4.02 dB |
| 模型 | 每声轨参数量 | 大小 | RTF | 速度 |
|---|---|---|---|---|
| Open-Unmix HQ | 8.9M | 136 MB | 0.23 | 4.3 倍实时 |
| Open-Unmix L | 28.3M | 432 MB | 0.21 | 4.8 倍实时 |
UMX-HQ 用一个轻量的 8.9M 模型在人声和鼓上匹配了已发表的 SDR。UMX-L 在 3 倍模型尺寸下提供 +2–4 dB 的提升。两者都包含多通道 Wiener EM 后置滤波,并在 Apple Silicon 上以快于实时的速度运行。
Android —— 设备端(Galaxy S23)
在 三星 Galaxy S23(SM-S918B),arm64,仅 CPU 上测量,标注处为 INT8。RTF 为耗时 ÷ 音频(越低越快于实时;<1.0 为实时);Peak RSS 为运行模型的常驻内存。STT 使用 20 秒音频;TTS 报告 RTF 或首音延迟(TTFA)。
| Model | Task | Runtime | Speed | Peak RSS |
|---|---|---|---|---|
| Parakeet-EOU 120M | Streaming STT + EOU | ONNX INT8 | 0.21 RTF | 232 MB |
| Omnilingual CTC 300M | Multilingual STT | LiteRT | 0.15 RTF | 831 MB |
| Nemotron Streaming 0.6B | Streaming STT | LiteRT | 0.67 RTF | 1.30 GB |
| Parakeet-TDT 0.6B | STT (batch) | ONNX INT8 | 0.082 RTF | 1.15 GB |
| Supertonic-3 99M | TTS (preset voice) | LiteRT | 0.34 RTF · ~1.1 s TTFA | 832 MB |
| Kokoro-82M | TTS (preset voice) | ONNX FP32 | 0.53 RTF | 640 MB |
要点:Parakeet-EOU-120M 是这里最轻的 STT,仅约 232 MB——多语言(25 种欧洲语言)、流式,并内置话轮结束检测,比 0.6B 的 Parakeet 小约 5–6×。禁用 ONNX 的 CPU 内存竞技场(现为默认)将 Parakeet-TDT 从约 1.34 GB 降到约 1.15 GB。
复现
# ASR benchmarks (LibriSpeech test-clean)
make build
python scripts/benchmark_asr.py --batch --engine qwen3 --model 0.6B
python scripts/benchmark_asr.py --batch --engine qwen3 --model 0.6B-8bit
python scripts/benchmark_asr.py --batch --engine parakeet
python scripts/benchmark_asr.py --batch --engine parakeet --model int8
# ASR multilingual (FLEURS, auto-download)
python scripts/benchmark_asr.py --dataset fleurs --language en_us --batch
# TTS round-trip
python scripts/benchmark_tts.py --compare
# VAD comparison
python scripts/benchmark_vad.py --compare
# Speaker embeddings comparison
python scripts/benchmark_speaker.py --compare
# Source separation (MUSDB18-HQ, download from Zenodo)
python scripts/benchmark_separation.py --data-dir benchmarks/data/musdb18-hq