Haas-ja-v1.0 Core ML

third-intelligence/Haas-ja-v1.0 を Core ML に変換したものです。 encoder を INT8(重みのみ)にして Apple Neural Engine(ANE) で動かし、iPhone / Mac でオンデバイスの日本語音声認識ができます。 Swift の推論コード(前処理・チャンク分割・TDT デコード・トークナイザ)も同梱しています。

これは非公式の変換で、Third Intelligence が作成・承認したものではありません。学習データ・評価・想定用途は 元のモデルカードを参照してください。

English: Unofficial Core ML conversion of Haas-ja-v1.0 with an INT8 weight-only encoder that runs on the Apple Neural Engine (iOS 17+ / macOS), plus Swift inference code.

結果(MacBook Air M1)

項目 値
全体 RTFx(前処理 + encoder + decode) 約85(RTF 0.0117。encoder 0.0078 / decode 0.0037)
NeMo とのトークン一致(33本) 32/33(違いは1語:「アップザテン」→「アップザテ」)
長い音声の CER(配信 120秒 × 4本) 8.57%(fp32 で区切らず処理したときと同じ)
モデルサイズ 合計 約591 MB
  • RTFx は「音声の長さ ÷ 処理時間」で、85なら1分の音声を約0.7秒で処理します。
  • 参考: 同じ M1 で speech.cpp 0.10.0 の Metal(Q8_0)は全体 RTFx 63、ONNX 版(Rust、int8dyn)は RTFx 26 でした(比較の詳細)。
  • Swift 版は Python 版の Core ML 推論と33本すべてで一致します。
  • iPhone 実機での数字は計測中です。

ファイル

ファイル サイズ 中身 実行先
encoder_T1504_w8.mlpackage 565 MB FastConformer 24層、INT8 重みのみ(per-channel)、15.04秒の固定窓(mel [1,128,1504] + length → [1,1024,188]) ANE
decoder.mlpackage 16 MB KDA 予測ネット + joint の予測側、fp32 CPU
joint_enc.mlpackage 2.5 MB joint の encoder 側
joint.mlpackage 7.5 MB joint 本体 + トークンと duration の argmax

iOS 17 / macOS 14 以降が必要です。

使い方

encoder は15.04秒の固定窓なので、長い音声は窓をずらしながら処理し、各窓の両端2.08秒ずつは捨てて繋ぎます(swift/ と python/haas_coreml.py に実装済み)。

Swift

swift/ に次のものが入っています。

  • HaasCore: Accelerate による log-mel、チャンク分割、TDT 貪欲デコード、トークナイザ
  • haas-cli: コマンドライン版(Mac)

HaasCore は Swift Package なので、iOS アプリにもそのまま組み込めます。

使い方は swift/README.md を参照してください。

Python(macOS)

pip install coremltools numpy soundfile librosa sentencepiece torch onnxruntime
python python/haas_coreml.py audio.wav

作り方

python/ に変換スクリプトがあります。

  • convert.py 1504 → quantize.py: encoder を15.04秒窓で変換し、INT8 重みのみに量子化
  • convert_decoder.py: decoder と joint を変換
  • cmlpatch.py: coremltools 9.0 の不具合の回避
  • validate.py / long_eval.py: 検証
  • 評価スクリプトが使う音声と参照データは同梱していません(再配布できないため)。各自で用意してください。

ほかの形式

リポジトリ 実行系 向いている環境
この Core ML 版 Core ML(ANE)、Swift の推論コード付き iPhone / Mac で最速(M1 で全体 RTFx 約85、RTF 0.0117)
Sanami/haas-ja-onnx ONNX Runtime、tract(Python / Rust の推論コード付き) x86・Mac の CPU
sakasegawa/Haas-ja-v1.0-GGUF speech.cpp(ggml) Mac の Metal、Vulkan、CPU(M1 Metal で RTFx 63、speech.cpp 0.10.0)
oboroge0/Haas-ja-v1.0-onnx、量子化版 sherpa-onnx sherpa-onnx を使うアプリ(CPU)。特徴量は sherpa-onnx 側で計算するので、NeMo と完全には一致しません

ライセンス

重みもコードも Apache-2.0 です(帰属表示は NOTICE)。

  • 重み(*.mlpackage と tokenizer.model): third-intelligence/Haas-ja-v1.0(Apache-2.0)を元にしています。 元のモデルは Third Intelligence によるもので、Sanami が Core ML への変換と量子化という改変を加えています。
  • コード(swift/, python/): Copyright 2026 Sanami。
Downloads last month
61
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Sanami/haas-ja-coreml

Quantized
(8)
this model