Бенчмарки

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 часа английской чтецкой речи).

EngineQuantWER%RTFxRTPeak RSS
Qwen3-ASR 1.7B MLX5-bit1.320.02736.4×1.92 GB
Qwen3-ASR 1.7B MLX8-bit1.520.03330.5×2.7 GB
Qwen3-ASR 0.6B MLX8-bit1.820.01566.0×1.3 GB
Qwen3-ASR 0.6B MLX5-bit1.740.01470.5×1.03 GB
WhisperKit Large-v3 TurboFP161.710.08411.9×0.4 GB
WhisperASR native CoreMLFP161.400.08914.0×384 MB
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

Главные выводы: Qwen3-ASR MLX 1.7B 5-bit стал новым лидером точности с 1.32% WER: лучше WhisperKit Large-v3 Turbo (1.71%) и нашего 1.7B 8-bit (1.52%), при этом использует примерно на 600 MB меньше peak RSS и работает на 23% быстрее. Parakeet TDT v3 самый быстрый для английского (117× realtime, 25 европейских языков). Omnilingual CTC 300M MLX 4-bit лидирует по мультиязычной пропускной способности: 222× realtime, 384 MB peak, 1 672 языка.

Строка Qwen3-ASR 0.6B CoreML отражает пересобранный chunked block-attention encoder (aufklarer/Qwen3-ASR-CoreML). Предыдущий экспорт запускал unmasked global self-attention по zero-padded mel и выдавал <|im_end|> сразу после первой точки в конце предложения (24.88% WER на том же fixture до rebuild).

Устойчивость на длинных записях (непрерывная нагрузка на Neural Engine)

200 высказываний LibriSpeech обработаны последовательно (~30 мин аудио, M5 Pro). Проверка, деградирует ли WER или задержка при непрерывной транскрипции.

МетрикаПервые 25%Последние 25%Всего
WER%1.301.232.43
RTF0.6720.4000.539

Деградация не обнаружена. WER стабилен на протяжении сессии. RTF даже улучшается по мере прогрева кеша плана выполнения CoreML. Без теплового троттлинга после 42 минут непрерывного инференса на Neural Engine. Parakeet обрабатывает каждый чанк независимо — без накопления состояния между чанками.

Многоязычные результаты (FLEURS)

CER используется для языков CJK (без границ слов). 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 МБ
Qwen3 0.6B 4-bit3.3413231233081754675 МБ
Дельта+0.54+212+31+40+283-30%
Parakeet TDT INT82.749901253081423634 МБ
Главный вывод

Qwen3-ASR 1.7B MLX достигает 1.32% WER в 5-bit (1.52% в 8-bit), обходит WhisperKit Large-v3 Turbo (1.71%) и работает на Apple Silicon со скоростью 30-36× realtime.

TTS — разборчивость круговой проверки

Синтезировать текст, затем транскрибировать аудио обратно через Qwen3-ASR 0.6B и вычислить WER относительно исходного текста. Оценено на 30 встроенных английских диалоговых фразах.

ДвижокМодельПараметрыРазмерWER%RTF
CosyVoice30.5B 4-bit500M~1.9 ГБ3.250.59
Qwen3-TTS1.7B 4-bit1.7B~2.3 ГБ3.470.79
Qwen3-TTS1.7B 8-bit1.7B~3.5 ГБ3.660.85
Kokoro-82MCoreML82M~170 МБ3.900.17
Qwen3-TTS0.6B 8-bit600M~960 МБ9.740.76
Qwen3-TTS0.6B 4-bit600M~675 МБ15.580.76

Разбивка задержки (Qwen3-TTS)

ЭтапВремя% от общегоОписание
Embed1-3 мс<1%Эмбеддинг текста (TTFT)
Generate2-6 с~92%Авторегрессивные codec-токены
Decode244-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
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 мс.

ДвижокПараметрыБэкенд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 достигает 99.12% F1 на FLEURS с наименьшей частотой ложных срабатываний (2.52%) и работает в 135 раз быстрее реального времени. Silero v5 — лучший вариант для потокового режима при 32 мс на чанк.

Эмбеддинги спикеров

Задержка извлечения

Аудиоклип 20 секунд, 10 итераций после прогрева.

МодельDimБэкендЗадержка
CAM++ (3D-Speaker)192CoreML (ANE)12 мс
WeSpeaker ResNet34-LM256MLX (GPU)64 мс
WeSpeaker ResNet34-LM256CoreML (ANE)143 мс

Качество эмбеддингов (VoxConverse)

Косинусное сходство между сегментными эмбеддингами из 5 многоспикерных записей. Большая разделимость = лучшее различение спикеров.

МодельБэкендВнутри спикераМежду спикерамиРазделимость
WeSpeakerMLX0.7260.1420.584
WeSpeakerCoreML0.7260.1430.582
CAM++CoreML0.7230.3950.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 HQ8.9M136 МБ0.234.3x быстрее реального времени
Open-Unmix L28.3M432 МБ0.214.8x быстрее реального времени
Главный вывод

UMX-HQ совпадает с опубликованным SDR по вокалу и ударным при лёгкой модели 8.9M. UMX-L даёт улучшение +2–4 дБ при размере в 3 раза большем. Обе включают многоканальную пост-фильтрацию Wiener EM и работают быстрее реального времени на Apple Silicon.

Android — на устройстве (Galaxy S23)

Измерено на Samsung Galaxy S23 (SM-S918B), arm64, только CPU, INT8 где указано. RTF — это время ÷ аудио (ниже = быстрее реального времени; <1.0 = реальное время); Peak RSS — резидентная память работающей модели. STT использует 20-секундный клип; TTS показывает RTF или время до первого звука (TTFA).

ModelTaskRuntimeSpeedPeak RSS
Parakeet-EOU 120MStreaming STT + EOUONNX INT80.21 RTF232 MB
Omnilingual CTC 300MMultilingual STTLiteRT0.15 RTF831 MB
Nemotron Streaming 0.6BStreaming STTLiteRT0.67 RTF1.30 GB
Parakeet-TDT 0.6BSTT (batch)ONNX INT80.082 RTF1.15 GB
Supertonic-3 99MTTS (preset voice)LiteRT0.34 RTF · ~1.1 s TTFA832 MB
Kokoro-82MTTS (preset voice)ONNX FP320.53 RTF640 MB

Итог: Parakeet-EOU-120M — самый лёгкий STT здесь, ~232 МБ: многоязычный (25 европейских языков), потоковый, со встроенным детектированием конца реплики, примерно в 5–6× меньше, чем Parakeet 0.6B. Отключение CPU-арены памяти ONNX (теперь по умолчанию) снизило Parakeet-TDT с ~1.34 ГБ до ~1.15 ГБ.

Воспроизведение

# 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