Qwen3-ASR
Qwen3-ASRは最先端の多言語自動音声認識モデルです。MLX経由のMetal GPUアクセラレーションを使用してオンデバイスで動作し、効率的なメモリ使用のために4ビット量子化されています。0.6Bと1.7Bパラメーターのバリアントで利用可能です。
パイプライン
Qwen3-ASR推論パイプラインは、音声を4段階で処理します:
| ステージ | 説明 |
|---|---|
| 音声入力 | 生の音声を16 kHzモノラルにリサンプル |
| Melスペクトログラム | 波形から128ビンmelフィルターバンク特徴量を抽出 |
| 音声エンコーダー | ブロックアテンションを備えた18レイヤートランスフォーマー、melフレームを音声embeddingに処理 |
| テキストデコーダー | グループドクエリアテンション (GQA) と回転位置埋め込み (RoPE) を備えた28レイヤーQwen3トランスフォーマー、テキストトークンを自己回帰的に生成 |
パフォーマンス
| バックエンド | 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ビット) | MLX | 680 MB | aufklarer/Qwen3-ASR-0.6B-MLX-4bit |
| Qwen3-ASR-0.6B (8ビット) | 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ビット) | MLX | 2.1 GB | aufklarer/Qwen3-ASR-1.7B-MLX-4bit |
| Qwen3-ASR-1.7B (8ビット) | 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です。