Matttは2026年10月29日、Hugging Face Blogで、Appleプラットフォーム向けSwiftパッケージ「AnySpeechRecognizer」と「AnyDecisionModel」を発表しました。AnySpeechRecognizerはNVIDIAのParakeetで1時間の音声ファイルを約20〜40秒で文字起こしでき(M4 Max Mac Studioでの測定)、両パッケージともHugging Face Hubのオープンモデルを端末上で実行します。
何が新しいか
AnySpeechRecognizerは、AppleのSpeechAnalyzer、SpeechTranscriber、DictationTranscriber、SpeechDetector、AssetInventoryを模したAPIを提供し、Apple標準エンジンに加えてNVIDIAのParakeetとAlibabaのQwen3-ASRをCore MLで実行できます。Apple標準のSpeech frameworkにない話者ダイアライゼーションも追加し、文字起こしの各単語を話者に割り当てられます。
AnyDecisionModelは、テキスト生成結果を解析する代わりに、許可された回答候補のモデル確率から二択・多肢選択・評価尺度の結果と信頼度を返します。バックエンドはMLX、Core AI、llama.cpp、Jev、Ollamaに対応します。
音声モデルの仕様と性能
| モデル | 特徴 | ダウンロード容量 |
|---|---|---|
| Parakeet v3(Parakeet TDT 0.6B v3) | 欧州25言語、言語自動判定 | 約600 MB |
| Parakeet Ultra | Moondreamによるv3の追加学習版 | 約600 MB |
| Parakeet Unified | 英語専用 | 約600 MB |
| Parakeetライブ用エンコーダー | 8秒単位、ライブ解析時間を約1/3短縮 | 約590 MB |
| Qwen3-ASR(0.6B / 1.7B) | 30言語・中国語方言22種、日本語・広東語に対応 | 0.9〜2.4 GB |
| Streaming Sortformer(v2 / v2.1) | 話者ダイアライゼーション、最大4人 | 約250 MB |
Parakeetはファイル・ライブ入力、暫定結果、単語タイミング、単語信頼度に対応します。Qwen3-ASRは最大40秒のセグメントごとに最終結果を1つ返し、暫定結果・単語タイミング・信頼度はありません。GPUで動作しParakeetより遅いため、ライブよりファイル文字起こし向きです。
M4 Max Mac Studio(macOS 27.0.1)でhearコマンドを使い、LibriSpeechの3〜8分のファイルで測定した単語誤り率は次の通りです。
| Transcriber | test-clean | test-other |
|---|---|---|
| Parakeet v3, file | 1.55% | 2.78% |
| Parakeet v3, live | 4.73% | 4.29% |
| Parakeet Ultra, file | 1.66% | 2.55% |
| Parakeet Ultra, live | 2.65% | 3.28% |
| Parakeet Unified, file | 1.43% | 2.19% |
| Parakeet Unified, live | 1.45% | 2.42% |
| Apple's transcriber, file | 2.12% | 3.97% |
Parakeetはライブで1時間を約1.5〜2.5分で処理し、Core MLコンパイル後のメモリは約100 MBです。Qwen3-ASRははるかに遅く、数GBのメモリを要します。話者が重なるAMIの会議音声では、全エンジンの単語誤り率が23%を超えました。原文は、1台のマシンと一部データセットでの測定であり、各自のハードウェアと音声で測るよう述べています。検証済みはmacOS 27のみで、iPhoneは未検証です。
試し方
AnySpeechRecognizerはimportをimport Speechからimport AnySpeechRecognizerに変えるだけで、共有APIを使うコードはそのまま動きます。エンジンの切り替えはSpeechTranscriberの作成部分のみ変更します。
- Parakeet:
model: ParakeetSpeechModel(variant: .v3) - Qwen3-ASR:
QwenSpeechModel(variant: .large, language: Locale.Language(identifier: "yue")) - 話者ダイアライゼーション:
SpeakerDiarizer(model: SortformerDiarizationModel())を作成し、transcriberとともにSpeechAnalyzer(modules: [transcriber, diarizer])へ渡す
モデルはアプリが要求した時だけHugging Face Hubからダウンロードし、標準のHugging Faceキャッシュに保存します。Core ML変換版はmattt/parakeet-tdt-0.6b-v3-coreml、mattt/qwen3-asr-1.7b-coremlなどのリポジトリで公開しています。
AnyDecisionModelではDecisionSessionを作り、probability(of:)、choice(_:from:)、score(_:levels:)で判定します。MLXの例ではMLXDecisionModel(modelID: "mlx-community/Qwen3-4B-Instruct-2507-4bit")を指定します。デモアプリEmoji Magnetは343個の絵文字それぞれに二択質問を投げ、入力フレーズに合う絵文字を浮かび上がらせます。
背景
Hugging Faceは機械学習の共同開発基盤Hugging Face Hubを提供する企業です。原文によると、両パッケージはAnyLanguageModelとswift-huggingfaceが1.xに達したことを受け、同じ「なじみのあるSwift APIとモデルの選択」の方針を音声と判定に広げたものです。今後はmacOS 27・iOS 27のCore AIなど、エンジンの追加を予定しています。

まだコメントはありません。