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 | 峰值内存 | 说明 |
|---|---|---|---|
| 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-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/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)
通过 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/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。