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ビット)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/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モノラルに自動的にリサンプルされます。

重要

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