Benchmarks
Ein RTF (Echtzeitfaktor) unter 1,0 bedeutet schneller als Echtzeit.
Apple Silicon (MLX + CoreML)
Alle Benchmarks auf Apple M5 Pro, 48 GB, macOS 25.5 mit Release-Builds und kompilierter metallib.
ASR — Wortfehlerrate
Ausgewertet auf LibriSpeech test-clean (2620 Äußerungen, ~5,4 Stunden englischer Lesesprache).
| Engine | Quant | WER% | RTF | xRT | Peak RSS |
|---|---|---|---|---|---|
| Qwen3-ASR 1.7B MLX | 8-bit | 1.52 | 0.033 | 30.5× | 2.7 GB |
| WhisperKit Large-v3 Turbo | FP16 | 1.71 | 0.084 | 11.9× | 0.4 GB |
| Qwen3-ASR 0.6B MLX | 8-bit | 1.82 | 0.015 | 66.0× | 1.3 GB |
| 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 |
Headline picks: Qwen3-ASR MLX 1.7B 8-bit beats WhisperKit Large-v3 Turbo on WER (1.52% vs 1.71%) and runs 2.6× faster at 6× the memory. Parakeet TDT v3 is the fastest for English-only (117× real-time, 25 European languages). Omnilingual CTC 300M MLX 4-bit is the multilingual throughput leader: 222× real-time, 384 MB peak, 1 672 languages.
The Qwen3-ASR 0.6B CoreML row reflects the rebuilt chunked block-attention encoder (aufklarer/Qwen3-ASR-CoreML) — the previous export ran unmasked global self-attention over zero-padded mel and emitted <|im_end|> right after the first sentence-final period (24.88% WER on the same fixture before the rebuild).
Langzeitstabilität (anhaltende Neural-Engine-Last)
200 LibriSpeech-Äußerungen sequenziell verarbeitet (~30 min Audio, M5 Pro). Testet, ob WER oder Latenz unter dauerhafter Transkription nachlassen.
| Metrik | Erste 25% | Letzte 25% | Gesamt |
|---|---|---|---|
| WER% | 1,30 | 1,23 | 2,43 |
| RTF | 0,672 | 0,400 | 0,539 |
Keine Verschlechterung festgestellt. Die WER bleibt über die gesamte Sitzung stabil. Der RTF verbessert sich sogar, während CoreML seinen Execution-Plan-Cache aufwärmt. Kein Thermal Throttling nach 42 Minuten kontinuierlicher Neural-Engine-Inferenz. Parakeet verarbeitet jeden Chunk unabhängig — keine Zustandsakkumulation über Chunks hinweg.
Mehrsprachige Ergebnisse (FLEURS)
Für CJK-Sprachen wird die CER verwendet (keine Wortgrenzen). Parakeet unterstützt ~25 europäische Sprachen (kein CJK).
| Sprache | Metrik | Qwen3 4-Bit | Qwen3 8-Bit | Parakeet INT8 |
|---|---|---|---|---|
| Spanisch | WER | 6,44 | 5,06 | 5,18 |
| Englisch | WER | 6,57 | 5,64 | 9,30 |
| Chinesisch | CER | 8,41 | 7,71 | — |
| Deutsch | WER | 9,45 | 6,81 | 12,33 |
| Französisch | WER | 11,42 | 8,50 | 13,02 |
| Japanisch | CER | 16,11 | 8,64 | — |
| Russisch | WER | 16,35 | 10,52 | 11,49 |
| Koreanisch | WER | 19,95 | 6,89 | — |
| Hindi | WER | 25,93 | 18,57 | — |
| Arabisch | WER | 33,47 | 20,31 | — |
Kompressions-Delta
Genauigkeitsverlust durch Quantisierung auf geringere Bitbreiten.
| Variante | WER% | Substitutionen | Einfügungen | Löschungen | Gesamtfehler | Größe |
|---|---|---|---|---|---|---|
| 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 |
| Delta | +0,54 | +212 | +31 | +40 | +283 | -30% |
| Parakeet TDT INT8 | 2,74 | 990 | 125 | 308 | 1423 | 634 MB |
Qwen3-ASR 1.7B 8-Bit erreicht 2,35 % WER — übertrifft Whisper Large v3 Turbo (2,5 %) und Whisper Large v3 (2,7 %) und läuft dabei mit 11-facher Echtzeit auf Apple Silicon.
TTS — Round-Trip-Verständlichkeit
Text synthetisieren, dann das Audio mit Qwen3-ASR 0.6B zurück transkribieren und die WER gegenüber dem Originaltext berechnen. Ausgewertet auf 30 eingebauten englischen Konversationssätzen.
| Engine | Modell | Parameter | Größe | 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 |
Latenzaufschlüsselung (Qwen3-TTS)
| Stufe | Zeit | % gesamt | Beschreibung |
|---|---|---|---|
| Embed | 1–3 ms | <1% | Text-Embedding (TTFT) |
| Generate | 2–6 s | ~92% | Autoregressive Codec-Tokens |
| Decode | 244–457 ms | ~8% | Codec-Decoder zur Wellenform |
Alle TTS-Engines laufen schneller als Echtzeit (RTF < 1,0). CosyVoice3 führt bei der Verständlichkeit (3,25 % WER). Kokoro ist am schnellsten (RTF 0,17) bei nur 170 MB.
VAD — Erkennungsgenauigkeit
FLEURS-Auswertung (10 Sprachen, 250 Dateien)
Ausgewertet gegen die Referenz-Ground-Truth des Python-FireRedVAD bei gleichem Schwellenwert.
| Engine | Parameter | Backend | 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-Auswertung (mehrere Sprecher)
5 Mehrsprecher-Konversationsdateien ausgewertet bei 10 ms Frame-Auflösung.
| Engine | Parameter | Backend | 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 |
Vergleich mit veröffentlichten Zahlen
| Modell | F1% | FAR% | MR% | Parameter | Datensatz |
|---|---|---|---|---|---|
| Pyannote (unsere) | 98,22 | 50,09 | 0,19 | 1,5M | VoxConverse |
| FireRedVAD (Paper) | 97,57 | 2,69 | 3,62 | 588K | FLEURS-VAD-102 |
| Silero (unsere) | 95,98 | 21,02 | 5,88 | 309K | VoxConverse |
| Silero-VAD (Paper) | 95,95 | 9,41 | 3,95 | 309K | FLEURS-VAD-102 |
| FireRedVAD (unsere) | 94,21 | 69,33 | 5,05 | 588K | VoxConverse |
FireRedVAD erreicht 99,12 % F1 auf FLEURS mit der niedrigsten Fehlalarmrate (2,52 %) und läuft mit 135-facher Echtzeit. Silero v5 bietet die beste Streaming-Option mit 32 ms pro Chunk.
Sprechereinbettungen
Extraktionslatenz
20-Sekunden-Audioclip, 10 Iterationen nach Aufwärmen.
| Modell | Dim | Backend | Latenz |
|---|---|---|---|
| CAM++ (3D-Speaker) | 192 | CoreML (ANE) | 12 ms |
| WeSpeaker ResNet34-LM | 256 | MLX (GPU) | 64 ms |
| WeSpeaker ResNet34-LM | 256 | CoreML (ANE) | 143 ms |
Embedding-Qualität (VoxConverse)
Kosinusähnlichkeit zwischen segmentebenen Embeddings aus 5 Mehrsprecheraufnahmen. Höhere Trennung = bessere Sprecherunterscheidung.
| Modell | Backend | Intra-Sprecher | Inter-Sprecher | Trennung |
|---|---|---|---|---|
| WeSpeaker | MLX | 0,726 | 0,142 | 0,584 |
| WeSpeaker | CoreML | 0,726 | 0,143 | 0,582 |
| CAM++ | CoreML | 0,723 | 0,395 | 0,328 |
Alle drei Engines erreichen die Python-pyannote-Referenz (0,577 Trennung, Kosinusähnlichkeit >0,96). WeSpeaker erzielt 0,584 Trennung auf MLX und CoreML. CAM++ läuft 5x schneller (12 ms vs. 65 ms) bei guter Trennung (0,328).
Quellentrennung — SDR
Signal-to-Distortion Ratio (SDR) auf MUSDB18-HQ (50 Tracks in voller Länge im Test, Stereo 44,1 kHz). Höher ist besser. Zwei Modellgrößen: HQ (8,9M Parameter/Stem) und L (28,3M Parameter/Stem).
| Ziel | UMX-HQ (MLX) | UMX-L (MLX) | UMX-HQ (veröffentlicht) |
|---|---|---|---|
| Vocals | 6,23 dB | ~10,5 dB | 6,32 dB |
| Drums | 6,44 dB | ~7,0 dB | 5,73 dB |
| Bass | 4,56 dB | ~5,5 dB | 5,23 dB |
| Other | 3,41 dB | ~4,5 dB | 4,02 dB |
| Modell | Parameter/Stem | Größe | RTF | Geschwindigkeit |
|---|---|---|---|---|
| Open-Unmix HQ | 8,9M | 136 MB | 0,23 | 4,3-fache Echtzeit |
| Open-Unmix L | 28,3M | 432 MB | 0,21 | 4,8-fache Echtzeit |
UMX-HQ erreicht die veröffentlichten SDR-Werte für Vocals und Drums mit einem leichtgewichtigen 8,9M-Modell. UMX-L liefert +2–4 dB Verbesserung bei dreifacher Modellgröße. Beide enthalten mehrkanalige Wiener-EM-Nachfilterung und laufen schneller als Echtzeit auf Apple Silicon.
Reproduktion
# 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 mehrsprachig (FLEURS, automatischer Download)
python scripts/benchmark_asr.py --dataset fleurs --language en_us --batch
# TTS Round-Trip
python scripts/benchmark_tts.py --compare
# VAD-Vergleich
python scripts/benchmark_vad.py --compare
# Sprechereinbettungs-Vergleich
python scripts/benchmark_speaker.py --compare
# Quellentrennung (MUSDB18-HQ, Download von Zenodo)
python scripts/benchmark_separation.py --data-dir benchmarks/data/musdb18-hq