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비트)MLX680 MBaufklarer/Qwen3-ASR-0.6B-MLX-4bit
Qwen3-ASR-0.6B (8비트)MLX1.0 GBaufklarer/Qwen3-ASR-0.6B-MLX-8bit
Qwen3-ASR-0.6B (CoreML INT8)CoreML180 MBaufklarer/Qwen3-ASR-CoreML
Qwen3-ASR-1.7B (4비트)MLX2.1 GBaufklarer/Qwen3-ASR-1.7B-MLX-4bit
Qwen3-ASR-1.7B (8비트)MLX3.2 GBaufklarer/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 모노로 리샘플링됩니다.

중요

모델은 첫 사용 시 HuggingFace에서 다운로드되어 ~/Library/Caches/qwen3-speech/에 캐시됩니다. 4비트 0.6B 모델은 약 1.5 GB입니다.