Qwen3-ASR
Qwen3-ASR là mô hình nhận dạng giọng nói tự động đa ngôn ngữ thuộc hàng tiên tiến nhất hiện nay. Mô hình chạy ngay trên thiết bị với khả năng tăng tốc GPU Metal qua MLX, lượng tử hoá 4-bit để sử dụng bộ nhớ hiệu quả. Có sẵn ở hai biến thể 0.6B và 1.7B tham số.
Pipeline
Pipeline suy luận của Qwen3-ASR xử lý âm thanh qua bốn giai đoạn:
| Giai đoạn | Mô tả |
|---|---|
| Đầu vào âm thanh | Âm thanh thô được lấy mẫu lại về 16 kHz mono |
| Mel Spectrogram | Đặc trưng mel filterbank 128 bin được trích xuất từ dạng sóng |
| Bộ mã hoá âm thanh | Transformer 18 lớp với block attention, xử lý các khung mel thành embedding âm thanh |
| Bộ giải mã văn bản | Transformer Qwen3 28 lớp với grouped-query attention (GQA) và rotary position embeddings (RoPE), sinh token văn bản theo cách tự hồi quy |
Hiệu năng
| Backend | RTF | Bộ nhớ đỉnh | Ghi chú |
|---|---|---|---|
| MLX (GPU) | ~0.06 | ~2.2 GB | Mặc định, mô hình đơn nhanh nhất |
| CoreML + MLX (lai) | ~0.09 | ~400 MB (bộ mã hoá) | Bộ mã hoá trên Neural Engine, bộ giải mã trên GPU |
M2 Max, 64 GB. RTF < 1.0 = nhanh hơn thời gian thực.
Biến thể mô hình
| Mô hình | Backend | Kích thước | 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 |
Sử dụng CLI
Phiên âm một tệp âm thanh bằng mô hình Qwen3-ASR mặc định:
.build/release/speech transcribe recording.wav
Tuỳ chọn
# Dùng mô hình lớn hơn 1.7B
.build/release/speech transcribe recording.wav --model 1.7b
# Chỉ định ngôn ngữ
.build/release/speech transcribe recording.wav --language en
# Chế độ streaming với kết quả từng phần
.build/release/speech transcribe recording.wav --stream --partial
API Swift
Dùng module Qwen3ASR để phiên âm âm thanh từ mã nguồn:
import Qwen3ASR
// Tải mô hình (tải về từ HuggingFace ở lần dùng đầu tiên)
let model = try await Qwen3ASRModel.loadFromHub()
// Phiên âm một tệp âm thanh
let result = try await model.transcribe(audioFile: "recording.wav")
print(result.text)
Bộ mã hoá CoreML (Neural Engine)
Chạy bộ mã hoá âm thanh trên Neural Engine qua CoreML, còn bộ giải mã văn bản chạy trên GPU qua MLX. Cách tiếp cận lai này giúp giảm tiêu thụ điện năng và giải phóng GPU cho các tác vụ chạy song song.
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
Biến thể INT8 palettized (180 MB, độ tương đồng cosine > 0.999) là lựa chọn mặc định. Còn có biến thể INT4 (90 MB) cho các triển khai bị giới hạn về kích thước.
Chế độ streaming
Chế độ streaming dùng VAD (phát hiện hoạt động giọng nói) để chia âm thanh thành các chunk và phiên âm tăng dần. Cách này hữu ích cho bản ghi dài hoặc xử lý thời gian thực.
# Streaming với kích thước segment mặc định
.build/release/speech transcribe recording.wav --stream
# Điều khiển thời lượng tối đa của segment
.build/release/speech transcribe recording.wav --stream --max-segment 15
# Hiển thị kết quả từng phần (đang xử lý) khi chúng đến
.build/release/speech transcribe recording.wav --stream --partial
Cờ --max-segment điều khiển thời lượng tối đa của chunk tính bằng giây. Cờ --partial bật xuất kết quả từng phần, hiển thị các từ khi chúng vừa được giải mã.
Định dạng được hỗ trợ
Qwen3-ASR chấp nhận các định dạng âm thanh sau. Mọi đầu vào đều được tự động lấy mẫu lại về 16 kHz mono ở bên trong.
- WAV — PCM không nén
- M4A — âm thanh mã hoá AAC
- MP3 — MPEG Layer III
- CAF — Apple Core Audio Format
Các mô hình được tải xuống từ HuggingFace ở lần dùng đầu tiên và được lưu cache tại ~/Library/Caches/qwen3-speech/. Mô hình 0.6B ở định dạng 4-bit có dung lượng xấp xỉ 1.5 GB.