Benchmarks

RTF(实时因子)小于 1.0 表示快于实时。

Apple Silicon (MLX + CoreML)

所有 benchmark 都在 M2 Max、64 GB、macOS 14 上运行,使用 release 构建和已编译的 metallib。

ASR — 词错率

LibriSpeech test-clean(2620 段录音,约 5.4 小时英文朗读)上评估。

模型位宽大小WER%RTF
Qwen3-ASR 1.7B8-bit2.3 GB2.350.090
Qwen3-ASR 1.7B4-bit1.2 GB2.570.045
Parakeet TDT 0.6BINT8634 MB2.740.089
Qwen3-ASR 0.6B8-bit960 MB2.800.025
Qwen3-ASR 0.6B4-bit675 MB3.340.023

与已发布模型的对比

模型参数量大小精度WER%来源
Qwen3-ASR 1.7B1.7B2.3 GB8-bit2.35本基准
Whisper Large v3 Turbo809M1.6 GBFP162.5OpenAI (2024)
Qwen3-ASR 1.7B1.7B1.2 GB4-bit2.57本基准
Whisper Large v31.5B3.1 GBFP162.7OpenAI (2023)
Parakeet TDT 0.6B600M634 MBINT82.74本基准
Qwen3-ASR 0.6B600M960 MB8-bit2.80本基准
Whisper Medium769M1.5 GBFP163.0OpenAI (2022)
Qwen3-ASR 0.6B600M675 MB4-bit3.34本基准
Whisper Small244M483 MBFP163.4OpenAI (2022)

长音频稳定性(持续的 Neural Engine 负载)

顺序处理 200 段 LibriSpeech 录音(约 30 分钟音频,M2 Max)。测试在持续转写下 WER 或延迟是否会退化。

指标前 25%后 25%整体
WER%1.301.232.43
RTF0.6720.4000.539

未检测到退化。整个会话期间 WER 保持稳定。RTF 实际上随着 CoreML 的执行计划缓存预热而提升。在 42 分钟连续 Neural Engine 推理后没有出现热降频。Parakeet 独立处理每个 chunk——不存在跨 chunk 的状态累积。

多语言结果(FLEURS)

对 CJK 语言使用 CER(无词边界)。Parakeet 支持约 25 种欧洲语言(不包含 CJK)。

语言指标Qwen3 4-bitQwen3 8-bitParakeet INT8
西班牙语WER6.445.065.18
英语WER6.575.649.30
中文CER8.417.71
德语WER9.456.8112.33
法语WER11.428.5013.02
日语CER16.118.64
俄语WER16.3510.5211.49
韩语WER19.956.89
印地语WER25.9318.57
阿拉伯语WER33.4720.31

压缩差异

量化到更低位宽带来的精度损失。

变体WER%替换插入删除错误总数大小
Qwen3 0.6B 8-bit2.801111922681471960 MB
Qwen3 0.6B 4-bit3.3413231233081754675 MB
差异+0.54+212+31+40+283-30%
Parakeet TDT INT82.749901253081423634 MB
关键结论

Qwen3-ASR 1.7B 8-bit 达到 2.35% WER——超过 Whisper Large v3 Turbo (2.5%) 和 Whisper Large v3 (2.7%),同时在 Apple Silicon 上以 11 倍实时速度运行。

TTS — 往返可懂度

合成文本,然后用 Qwen3-ASR 0.6B 把音频再转写回来,并相对原始文本计算 WER。在 30 个内置英文对话句上评估。

引擎模型参数量大小WER%RTF
CosyVoice30.5B 4-bit500M~1.9 GB3.250.59
Qwen3-TTS1.7B 4-bit1.7B~2.3 GB3.470.79
Qwen3-TTS1.7B 8-bit1.7B~3.5 GB3.660.85
Kokoro-82MCoreML82M~170 MB3.900.17
Qwen3-TTS0.6B 8-bit600M~960 MB9.740.76
Qwen3-TTS0.6B 4-bit600M~675 MB15.580.76

延迟分解(Qwen3-TTS)

阶段时间占总时间说明
Embed1-3 ms<1%文本嵌入(TTFT)
Generate2-6 s~92%自回归生成 codec token
Decode244-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
FireRedVAD588KCoreML (ANE)99.122.520.470.007
Silero v5309KCoreML (ANE)95.1315.761.890.022
Silero v5309KMLX (GPU)95.1115.851.890.027
Pyannote1.5MMLX (GPU)94.8614.712.920.358

VoxConverse 评估(多说话人)

5 个多说话人对话文件,在 10 ms 帧分辨率下评估。

引擎参数量后端F1%FAR%MR%RTF
Pyannote1.5MMLX (GPU)98.2250.090.190.358
Silero v5309KCoreML (ANE)97.5233.292.690.022
Silero v5309KMLX (GPU)95.9821.025.880.027
FireRedVAD588KCoreML (ANE)94.2140.125.050.007

与已发表数据的对比

模型F1%FAR%MR%参数量数据集
Pyannote(我们)98.2250.090.191.5MVoxConverse
FireRedVAD(论文)97.572.693.62588KFLEURS-VAD-102
Silero(我们)95.9821.025.88309KVoxConverse
Silero-VAD(论文)95.959.413.95309KFLEURS-VAD-102
FireRedVAD(我们)94.2169.335.05588KVoxConverse
关键结论

FireRedVAD 在 FLEURS 上达到 99.12% F1,并具有最低的虚警率(2.52%),运行速度达 135 倍实时。Silero v5 提供最佳的流式选择,每个 chunk 仅 32 ms。

说话人嵌入向量

提取延迟

20 秒音频片段,预热后 10 次迭代。

模型维度后端延迟
CAM++ (3D-Speaker)192CoreML (ANE)12 ms
WeSpeaker ResNet34-LM256MLX (GPU)64 ms
WeSpeaker ResNet34-LM256CoreML (ANE)143 ms

嵌入向量质量(VoxConverse)

5 个多说话人录音中分段级 embedding 之间的余弦相似度。分离度越高 = 说话人区分能力越强。

模型后端同说话人不同说话人分离度
WeSpeakerMLX0.7260.1420.584
WeSpeakerCoreML0.7260.1430.582
CAM++CoreML0.7230.3950.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 dB6.32 dB
6.44 dB~7.0 dB5.73 dB
贝斯4.56 dB~5.5 dB5.23 dB
其他3.41 dB~4.5 dB4.02 dB
模型每声轨参数量大小RTF速度
Open-Unmix HQ8.9M136 MB0.234.3 倍实时
Open-Unmix L28.3M432 MB0.214.8 倍实时
关键结论

UMX-HQ 用一个轻量的 8.9M 模型在人声和鼓上匹配了已发表的 SDR。UMX-L 在 3 倍模型尺寸下提供 +2–4 dB 的提升。两者都包含多通道 Wiener EM 后置滤波,并在 Apple Silicon 上以快于实时的速度运行。

复现

# 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