벤치마크
RTF (실시간 계수)가 1.0보다 작으면 실시간보다 빠르다는 의미입니다.
Apple Silicon (MLX + CoreML)
모든 벤치마크는 릴리즈 빌드와 컴파일된 metallib을 사용해 M2 Max, 64 GB, macOS 14에서 측정되었습니다.
ASR — 단어 오류율
LibriSpeech test-clean (2620 발화, 약 5.4시간의 영어 낭독 음성)에서 평가되었습니다.
| 모델 | 비트 | 크기 | WER% | RTF |
|---|---|---|---|---|
| Qwen3-ASR 1.7B | 8비트 | 2.3 GB | 2.35 | 0.090 |
| Qwen3-ASR 1.7B | 4비트 | 1.2 GB | 2.57 | 0.045 |
| Parakeet TDT 0.6B | INT8 | 634 MB | 2.74 | 0.089 |
| Qwen3-ASR 0.6B | 8비트 | 960 MB | 2.80 | 0.025 |
| Qwen3-ASR 0.6B | 4비트 | 675 MB | 3.34 | 0.023 |
공개된 모델과의 비교
| 모델 | 파라미터 | 크기 | 정밀도 | WER% | 출처 |
|---|---|---|---|---|---|
| Qwen3-ASR 1.7B | 1.7B | 2.3 GB | 8비트 | 2.35 | 본 벤치마크 |
| Whisper Large v3 Turbo | 809M | 1.6 GB | FP16 | 2.5 | OpenAI (2024) |
| Qwen3-ASR 1.7B | 1.7B | 1.2 GB | 4비트 | 2.57 | 본 벤치마크 |
| Whisper Large v3 | 1.5B | 3.1 GB | FP16 | 2.7 | OpenAI (2023) |
| Parakeet TDT 0.6B | 600M | 634 MB | INT8 | 2.74 | 본 벤치마크 |
| Qwen3-ASR 0.6B | 600M | 960 MB | 8비트 | 2.80 | 본 벤치마크 |
| Whisper Medium | 769M | 1.5 GB | FP16 | 3.0 | OpenAI (2022) |
| Qwen3-ASR 0.6B | 600M | 675 MB | 4비트 | 3.34 | 본 벤치마크 |
| Whisper Small | 244M | 483 MB | FP16 | 3.4 | OpenAI (2022) |
장시간 안정성 (Neural Engine 지속 부하)
200개의 LibriSpeech 발화를 순차 처리 (약 30분 오디오, M2 Max). 지속적인 전사 환경에서 WER이나 지연이 저하되는지 테스트합니다.
| 지표 | 처음 25% | 마지막 25% | 전체 |
|---|---|---|---|
| WER% | 1.30 | 1.23 | 2.43 |
| RTF | 0.672 | 0.400 | 0.539 |
저하가 감지되지 않습니다. WER은 세션 전체에 걸쳐 안정적입니다. CoreML이 실행 계획 캐시를 워밍업하면서 RTF는 오히려 향상됩니다. 42분간 연속 Neural Engine 추론 후에도 thermal throttling이 발생하지 않았습니다. Parakeet은 각 청크를 독립적으로 처리하므로 청크 간 상태 누적이 없습니다.
다언어 결과 (FLEURS)
CJK 언어에 대해서는 단어 경계가 없으므로 CER을 사용합니다. Parakeet은 약 25개의 유럽어를 지원합니다 (CJK 미지원).
| 언어 | 지표 | Qwen3 4비트 | Qwen3 8비트 | 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비트 | 2.80 | 1111 | 92 | 268 | 1471 | 960 MB |
| Qwen3 0.6B 4비트 | 3.34 | 1323 | 123 | 308 | 1754 | 675 MB |
| 델타 | +0.54 | +212 | +31 | +40 | +283 | -30% |
| Parakeet TDT INT8 | 2.74 | 990 | 125 | 308 | 1423 | 634 MB |
Qwen3-ASR 1.7B 8비트는 2.35% WER을 달성합니다 — Whisper Large v3 Turbo (2.5%)와 Whisper Large v3 (2.7%)를 능가하면서 Apple Silicon에서 실시간의 11배로 실행됩니다.
TTS — 왕복 명료도
텍스트를 합성한 후 Qwen3-ASR 0.6B로 다시 오디오를 전사하고 원본 텍스트와의 WER을 계산합니다. 30개의 내장 영어 대화 문장에서 평가되었습니다.
| 엔진 | 모델 | 파라미터 | 크기 | WER% | RTF |
|---|---|---|---|---|---|
| CosyVoice3 | 0.5B 4비트 | 500M | 약 1.9 GB | 3.25 | 0.59 |
| Qwen3-TTS | 1.7B 4비트 | 1.7B | 약 2.3 GB | 3.47 | 0.79 |
| Qwen3-TTS | 1.7B 8비트 | 1.7B | 약 3.5 GB | 3.66 | 0.85 |
| Kokoro-82M | CoreML | 82M | 약 170 MB | 3.90 | 0.17 |
| Qwen3-TTS | 0.6B 8비트 | 600M | 약 960 MB | 9.74 | 0.76 |
| Qwen3-TTS | 0.6B 4비트 | 600M | 약 675 MB | 15.58 | 0.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 |
|---|---|---|---|---|---|---|
| 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 ms 프레임 해상도로 평가했습니다.
| 엔진 | 파라미터 | 백엔드 | 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는 가장 낮은 거짓 알람률(2.52%)로 FLEURS에서 99.12% F1을 달성하며 실시간의 135배로 실행됩니다. Silero v5는 청크당 32 ms의 최고의 스트리밍 옵션을 제공합니다.
화자 임베딩
추출 지연
20초 오디오 클립, 워밍업 후 10회 반복.
| 모델 | 차원 | 백엔드 | 지연 |
|---|---|---|---|
| CAM++ (3D-Speaker) | 192 | CoreML (ANE) | 12 ms |
| WeSpeaker ResNet34-LM | 256 | MLX (GPU) | 64 ms |
| WeSpeaker ResNet34-LM | 256 | CoreML (ANE) | 143 ms |
임베딩 품질 (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는 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 dB | 6.32 dB |
| 드럼 | 6.44 dB | 약 7.0 dB | 5.73 dB |
| 베이스 | 4.56 dB | 약 5.5 dB | 5.23 dB |
| 기타 | 3.41 dB | 약 4.5 dB | 4.02 dB |
| 모델 | 스템당 파라미터 | 크기 | RTF | 속도 |
|---|---|---|---|---|
| Open-Unmix HQ | 8.9M | 136 MB | 0.23 | 실시간의 4.3배 |
| Open-Unmix L | 28.3M | 432 MB | 0.21 | 실시간의 4.8배 |
UMX-HQ는 경량 8.9M 모델로 보컬과 드럼에서 공개된 SDR과 일치합니다. UMX-L은 모델 크기의 3배로 +2–4 dB 향상을 제공합니다. 둘 모두 multichannel 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