벤치마크

RTF (실시간 계수)가 1.0보다 작으면 실시간보다 빠르다는 의미입니다.

Apple Silicon (MLX + CoreML)

모든 벤치마크는 릴리즈 빌드와 컴파일된 metallib을 사용해 Apple M5 Pro, 48 GB, macOS 25.5에서 측정되었습니다.

ASR — 단어 오류율

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로 새로운 정확도 1위입니다. WhisperKit Large-v3 Turbo(1.71%)와 자체 1.7B 8-bit(1.52%)를 앞서며, 8-bit보다 피크 RSS를 약 600 MB 덜 쓰고 23% 더 빠릅니다. Parakeet TDT v3는 영어 전용에서 가장 빠릅니다(실시간 117×, 유럽 25개 언어). Omnilingual CTC 300M MLX 4-bit는 다국어 처리량 리더로, 실시간 222×, 피크 384 MB, 1 672개 언어를 지원합니다.

Qwen3-ASR 0.6B CoreML 행은 재구축된 chunked block-attention 인코더(aufklarer/Qwen3-ASR-CoreML)를 반영합니다. 이전 export는 zero-padding된 mel에 마스크 없는 전역 self-attention을 적용했고, 첫 문장 끝 마침표 직후 <|im_end|>를 출력했습니다(같은 fixture에서 재구축 전 24.88% WER).

장시간 안정성 (Neural Engine 지속 부하)

200개의 LibriSpeech 발화를 순차 처리 (약 30분 오디오, M5 Pro). 지속적인 전사 환경에서 WER이나 지연이 저하되는지 테스트합니다.

지표처음 25%마지막 25%전체
WER%1.301.232.43
RTF0.6720.4000.539

저하가 감지되지 않습니다. WER은 세션 전체에 걸쳐 안정적입니다. CoreML이 실행 계획 캐시를 워밍업하면서 RTF는 오히려 향상됩니다. 42분간 연속 Neural Engine 추론 후에도 thermal throttling이 발생하지 않았습니다. Parakeet은 각 청크를 독립적으로 처리하므로 청크 간 상태 누적이 없습니다.

다언어 결과 (FLEURS)

CJK 언어에 대해서는 단어 경계가 없으므로 CER을 사용합니다. Parakeet은 약 25개의 유럽어를 지원합니다 (CJK 미지원).

언어지표Qwen3 4비트Qwen3 8비트Parakeet 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비트2.801111922681471960 MB
Qwen3 0.6B 4비트3.3413231233081754675 MB
델타+0.54+212+31+40+283-30%
Parakeet TDT INT82.749901253081423634 MB
핵심 요약

Qwen3-ASR 1.7B MLX는 5-bit에서 1.32% WER(8-bit는 1.52%)를 달성해 WhisperKit Large-v3 Turbo(1.71%)를 앞서며 Apple Silicon에서 실시간 30-36×로 실행됩니다.

TTS — 왕복 명료도

텍스트를 합성한 후 Qwen3-ASR 0.6B로 다시 오디오를 전사하고 원본 텍스트와의 WER을 계산합니다. 30개의 내장 영어 대화 문장에서 평가되었습니다.

엔진모델파라미터크기WER%RTF
CosyVoice30.5B 4비트500M약 1.9 GB3.250.59
Qwen3-TTS1.7B 4비트1.7B약 2.3 GB3.470.79
Qwen3-TTS1.7B 8비트1.7B약 3.5 GB3.660.85
Kokoro-82MCoreML82M약 170 MB3.900.17
Qwen3-TTS0.6B 8비트600M약 960 MB9.740.76
Qwen3-TTS0.6B 4비트600M약 675 MB15.580.76

지연 분석 (Qwen3-TTS)

단계시간전체 비중설명
임베드1-3 ms<1%텍스트 임베딩 (TTFT)
생성2-6 s약 92%자기회귀 코덱 토큰
디코딩244-457 ms약 8%코덱 디코더에서 파형으로
핵심 요약

모든 TTS 엔진이 실시간보다 빠르게 실행됩니다 (RTF < 1.0). CosyVoice3가 명료도(3.25% WER)에서 선두입니다. Kokoro는 단 170 MB로 가장 빠릅니다 (RTF 0.17).

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 ms 프레임 해상도로 평가했습니다.

엔진파라미터백엔드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는 가장 낮은 거짓 알람률(2.52%)로 FLEURS에서 99.12% F1을 달성하며 실시간의 135배로 실행됩니다. Silero v5는 청크당 32 ms의 최고의 스트리밍 옵션을 제공합니다.

화자 임베딩

추출 지연

20초 오디오 클립, 워밍업 후 10회 반복.

모델차원백엔드지연
CAM++ (3D-Speaker)192CoreML (ANE)12 ms
WeSpeaker ResNet34-LM256MLX (GPU)64 ms
WeSpeaker ResNet34-LM256CoreML (ANE)143 ms

임베딩 품질 (VoxConverse)

5개의 다화자 녹음에서 세그먼트 수준 임베딩 간 코사인 유사도. 분리도가 높을수록 화자 구별이 더 우수합니다.

모델백엔드화자 내화자 간분리도
WeSpeakerMLX0.7260.1420.584
WeSpeakerCoreML0.7260.1430.582
CAM++CoreML0.7230.3950.328
핵심 요약

세 엔진 모두 Python pyannote 레퍼런스 (분리도 0.577, 코사인 유사도 >0.96)와 일치합니다. WeSpeaker는 MLX와 CoreML 모두에서 0.584의 분리도를 달성합니다. CAM++는 양호한 분리도(0.328)를 유지하면서 5배 더 빠르게 (12 ms 대 65 ms) 실행됩니다.

소스 분리 — SDR

MUSDB18-HQ (50개의 풀 길이 테스트 트랙, 스테레오 44.1kHz)에서의 신호 대 왜곡비(SDR). 높을수록 좋습니다. 두 모델 크기: HQ (스템당 8.9M 파라미터)와 L (스템당 28.3M 파라미터).

대상UMX-HQ (MLX)UMX-L (MLX)UMX-HQ (논문)
보컬6.23 dB약 10.5 dB6.32 dB
드럼6.44 dB약 7.0 dB5.73 dB
베이스4.56 dB약 5.5 dB5.23 dB
기타3.41 dB약 4.5 dB4.02 dB
모델스템당 파라미터크기RTF속도
Open-Unmix HQ8.9M136 MB0.23실시간의 4.3배
Open-Unmix L28.3M432 MB0.21실시간의 4.8배
핵심 요약

UMX-HQ는 경량 8.9M 모델로 보컬과 드럼에서 공개된 SDR과 일치합니다. UMX-L은 모델 크기의 3배로 +2–4 dB 향상을 제공합니다. 둘 모두 multichannel Wiener EM 후처리 필터링을 포함하며 Apple Silicon에서 실시간보다 빠르게 실행됩니다.

Android — 온디바이스(Galaxy S23)

삼성 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은 약 232 MB로 여기서 가장 가벼운 STT입니다. 다국어(유럽 25개 언어), 스트리밍, 발화 종료 감지 내장으로 0.6B Parakeet보다 약 5–6× 가볍습니다. ONNX의 CPU 메모리 아레나 비활성화(현재 기본값)로 Parakeet-TDT가 약 1.34 GB에서 약 1.15 GB로 줄었습니다.

재현

# 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