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
Model tree for Sanami/haas-ja-coreml
Base model
third-intelligence/Haas-ja-v1.0