Benchmarklar
RTF (gerçek zamanlı faktör) değerinin 1.0'ın altında olması gerçek zamanlıdan daha hızlı anlamına gelir.
Apple Silicon (MLX + CoreML)
Tüm benchmarklar Apple M5 Pro, 48 GB, macOS 25.5 üzerinde release derlemeleri ve derlenmiş metallib ile çalıştırıldı.
ASR — Kelime Hata Oranı
LibriSpeech test-clean üzerinde değerlendirildi (2620 söyleniş, ~5.4 saat İngilizce okuma konuşması).
| 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 |
Öne çıkan seçimler: Qwen3-ASR MLX 1.7B 5-bit, 1.32% WER ile yeni doğruluk lideri: WhisperKit Large-v3 Turbo’yu (1.71%) ve kendi 1.7B 8-bit modelimizi (1.52%) geçiyor, 8-bit’e göre ~600 MB daha az peak RSS kullanıyor ve 23% daha hızlı. Parakeet TDT v3 İngilizce için en hızlısı (117× gerçek zaman, 25 Avrupa dili). Omnilingual CTC 300M MLX 4-bit çok dilli throughput lideri: 222× gerçek zaman, 384 MB peak, 1 672 dil.
Qwen3-ASR 0.6B CoreML satırı yeniden inşa edilen chunked block-attention encoder’ı (aufklarer/Qwen3-ASR-CoreML) yansıtır. Önceki export, zero-padded mel üzerinde maskesiz global self-attention çalıştırıyor ve ilk cümle sonu noktasından hemen sonra <|im_end|> üretiyordu (aynı fixture’da rebuild öncesi 24.88% WER).
Uzun biçim kararlılığı (sürekli Neural Engine yükü)
200 LibriSpeech söylenişi sırayla işlendi (~30 dakika ses, M5 Pro). Sürekli transkripsiyon sırasında WER veya gecikmenin bozulup bozulmadığını test eder.
| Metrik | İlk %25 | Son %25 | Genel |
|---|---|---|---|
| WER% | 1.30 | 1.23 | 2.43 |
| RTF | 0.672 | 0.400 | 0.539 |
Hiçbir bozulma tespit edilmedi. WER oturum boyunca kararlıdır. CoreML yürütme planı önbelleğini ısıttıkça RTF aslında iyileşir. 42 dakika kesintisiz Neural Engine çıkarımından sonra termal kısıtlama yok. Parakeet her parçayı bağımsız işler — parçalar arası durum birikimi yoktur.
Çok dilli sonuçlar (FLEURS)
CJK dilleri için CER kullanıldı (kelime sınırı yok). Parakeet ~25 Avrupa dilini destekler (CJK yok).
| Dil | Metrik | Qwen3 4-bit | Qwen3 8-bit | Parakeet INT8 |
|---|---|---|---|---|
| İspanyolca | WER | 6.44 | 5.06 | 5.18 |
| İngilizce | WER | 6.57 | 5.64 | 9.30 |
| Çince | CER | 8.41 | 7.71 | — |
| Almanca | WER | 9.45 | 6.81 | 12.33 |
| Fransızca | WER | 11.42 | 8.50 | 13.02 |
| Japonca | CER | 16.11 | 8.64 | — |
| Rusça | WER | 16.35 | 10.52 | 11.49 |
| Korece | WER | 19.95 | 6.89 | — |
| Hintçe | WER | 25.93 | 18.57 | — |
| Arapça | WER | 33.47 | 20.31 | — |
Sıkıştırma farkı
Daha düşük bit genişliklerine niceleme nedeniyle doğruluk kaybı.
| Varyant | WER% | Yerine Koyma | Ekleme | Silme | Toplam Hata | Boyut |
|---|---|---|---|---|---|---|
| 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 |
| Fark | +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’te 1.32% WER’e (8-bit’te 1.52%) ulaşır; WhisperKit Large-v3 Turbo’yu (1.71%) geçer ve Apple Silicon’da 30-36× gerçek zaman hızında çalışır.
TTS — Gidiş-Dönüş Anlaşılırlığı
Metni sentezle, ardından elde edilen sesi Qwen3-ASR 0.6B ile yeniden transkripte et ve orijinal metne karşı WER hesapla. 30 yerleşik İngilizce sohbet cümlesi üzerinde değerlendirildi.
| Engine | Model | Parametre | Boyut | 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 |
Gecikme dökümü (Qwen3-TTS)
| Aşama | Süre | Toplam % | Açıklama |
|---|---|---|---|
| Embed | 1-3 ms | <1% | Metin gömme (TTFT) |
| Generate | 2-6 s | ~92% | Otoregresif codec token'ları |
| Decode | 244-457 ms | ~8% | Codec çözücüsünden dalga formuna |
Tüm TTS engine'leri gerçek zamanlıdan daha hızlı çalışır (RTF < 1.0). CosyVoice3 anlaşılırlıkta öndedir (%3.25 WER). Kokoro yalnızca 170 MB ile en hızlısıdır (RTF 0.17).
VAD — Algılama Doğruluğu
FLEURS değerlendirmesi (10 dil, 250 dosya)
Aynı eşik değerinde Python FireRedVAD referans doğruluğuna karşı değerlendirildi.
| Engine | Parametre | 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 değerlendirmesi (çoklu konuşmacı)
10 ms frame çözünürlüğünde değerlendirilen 5 çoklu konuşmacılı sohbet dosyası.
| Engine | Parametre | 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 |
Yayımlanmış sayılarla karşılaştırma
| Model | F1% | FAR% | MR% | Parametre | Veri Kümesi |
|---|---|---|---|---|---|
| Pyannote (bizim) | 98.22 | 50.09 | 0.19 | 1.5M | VoxConverse |
| FireRedVAD (makale) | 97.57 | 2.69 | 3.62 | 588K | FLEURS-VAD-102 |
| Silero (bizim) | 95.98 | 21.02 | 5.88 | 309K | VoxConverse |
| Silero-VAD (makale) | 95.95 | 9.41 | 3.95 | 309K | FLEURS-VAD-102 |
| FireRedVAD (bizim) | 94.21 | 69.33 | 5.05 | 588K | VoxConverse |
FireRedVAD FLEURS üzerinde en düşük yanlış alarm oranıyla (%2.52) %99.12 F1 elde eder ve 135x gerçek zamanlı çalışır. Silero v5, parça başına 32 ms ile en iyi akış seçeneğini sunar.
Wake-Word / Anahtar Kelime Algılama
KWS Zipformer (gigaspeech ince ayarlı)
CoreML üzerinde INT8 palettization ile streaming Zipformer2 transducer (3.49M parametre, Apache-2.0). LibriSpeech test-clean üzerinde 12 anahtar kelimeye karşı değerlendirildi (158 pozitif söyleniş, 60 negatif). Ayarlanmış eşikler: acThreshold = 0.15, contextScore = 0.5, numTrailingBlanks = 1.
| Metrik | Değer | Notlar |
|---|---|---|
| RTF (CPU + Neural Engine) | 0.04 | M serisinde 26× gerçek zamanlı |
| Recall (12 anahtar kelime) | 88% | LibriSpeech test-clean, 158 pozitif söyleniş |
| Söyleniş başına yanlış pozitif | 0.27 | 60 negatif söyleniş |
| CoreML INT8 vs PyTorch FP32 | 99% | Çıkış uyumu |
| Derlenmiş model boyutu | ~4 MB | encoder 3.3 MB + decoder 525 KB + joiner 160 KB |
| Çalışma zamanı belleği | ~6 MB | Ağırlıklar + encoder durum önbellekleri |
Ayarlanmış varsayılanlar, upstream icefall varsayılanlarına (acThreshold = 0.25, contextScore = 2.0) kıyasla recall'ı %62'den %88'e çıkardı (ve söyleniş başına FP'yi 0.43'ten 0.27'ye düşürdü). Anahtar kelime dosyası formatı ve kelime başına eşik ayarı için wake-word kılavuzuna bakın.
Konuşmacı Gömmeleri
Çıkarım gecikmesi
20 saniyelik ses klibi, ısınma sonrası 10 yineleme.
| Model | Boyut | Backend | Gecikme |
|---|---|---|---|
| CAM++ (3D-Speaker) | 192 | CoreML (ANE) | 12 ms |
| WeSpeaker ResNet34-LM | 256 | MLX (GPU) | 64 ms |
| WeSpeaker ResNet34-LM | 256 | CoreML (ANE) | 143 ms |
Gömme kalitesi (VoxConverse)
5 çoklu konuşmacılı kayıttan segment düzeyindeki gömmeler arasındaki kosinüs benzerliği. Daha yüksek ayrım = daha iyi konuşmacı ayırt etme.
| Model | Backend | Aynı Konuşmacı | Farklı Konuşmacı | Ayrım |
|---|---|---|---|---|
| WeSpeaker | MLX | 0.726 | 0.142 | 0.584 |
| WeSpeaker | CoreML | 0.726 | 0.143 | 0.582 |
| CAM++ | CoreML | 0.723 | 0.395 | 0.328 |
Üç engine de Python pyannote referansıyla eşleşir (0.577 ayrım, kosinüs benzerliği >0.96). WeSpeaker hem MLX hem de CoreML üzerinde 0.584 ayrım elde eder. CAM++ 5x daha hızlı çalışır (12 ms vs 65 ms) ve iyi ayrım (0.328) sunar.
Kaynak Ayırma — SDR
MUSDB18-HQ üzerinde Sinyal-Bozulma Oranı (SDR) (50 tam uzunluklu test parçası, stereo 44.1kHz). Daha yüksek daha iyidir. İki model boyutu: HQ (stem başına 8.9M parametre) ve L (stem başına 28.3M parametre).
| Hedef | UMX-HQ (MLX) | UMX-L (MLX) | UMX-HQ (yayımlanmış) |
|---|---|---|---|
| Vokal | 6.23 dB | ~10.5 dB | 6.32 dB |
| Davul | 6.44 dB | ~7.0 dB | 5.73 dB |
| Bas | 4.56 dB | ~5.5 dB | 5.23 dB |
| Diğer | 3.41 dB | ~4.5 dB | 4.02 dB |
| Model | Parametre/stem | Boyut | RTF | Hız |
|---|---|---|---|---|
| Open-Unmix HQ | 8.9M | 136 MB | 0.23 | 4.3x gerçek zamanlı |
| Open-Unmix L | 28.3M | 432 MB | 0.21 | 4.8x gerçek zamanlı |
UMX-HQ, hafif 8.9M modeliyle vokal ve davullarda yayımlanmış SDR'yi yakalar. UMX-L 3 kat daha büyük model boyutunda +2–4 dB iyileşme sağlar. Her ikisi de çok kanallı Wiener EM son filtreleme içerir ve Apple Silicon üzerinde gerçek zamanlıdan daha hızlı çalışır.
Android — cihaz üzerinde (Galaxy S23)
Samsung Galaxy S23 (SM-S918B), arm64, yalnızca CPU üzerinde ölçüldü, belirtilen yerlerde INT8. RTF süre ÷ ses oranıdır (düşük = gerçek zamandan hızlı; <1.0 = gerçek zaman); Peak RSS çalışan modelin yerleşik belleğidir. STT 20 sn’lik bir klip kullanır; TTS RTF veya ilk sese kadar geçen süreyi (TTFA) bildirir.
| 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 |
Öne çıkan: Parakeet-EOU-120M buradaki en hafif STT’dir, yalnızca ~232 MB – çok dilli (25 Avrupa dili), akışlı ve yerleşik konuşma sonu algılamasıyla, 0.6B Parakeet’ten yaklaşık 5–6× daha küçük. ONNX’in CPU bellek arenasını devre dışı bırakmak (artık varsayılan) Parakeet-TDT’yi ~1.34 GB’den ~1.15 GB’ye düşürdü.
Yeniden Üretim
# 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