Benchmarks

Un RTF (factor en tiempo real) inferior a 1.0 significa más rápido que el tiempo real.

Apple Silicon (MLX + CoreML)

Todos los benchmarks se han ejecutado en Apple M5 Pro, 48 GB, macOS 25.5 con compilaciones de release y metallib compilada.

ASR — Tasa de error de palabra

Evaluado en LibriSpeech test-clean (2620 enunciados, ~5.4 horas de voz leída en inglés).

EngineQuantWER%RTFxRTPeak RSS
Qwen3-ASR 1.7B MLX8-bit1.520.03330.5×2.7 GB
WhisperKit Large-v3 TurboFP161.710.08411.9×0.4 GB
Qwen3-ASR 0.6B MLX8-bit1.820.01566.0×1.3 GB
Qwen3-ASR 0.6B MLX4-bit2.200.01285.6×1.0 GB
Parakeet TDT v3INT82.370.009117.4×0.9 GB
Qwen3-ASR 0.6B CoreMLINT83.020.09810.2×1.4 GB
Omnilingual CTC 300M MLX4-bit4.260.005222.1×0.4 GB
Omnilingual CTC 300M CoreMLINT85.670.1287.8×0.5 GB
Nemotron StreamingINT82.820.05817.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).

Estabilidad en formato largo (carga sostenida del Neural Engine)

200 enunciados de LibriSpeech procesados secuencialmente (~30 min de audio, M5 Pro). Comprueba si el WER o la latencia se degradan bajo transcripción sostenida.

MétricaPrimer 25%Último 25%Total
WER%1.301.232.43
RTF0.6720.4000.539

No se detecta degradación. El WER es estable a lo largo de la sesión. El RTF incluso mejora a medida que CoreML calienta su caché de plan de ejecución. Sin throttling térmico tras 42 minutos de inferencia continua en el Neural Engine. Parakeet procesa cada fragmento de forma independiente, sin acumular estado entre fragmentos.

Resultados multilingües (FLEURS)

Se usa CER para idiomas CJK (sin fronteras de palabra). Parakeet soporta ~25 idiomas europeos (sin CJK).

IdiomaMétricaQwen3 4-bitQwen3 8-bitParakeet INT8
EspañolWER6.445.065.18
InglésWER6.575.649.30
ChinoCER8.417.71
AlemánWER9.456.8112.33
FrancésWER11.428.5013.02
JaponésCER16.118.64
RusoWER16.3510.5211.49
CoreanoWER19.956.89
HindiWER25.9318.57
ÁrabeWER33.4720.31

Delta de compresión

Pérdida de precisión al cuantizar a anchos de bits menores.

VarianteWER%SustitucionesInsercionesEliminacionesErrores totalesTamaño
Qwen3 0.6B 8-bit2.801111922681471960 MB
Qwen3 0.6B 4-bit3.3413231233081754675 MB
Delta+0.54+212+31+40+283-30%
Parakeet TDT INT82.749901253081423634 MB
Conclusión clave

Qwen3-ASR 1.7B 8-bit alcanza un 2.35% WER — superando a Whisper Large v3 Turbo (2.5%) y a Whisper Large v3 (2.7%) mientras se ejecuta a 11× el tiempo real en Apple Silicon.

TTS — Inteligibilidad ida y vuelta

Sintetiza texto, luego transcribe el audio resultante con Qwen3-ASR 0.6B y calcula el WER respecto al texto original. Evaluado sobre 30 frases conversacionales en inglés integradas.

MotorModeloParámetrosTamañoWER%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

Desglose de latencia (Qwen3-TTS)

EtapaTiempo% del totalDescripción
Embed1-3 ms<1%Embedding del texto (TTFT)
Generate2-6 s~92%Tokens de códec autoregresivos
Decode244-457 ms~8%Decodificador de códec a forma de onda
Conclusión clave

Todos los motores TTS se ejecutan más rápido que el tiempo real (RTF < 1.0). CosyVoice3 lidera en inteligibilidad (3.25% WER). Kokoro es el más rápido (RTF 0.17) con tan solo 170 MB.

VAD — Precisión de detección

Evaluación en FLEURS (10 idiomas, 250 archivos)

Evaluado contra la referencia de Python FireRedVAD con el mismo umbral.

MotorParámetrosBackendF1%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

Evaluación en VoxConverse (multi-hablante)

5 archivos de conversación multi-hablante evaluados con resolución de 10 ms por frame.

MotorParámetrosBackendF1%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

Comparación con cifras publicadas

ModeloF1%FAR%MR%ParámetrosDataset
Pyannote (nuestro)98.2250.090.191.5MVoxConverse
FireRedVAD (paper)97.572.693.62588KFLEURS-VAD-102
Silero (nuestro)95.9821.025.88309KVoxConverse
Silero-VAD (paper)95.959.413.95309KFLEURS-VAD-102
FireRedVAD (nuestro)94.2169.335.05588KVoxConverse
Conclusión clave

FireRedVAD alcanza un 99.12% F1 en FLEURS con la menor tasa de falsas alarmas (2.52%) y se ejecuta a 135× el tiempo real. Silero v5 ofrece la mejor opción de streaming con 32 ms por fragmento.

Embeddings de hablante

Latencia de extracción

Clip de audio de 20 segundos, 10 iteraciones tras el calentamiento.

ModeloDimBackendLatencia
CAM++ (3D-Speaker)192CoreML (ANE)12 ms
WeSpeaker ResNet34-LM256MLX (GPU)64 ms
WeSpeaker ResNet34-LM256CoreML (ANE)143 ms

Calidad de los embeddings (VoxConverse)

Similitud del coseno entre embeddings a nivel de segmento de 5 grabaciones multi-hablante. Mayor separación = mejor discriminación de hablantes.

ModeloBackendIntra-hablanteInter-hablanteSeparación
WeSpeakerMLX0.7260.1420.584
WeSpeakerCoreML0.7260.1430.582
CAM++CoreML0.7230.3950.328
Conclusión clave

Los tres motores igualan la referencia Python pyannote (0.577 de separación, similitud del coseno >0.96). WeSpeaker alcanza una separación de 0.584 tanto en MLX como en CoreML. CAM++ se ejecuta 5× más rápido (12 ms frente a 65 ms) con una buena separación (0.328).

Separación de fuentes — SDR

Relación señal-distorsión (SDR) en MUSDB18-HQ (50 pistas de test de duración completa, estéreo a 44.1 kHz). Más alto es mejor. Dos tamaños de modelo: HQ (8.9M parámetros por stem) y L (28.3M parámetros por stem).

ObjetivoUMX-HQ (MLX)UMX-L (MLX)UMX-HQ (publicado)
Voces6.23 dB~10.5 dB6.32 dB
Batería6.44 dB~7.0 dB5.73 dB
Bajo4.56 dB~5.5 dB5.23 dB
Otros3.41 dB~4.5 dB4.02 dB
ModeloParám/stemTamañoRTFVelocidad
Open-Unmix HQ8.9M136 MB0.234.3× tiempo real
Open-Unmix L28.3M432 MB0.214.8× tiempo real
Conclusión clave

UMX-HQ iguala al SDR publicado en voces y batería con un modelo ligero de 8.9M. UMX-L aporta entre +2 y +4 dB de mejora al triple del tamaño de modelo. Ambos incluyen post-filtrado EM Wiener multicanal y se ejecutan más rápido que el tiempo real en Apple Silicon.

Reproducción

# 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