Mattt、Apple向けSwiftパッケージAnySpeechRecognizerとAnyDecisionModelを公開

スペック

重みの公開Hugging Face Hubで公開されたCore MLモデルおよびオープンモデル
配布形式・量子化Core ML(音声モデル);AnyDecisionModelはMLX、Core AI、llama.cppなどのバックエンドに対応

メモリの目安はパラメータ数×0.6バイトの概算で、実際はコンテキスト長と実装で変わります

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など、エンジンの追加を予定しています。

この記事の固有名詞

コメント (0)

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

コメントを書く

2000文字以内