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ピークメモリ備考
Qwen3-ASR 1.7B MLX 8-bit0.0332.7 GBWER 1.52%
Qwen3-ASR 0.6B MLX 8-bit0.0151.3 GBWER 1.82%
Qwen3-ASR 0.6B MLX 4-bit0.0121.0 GBWER 2.20%
Qwen3-ASR 0.6B CoreML INT80.0981.4 GBWER 3.02% (chunked-attn rebuild)

Apple M5 Pro、48 GB。LibriSpeech test-clean n=200、エンジンごとに分離。RTF < 1.0 = リアルタイムより高速。

モデルバリアント

モデルバックエンドサイズHuggingFace
Qwen3-ASR-0.6B (4ビット)MLX680 MBaufklarer/Qwen3-ASR-0.6B-MLX-4bit
Qwen3-ASR-0.6B (8ビット)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ビット)MLX2.1 GBaufklarer/Qwen3-ASR-1.7B-MLX-4bit
Qwen3-ASR-1.7B (8ビット)MLX3.2 GBaufklarer/Qwen3-ASR-1.7B-MLX-8bit

CLIの使用法

デフォルトのQwen3-ASRモデルで音声ファイルを文字起こしします:

.build/release/speech transcribe recording.wav

オプション

# Use the larger 1.7B model
.build/release/speech transcribe recording.wav --model 1.7b

# Specify language
.build/release/speech transcribe recording.wav --language en

# Streaming mode with partial results
.build/release/speech transcribe recording.wav --stream --partial

Swift API

プログラム的に音声を文字起こしするにはQwen3ASRモジュールを使用します:

import Qwen3ASR

// Load the model (downloads from HuggingFace on first use)
let model = try await Qwen3ASRModel.fromPretrained()

// Transcribe audio samples (16 kHz mono Float)
let text = model.transcribe(audio: audioSamples, sampleRate: 16000)
print(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/speech transcribe recording.wav --engine qwen3-coreml

INT8パレット化(180 MB、コサイン類似度 > 0.999)がデフォルトです。サイズ制約のあるデプロイメント向けにINT4バリアント(90 MB)も利用可能です。

ストリーミングモード

ストリーミングモードは、VAD(音声区間検出)を使用して音声をチャンクにセグメント化し、それらを段階的に文字起こしします。長時間の録音やリアルタイム処理に有用です。

# Stream with default segment size
.build/release/speech transcribe recording.wav --stream

# Control maximum segment duration
.build/release/speech transcribe recording.wav --stream --max-segment 15

# Show partial (in-progress) results as they arrive
.build/release/speech transcribe recording.wav --stream --partial

--max-segmentフラグは、チャンクの最大継続時間を秒単位で制御します。--partialフラグは、部分結果出力を有効にして、デコードされる単語を表示します。

サポート形式

Qwen3-ASRは以下の音声形式を受け付けます。すべての入力は内部で16 kHzモノラルに自動的にリサンプルされます。

重要

モデルは初回使用時にHuggingFaceからダウンロードされ、~/Library/Caches/qwen3-speech/にキャッシュされます。4ビット0.6Bモデルは約1.5 GBです。