Бенчмарки
RTF (real-time factor) ниже 1.0 означает быстрее реального времени.
Apple Silicon (MLX + CoreML)
Все бенчмарки на Apple M5 Pro, 48 ГБ, macOS 25.5, сборка release и скомпилированный metallib.
ASR — Word Error Rate
Оценено на LibriSpeech test-clean (2620 высказываний, ~5.4 часа английской чтецкой речи).
| 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).
Устойчивость на длинных записях (непрерывная нагрузка на 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 обрабатывает каждый чанк независимо — без накопления состояния между чанками.
Многоязычные результаты (FLEURS)
CER используется для языков CJK (без границ слов). 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 МБ |
| Qwen3 0.6B 4-bit | 3.34 | 1323 | 123 | 308 | 1754 | 675 МБ |
| Дельта | +0.54 | +212 | +31 | +40 | +283 | -30% |
| Parakeet TDT INT8 | 2.74 | 990 | 125 | 308 | 1423 | 634 МБ |
Qwen3-ASR 1.7B 8-bit достигает 2.35% WER — превосходит Whisper Large v3 Turbo (2.5%) и Whisper Large v3 (2.7%), работая при этом в 11 раз быстрее реального времени на Apple Silicon.
TTS — разборчивость круговой проверки
Синтезировать текст, затем транскрибировать аудио обратно через Qwen3-ASR 0.6B и вычислить WER относительно исходного текста. Оценено на 30 встроенных английских диалоговых фразах.
| Движок | Модель | Параметры | Размер | WER% | RTF |
|---|---|---|---|---|---|
| CosyVoice3 | 0.5B 4-bit | 500M | ~1.9 ГБ | 3.25 | 0.59 |
| Qwen3-TTS | 1.7B 4-bit | 1.7B | ~2.3 ГБ | 3.47 | 0.79 |
| Qwen3-TTS | 1.7B 8-bit | 1.7B | ~3.5 ГБ | 3.66 | 0.85 |
| Kokoro-82M | CoreML | 82M | ~170 МБ | 3.90 | 0.17 |
| Qwen3-TTS | 0.6B 8-bit | 600M | ~960 МБ | 9.74 | 0.76 |
| Qwen3-TTS | 0.6B 4-bit | 600M | ~675 МБ | 15.58 | 0.76 |
Разбивка задержки (Qwen3-TTS)
| Этап | Время | % от общего | Описание |
|---|---|---|---|
| Embed | 1-3 мс | <1% | Эмбеддинг текста (TTFT) |
| Generate | 2-6 с | ~92% | Авторегрессивные codec-токены |
| Decode | 244-457 мс | ~8% | Codec-декодер в waveform |
Все TTS-движки работают быстрее реального времени (RTF < 1.0). CosyVoice3 лидирует по разборчивости (3.25% WER). Kokoro — самый быстрый (RTF 0.17) при размере всего 170 МБ.
VAD — точность детекции
Оценка на FLEURS (10 языков, 250 файлов)
Оценено относительно референса Python FireRedVAD при одном и том же пороге.
| Движок | Параметры | Бэкенд | 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 мс.
| Движок | Параметры | Бэкенд | 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 достигает 99.12% F1 на FLEURS с наименьшей частотой ложных срабатываний (2.52%) и работает в 135 раз быстрее реального времени. Silero v5 — лучший вариант для потокового режима при 32 мс на чанк.
Эмбеддинги спикеров
Задержка извлечения
Аудиоклип 20 секунд, 10 итераций после прогрева.
| Модель | Dim | Бэкенд | Задержка |
|---|---|---|---|
| CAM++ (3D-Speaker) | 192 | CoreML (ANE) | 12 мс |
| WeSpeaker ResNet34-LM | 256 | MLX (GPU) | 64 мс |
| WeSpeaker ResNet34-LM | 256 | CoreML (ANE) | 143 мс |
Качество эмбеддингов (VoxConverse)
Косинусное сходство между сегментными эмбеддингами из 5 многоспикерных записей. Большая разделимость = лучшее различение спикеров.
| Модель | Бэкенд | Внутри спикера | Между спикерами | Разделимость |
|---|---|---|---|---|
| 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 достигает 0.584 разделимости как на MLX, так и на CoreML. CAM++ работает в 5 раз быстрее (12 мс против 65 мс) с хорошей разделимостью (0.328).
Разделение источников — SDR
Signal-to-Distortion Ratio (SDR) на MUSDB18-HQ (50 полнометражных тестовых треков, стерео 44.1 кГц). Больше — лучше. Два размера модели: HQ (8.9M параметров/стем) и L (28.3M параметров/стем).
| Цель | UMX-HQ (MLX) | UMX-L (MLX) | UMX-HQ (опубликованный) |
|---|---|---|---|
| Вокал | 6.23 дБ | ~10.5 дБ | 6.32 дБ |
| Ударные | 6.44 дБ | ~7.0 дБ | 5.73 дБ |
| Бас | 4.56 дБ | ~5.5 дБ | 5.23 дБ |
| Прочее | 3.41 дБ | ~4.5 дБ | 4.02 дБ |
| Модель | Параметры/стем | Размер | RTF | Скорость |
|---|---|---|---|---|
| Open-Unmix HQ | 8.9M | 136 МБ | 0.23 | 4.3x быстрее реального времени |
| Open-Unmix L | 28.3M | 432 МБ | 0.21 | 4.8x быстрее реального времени |
UMX-HQ совпадает с опубликованным SDR по вокалу и ударным при лёгкой модели 8.9M. UMX-L даёт улучшение +2–4 дБ при размере в 3 раза большем. Обе включают многоканальную пост-фильтрацию Wiener EM и работают быстрее реального времени на Apple Silicon.
Воспроизведение
# ASR-бенчмарки (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 (FLEURS, авто-загрузка)
python scripts/benchmark_asr.py --dataset fleurs --language en_us --batch
# Круговая проверка TTS
python scripts/benchmark_tts.py --compare
# Сравнение VAD
python scripts/benchmark_vad.py --compare
# Сравнение эмбеддингов спикеров
python scripts/benchmark_speaker.py --compare
# Разделение источников (MUSDB18-HQ, скачайте с Zenodo)
python scripts/benchmark_separation.py --data-dir benchmarks/data/musdb18-hq