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)MLX680 MBaufklarer/Qwen3-ASR-0.6B-MLX-4bit
Qwen3-ASR-0.6B (8-bit)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-bit)MLX2.1 GBaufklarer/Qwen3-ASR-1.7B-MLX-4bit
Qwen3-ASR-1.7B (8-bit)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)

通过 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 单声道。

重要

模型在首次使用时从 HuggingFace 下载,并缓存到 ~/Library/Caches/qwen3-speech/。4 位 0.6B 模型约为 1.5 GB。