Qwen3-ASR
Qwen3-ASR 是一个最先进的多语言自动语音识别模型。它通过 MLX 使用 Metal GPU 加速在端侧运行,并采用 4 位量化以高效利用内存。提供 0.6B 和 1.7B 两种参数规模。
流水线
Qwen3-ASR 推理流水线通过四个阶段处理音频:
| 阶段 | 描述 |
|---|---|
| 音频输入 | 原始音频重采样至 16 kHz 单声道 |
| 梅尔频谱图 | 从波形提取 128 维梅尔滤波器组特征 |
| 音频编码器 | 18 层带块注意力的 transformer,将梅尔帧处理为音频嵌入 |
| 文本解码器 | 28 层 Qwen3 transformer,带分组查询注意力(GQA)和旋转位置编码(RoPE),自回归生成文本 token |
性能
| 后端 | RTF | 峰值内存 | 说明 |
|---|---|---|---|
| Qwen3-ASR 1.7B MLX 8-bit | 0.033 | 2.7 GB | WER 1.52% |
| Qwen3-ASR 0.6B MLX 8-bit | 0.015 | 1.3 GB | WER 1.82% |
| Qwen3-ASR 0.6B MLX 4-bit | 0.012 | 1.0 GB | WER 2.20% |
| Qwen3-ASR 0.6B CoreML INT8 | 0.098 | 1.4 GB | WER 3.02% (chunked-attn rebuild) |
Apple M5 Pro,48 GB。LibriSpeech test-clean n=200,每个引擎独立运行。RTF < 1.0 = 快于实时。
模型变体
| 模型 | 后端 | 大小 | HuggingFace |
|---|---|---|---|
| Qwen3-ASR-0.6B (4-bit) | MLX | 680 MB | aufklarer/Qwen3-ASR-0.6B-MLX-4bit |
| Qwen3-ASR-0.6B (8-bit) | 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-bit) | MLX | 2.1 GB | aufklarer/Qwen3-ASR-1.7B-MLX-4bit |
| Qwen3-ASR-1.7B (8-bit) | MLX | 3.2 GB | aufklarer/Qwen3-ASR-1.7B-MLX-8bit |
CLI 用法
使用默认 Qwen3-ASR 模型转写音频文件:
.build/release/speech transcribe recording.wav
选项
# Use the larger 1.7B model
.build/release/speech transcribe recording.wav --model 1.7b
# Specify language
.build/release/speech transcribe recording.wav --language en
# Streaming mode with partial results
.build/release/speech transcribe recording.wav --stream --partial
Swift API
使用 Qwen3ASR 模块以编程方式转写音频:
import Qwen3ASR
// Load the model (downloads from HuggingFace on first use)
let model = try await Qwen3ASRModel.fromPretrained()
// Transcribe audio samples (16 kHz mono Float)
let text = model.transcribe(audio: audioSamples, sampleRate: 16000)
print(text)
CoreML 编码器(Neural Engine)
通过 CoreML 在 Neural Engine 上运行音频编码器,同时通过 MLX 在 GPU 上运行文本解码器。这种混合方案降低了功耗,并让 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/speech transcribe recording.wav --engine qwen3-coreml
INT8 调色板量化(180 MB,余弦相似度 > 0.999)是默认选项。也提供 INT4 变体(90 MB),适用于对体积敏感的部署。
流式模式
流式模式使用 VAD(语音活动检测)将音频切分成块并逐块转写。这对长录音或实时处理非常有用。
# Stream with default segment size
.build/release/speech transcribe recording.wav --stream
# Control maximum segment duration
.build/release/speech transcribe recording.wav --stream --max-segment 15
# Show partial (in-progress) results as they arrive
.build/release/speech 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。