Qwen3-ASR

Qwen3-ASR เป็นโมเดลการรู้จำเสียงพูดอัตโนมัติหลายภาษาที่ทันสมัยที่สุด ทำงานบนอุปกรณ์โดยใช้การเร่งความเร็ว GPU แบบ Metal ผ่าน MLX พร้อมการควอนไทซ์ 4-bit เพื่อใช้หน่วยความจำอย่างมีประสิทธิภาพ มีให้เลือกสองรุ่นคือ 0.6B และ 1.7B พารามิเตอร์

Pipeline

Pipeline การอนุมานของ Qwen3-ASR ประมวลผลเสียงผ่านสี่ขั้นตอน:

ขั้นตอนคำอธิบาย
อินพุตเสียงเสียงดิบถูกสุ่มตัวอย่างใหม่เป็น 16 kHz mono
Mel Spectrogramคุณลักษณะ mel filterbank แบบ 128 bin สกัดจากรูปคลื่น
Audio EncoderTransformer 18 ชั้นพร้อม block attention ประมวลผลเฟรม mel เป็น audio embeddings
Text DecoderTransformer Qwen3 28 ชั้นพร้อม grouped-query attention (GQA) และ rotary position embeddings (RoPE) สร้าง token ข้อความแบบ autoregressive

ประสิทธิภาพ

BackendRTFหน่วยความจำสูงสุดหมายเหตุ
MLX (GPU)~0.06~2.2 GBค่าเริ่มต้น โมเดลเดี่ยวที่เร็วที่สุด
CoreML + MLX (ไฮบริด)~0.09~400 MB (encoder)Encoder บน Neural Engine, decoder บน GPU

M2 Max, 64 GB. RTF < 1.0 = เร็วกว่าเรียลไทม์

รุ่นของโมเดล

โมเดลBackendขนาด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/speech transcribe recording.wav

ตัวเลือก

# ใช้โมเดลขนาดใหญ่ 1.7B
.build/release/speech transcribe recording.wav --model 1.7b

# ระบุภาษา
.build/release/speech transcribe recording.wav --language en

# โหมดสตรีมมิ่งพร้อมผลลัพธ์บางส่วน
.build/release/speech transcribe recording.wav --stream --partial

API ของ Swift

ใช้โมดูล Qwen3ASR เพื่อถอดเสียงจากโค้ด:

import Qwen3ASR

// โหลดโมเดล (ดาวน์โหลดจาก HuggingFace ในการใช้งานครั้งแรก)
let model = try await Qwen3ASRModel.loadFromHub()

// ถอดเสียงจากไฟล์เสียง
let result = try await model.transcribe(audioFile: "recording.wav")
print(result.text)

CoreML Encoder (Neural Engine)

รัน audio encoder บน Neural Engine ผ่าน CoreML ส่วน text decoder รันบน GPU ผ่าน MLX วิธีไฮบริดนี้ช่วยลดการใช้พลังงานและปลดปล่อย 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 palettized (180 MB, cosine similarity > 0.999) เป็นค่าเริ่มต้น ส่วนรุ่น INT4 (90 MB) มีให้ใช้สำหรับการดีพลอยที่จำกัดขนาด

โหมดสตรีมมิ่ง

โหมดสตรีมมิ่งใช้ VAD (การตรวจจับกิจกรรมเสียงพูด) เพื่อตัดเสียงออกเป็นช่วง ๆ และถอดเสียงทีละส่วน เหมาะกับการบันทึกเสียงยาว ๆ หรือการประมวลผลแบบเรียลไทม์

# สตรีมด้วยขนาด segment ค่าเริ่มต้น
.build/release/speech transcribe recording.wav --stream

# ควบคุมระยะเวลาสูงสุดของ segment
.build/release/speech transcribe recording.wav --stream --max-segment 15

# แสดงผลลัพธ์บางส่วน (กำลังประมวลผล) เมื่อพร้อม
.build/release/speech transcribe recording.wav --stream --partial

แฟล็ก --max-segment ควบคุมระยะเวลาสูงสุดของ chunk เป็นวินาที แฟล็ก --partial เปิดการแสดงผลลัพธ์บางส่วน โดยแสดงคำตามที่ถูกถอดออกมา

ฟอร์แมตที่รองรับ

Qwen3-ASR รองรับฟอร์แมตเสียงต่อไปนี้ ทุกอินพุตจะถูกสุ่มตัวอย่างใหม่เป็น 16 kHz mono ภายในโดยอัตโนมัติ

ข้อสำคัญ

โมเดลถูกดาวน์โหลดจาก HuggingFace ในการใช้งานครั้งแรกและถูกแคชไว้ที่ ~/Library/Caches/qwen3-speech/ โมเดล 0.6B แบบ 4-bit มีขนาดประมาณ 1.5 GB