Qwen3-ASR
Qwen3-ASR은 최첨단 다언어 자동 음성 인식 모델입니다. MLX를 통한 Metal GPU 가속으로 온디바이스에서 실행되며, 효율적인 메모리 사용을 위해 4비트 양자화를 지원합니다. 0.6B와 1.7B 파라미터 변형으로 제공됩니다.
파이프라인
Qwen3-ASR 추론 파이프라인은 오디오를 4단계로 처리합니다:
| 단계 | 설명 |
|---|---|
| 오디오 입력 | 원본 오디오를 16 kHz 모노로 리샘플링 |
| 멜 스펙트로그램 | 파형에서 128 빈 멜 필터뱅크 특징 추출 |
| 오디오 인코더 | 블록 어텐션을 사용하는 18 레이어 트랜스포머, 멜 프레임을 오디오 임베딩으로 처리 |
| 텍스트 디코더 | 그룹 쿼리 어텐션(GQA)과 로터리 위치 임베딩(RoPE)을 사용하는 28 레이어 Qwen3 트랜스포머, 자동 회귀적으로 텍스트 토큰을 생성 |
성능
| 백엔드 | RTF | 피크 메모리 | 비고 |
|---|---|---|---|
| MLX (GPU) | 약 0.06 | 약 2.2 GB | 기본값, 단일 모델 중 가장 빠름 |
| CoreML + MLX (하이브리드) | 약 0.09 | 약 400 MB (인코더) | 인코더는 Neural Engine에서, 디코더는 GPU에서 실행 |
M2 Max, 64 GB. RTF < 1.0 = 실시간보다 빠름.
모델 변형
| 모델 | 백엔드 | 크기 | HuggingFace |
|---|---|---|---|
| Qwen3-ASR-0.6B (4비트) | MLX | 680 MB | aufklarer/Qwen3-ASR-0.6B-MLX-4bit |
| Qwen3-ASR-0.6B (8비트) | MLX | 1.0 GB | aufklarer/Qwen3-ASR-0.6B-MLX-8bit |
| Qwen3-ASR-0.6B (CoreML INT8) | CoreML | 180 MB | aufklarer/Qwen3-ASR-CoreML |
| Qwen3-ASR-1.7B (4비트) | MLX | 2.1 GB | aufklarer/Qwen3-ASR-1.7B-MLX-4bit |
| Qwen3-ASR-1.7B (8비트) | MLX | 3.2 GB | aufklarer/Qwen3-ASR-1.7B-MLX-8bit |
CLI 사용법
기본 Qwen3-ASR 모델로 오디오 파일을 전사합니다:
.build/release/audio transcribe recording.wav
옵션
# 더 큰 1.7B 모델 사용
.build/release/audio transcribe recording.wav --model 1.7b
# 언어 지정
.build/release/audio transcribe recording.wav --language en
# 부분 결과와 함께 스트리밍 모드
.build/release/audio transcribe recording.wav --stream --partial
Swift API
Qwen3ASR 모듈을 사용하여 프로그래밍 방식으로 오디오를 전사합니다:
import Qwen3ASR
// 모델 로드 (첫 사용 시 HuggingFace에서 다운로드)
let model = try await Qwen3ASRModel.loadFromHub()
// 오디오 파일 전사
let result = try await model.transcribe(audioFile: "recording.wav")
print(result.text)
CoreML 인코더 (Neural Engine)
MLX를 통해 텍스트 디코더를 GPU에서 실행하면서, CoreML을 통해 오디오 인코더를 Neural Engine에서 실행합니다. 이 하이브리드 방식은 전력 소비를 낮추고 동시 작업을 위해 GPU를 해방시킵니다.
import Qwen3ASR
let encoder = try await CoreMLASREncoder.fromPretrained()
let model = try await Qwen3ASRModel.fromPretrained()
let text = try model.transcribe(
audio: samples, sampleRate: 16000,
coremlEncoder: encoder
)
# CLI
.build/release/audio transcribe recording.wav --engine qwen3-coreml
INT8 팔레타이즈(180 MB, 코사인 유사도 > 0.999)가 기본값입니다. 크기 제약이 있는 배포를 위한 INT4 변형(90 MB)도 제공됩니다.
스트리밍 모드
스트리밍 모드는 VAD(음성 활동 감지)를 사용하여 오디오를 청크로 분할하고 점진적으로 전사합니다. 긴 녹음이나 실시간 처리에 유용합니다.
# 기본 세그먼트 크기로 스트리밍
.build/release/audio transcribe recording.wav --stream
# 최대 세그먼트 길이 제어
.build/release/audio transcribe recording.wav --stream --max-segment 15
# 부분(진행 중) 결과가 도착하는 대로 표시
.build/release/audio transcribe recording.wav --stream --partial
--max-segment 플래그는 최대 청크 길이를 초 단위로 제어합니다. --partial 플래그는 디코딩된 단어를 표시하는 부분 결과 출력을 활성화합니다.
지원 포맷
Qwen3-ASR은 다음 오디오 포맷을 수용합니다. 모든 입력은 내부적으로 자동으로 16 kHz 모노로 리샘플링됩니다.
- WAV — 비압축 PCM
- M4A — AAC 인코딩 오디오
- MP3 — MPEG Layer III
- CAF — Apple Core Audio Format
모델은 첫 사용 시 HuggingFace에서 다운로드되어 ~/Library/Caches/qwen3-speech/에 캐시됩니다. 4비트 0.6B 모델은 약 1.5 GB입니다.