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 Encoder | Transformer 18 ชั้นพร้อม block attention ประมวลผลเฟรม mel เป็น audio embeddings |
| Text Decoder | Transformer Qwen3 28 ชั้นพร้อม grouped-query attention (GQA) และ rotary position embeddings (RoPE) สร้าง token ข้อความแบบ autoregressive |
ประสิทธิภาพ
| Backend | RTF | หน่วยความจำสูงสุด | หมายเหตุ |
|---|---|---|---|
| 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) | 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
ตัวเลือก
# ใช้โมเดลขนาดใหญ่ 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 ภายในโดยอัตโนมัติ
- WAV — PCM ที่ไม่มีการบีบอัด
- M4A — เสียงที่เข้ารหัสด้วย AAC
- MP3 — MPEG Layer III
- CAF — Apple Core Audio Format
โมเดลถูกดาวน์โหลดจาก HuggingFace ในการใช้งานครั้งแรกและถูกแคชไว้ที่ ~/Library/Caches/qwen3-speech/ โมเดล 0.6B แบบ 4-bit มีขนาดประมาณ 1.5 GB