Instructions to use ayousanz/kodama-ja-streaming-small with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use ayousanz/kodama-ja-streaming-small with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("automatic-speech-recognition", model="ayousanz/kodama-ja-streaming-small")# Load model directly from transformers import AutoProcessor, AutoModelForSpeechSeq2Seq processor = AutoProcessor.from_pretrained("ayousanz/kodama-ja-streaming-small") model = AutoModelForSpeechSeq2Seq.from_pretrained("ayousanz/kodama-ja-streaming-small", device_map="auto") - Notebooks
- Google Colab
- Kaggle
kodama-ja-streaming-small
kodama(谺/木霊)= 反響・こだま。An independent name; "kodama" means "echo" in Japanese.
日本語ストリーミング音声認識(ASR)モデル。moonshine-ai/moonshine-streaming-small(MIT・英語)を
ReazonSpeech v2 の全量 35,000 時間でフルファインチューニングしたものです。
CPU オフライン動作・低遅延ストリーミングを想定し、ONNX / ORT の deploy 資産(324MB)を同梱しています。
これは独立したモデルであり、Moonshine AI / Useful Sensors, Inc. の製品でも公認モデルでもありません。 公式日本語 Moonshine(
moonshine-tiny-ja/moonshine-base-ja)およびその変換・量子化派生は、 初期重み・tokenizer・decoder 重みのいずれにも一切使っていません(ベンチマーク比較にのみ使用)。 詳細は NOTICE を参照してください。
English summary
A Japanese streaming ASR model, full fine-tuned from moonshine-ai/moonshine-streaming-small
(MIT, English) on 35,000 hours of ReazonSpeech v2. Ships with ONNX/ORT deploy graphs (324 MB)
for CPU on-device, low-latency use.
Where it is strong (offline CER, paired bootstrap CI, matched n):
- Beats
vosk-model-small-ja-0.22(48 MB) on all 6 evaluated sets by 34-38 % relative, and reaches its first partial result about 5.3x sooner. - Beats
vosk-model-ja-0.22(1 GB) on 5 of 6 sets at 1/3 the size. - Beats the official
moonshine-base-jaon emotional/character speech and dialogue (JVNV, SpeechBSD) by 16-43 % relative.
Where it is weak - please read before adopting:
- Noise is the biggest weakness (+0.1033 CER vs
moonshine-base-jaat SNR 10 dB). - Worse than
moonshine-base-jaon general-purpose speech (FLEURS), short utterances, and proper nouns. This is not a general-purpose replacement. - Streaming costs accuracy: +0.0538 CER versus offline at the shipped setting.
hallucination_rateis 0.10-0.12 on several sets and did not improve with more data.
This is not a product of Moonshine AI. See NOTICE.
1. モデル諸元
| 項目 | 値 |
|---|---|
| アーキテクチャ | Moonshine Streaming(Encoder/Decoder 各10層・語彙 32,768・16kHz) |
| パラメータ数 | 140,135,225(140.1M) |
| 重み(PyTorch) | model.safetensors 560,571,260 bytes(F32・262 テンソル) |
| ONNX deploy 3グラフ | 323.6MB(float encoder + float cross_kv prefill + int8a decode step) |
| ORT 3グラフ | 319.6MB |
| 学習データ | ReazonSpeech v2 "all"(35,000h)単独 |
| ライセンス | Apache-2.0(ベースは MIT・NOTICE 参照) |
⚠️ ベースモデルのモデルカードは 123M と記載していますが、safetensors ヘッダの実測は 140,135,225 params です。 本モデルはアーキテクチャ・tokenizer とも無改変なので同じ値になります。
2. 使い方
2.1 Transformers(オフライン推論)
pip install --upgrade "git+https://github.com/huggingface/transformers.git#egg=transformers" "datasets[audio]"
import torch
from transformers import MoonshineStreamingForConditionalGeneration, AutoProcessor
model_id = "ayousanz/kodama-ja-streaming-small"
device = "cuda:0" if torch.cuda.is_available() else "cpu"
model = MoonshineStreamingForConditionalGeneration.from_pretrained(model_id).to(device)
processor = AutoProcessor.from_pretrained(model_id)
# audio は 16kHz mono の 1次元配列
inputs = processor(audio_16k_mono, return_tensors="pt", sampling_rate=16000).to(device)
# ハルシネーションループを避けるため出力長を制限する(ベースモデル推奨の式)
token_limit_factor = 6.5 / processor.feature_extractor.sampling_rate
max_length = int((inputs.attention_mask.sum(dim=-1) * token_limit_factor).max().item())
ids = model.generate(**inputs, max_length=max_length)
print(processor.decode(ids[0], skip_special_tokens=True))
⚠️ Transformers 経路で遅延・RTF を測らないでください。 Transformers 実装は効率的な ストリーミング経路が未完成であるとベースモデル側が明記しています。本カードの遅延値は すべて ONNX Runtime 経路の実測です。
2.2 ONNX Runtime(低遅延・CPU)
同梱の deploy 3グラフを使います。この3つで1セット・1モデルです。
| ファイル | サイズ | 役割 |
|---|---|---|
onnx/encoder.onnx + .onnx.data |
207.9MB | 音響エンコーダ(float。int8 化は精度が落ちるため不可) |
onnx/cross_kv_prefill.onnx + .onnx.data |
32.5MB | cross-attention KV の前計算(float) |
onnx/decoder_step_crosskv.int8a.onnx |
83.1MB | 1ステップ decode(int8 動的量子化・CER 無劣化) |
.ort 版(ort/・計 319.6MB)はモバイル/組込み向けの事前最適化形式です。
⚠️ 同梱の
.ortは公式 moonshine-voice の6グラフ束とは非互換です(3グラフ分割で I/O 名と cache レイアウトが異なります)。公式ランタイムにそのまま差し込むことはできません。
3. 評価条件(数値を読む前に)
- 主指標は CER(WER は副指標・
fugashi+unidic-liteで分かち書き)。日本語なので WER で最適化していません。 - テキスト正規化は全モデル共通の単一実装を通しています(本モデル・公式 ja Moonshine・Vosk すべて同じ関数)。 評価時は句読点除去つきで統一。
- 比較は必ず同一サブセット・同一 n で行い、paired bootstrap CI(n_boot=1000・seed=0)で有意性を判定しています。 端点の比較だけで「改善した」とは書いていません。
- 全評価は逐次実行で
n_errors=0(並列実行は CUDA エラーで発話が落ち、CER が壊れるため)。 - 精度・オフライン速度・ストリーミング遅延は別々の表に載せています(混ぜると誤読を招くため)。
評価セット
| ID | 内容 | n |
|---|---|---|
fleurs |
FLEURS ja_jp test(汎用・読み上げ) | 650 |
dom_g |
対象ドメイン(PRIMARY): キャラクター音声・感情音声(あみたろ/つくよみちゃん/JVNV) | 629 |
speechbsd |
SpeechBSD(対話の代理指標) | 800 |
jvnv_regular / jvnv_free |
JVNV(感情音声の代理指標) | 800 / 240 |
short / noise / propn |
診断セット(FLEURS 派生。短発話/SNR 10dB 雑音付加/固有名詞) | 130 / 400 / 248 |
4. 精度 — 公式日本語 Moonshine base との比較
比較対象は moonshine-base-ja(61.5M params・非ストリーミング・本モデルの 44% のサイズ)。
ベンチマーク比較のためだけに使用しており、学習には一切関与していません。
Δ は ours - baseline。負なら本モデルが良い。
| 評価セット | n | moonshine-base-ja | ours | Δ | 95%CI | 判定 |
|---|---|---|---|---|---|---|
jvnv_free |
240 | 0.1121 | 0.0638 | -0.0483 | [-0.0698, -0.0271] | 🟢 ours 有意優位(-43%) |
jvnv_regular |
800 | 0.1415 | 0.0968 | -0.0447 | [-0.0578, -0.0319] | 🟢 ours 有意優位(-32%) |
speechbsd |
800 | 0.1320 | 0.1108 | -0.0213 | [-0.0363, -0.0069] | 🟢 ours 有意優位(-16%) |
dom_g(PRIMARY) |
629 | 0.1472 | 0.1567 | +0.0095 | [-0.0063, +0.0245] | ⚪ 有意差なし |
short |
130 | 0.1168 | 0.1448 | +0.0281 | [+0.0046, +0.0517] | 🔴 ours 劣位 |
propn |
248 | 0.1354 | 0.1695 | +0.0341 | [+0.0134, +0.0534] | 🔴 ours 劣位 |
fleurs |
650 | 0.1091 | 0.1480 | +0.0390 | [+0.0286, +0.0515] | 🔴 ours 劣位 |
noise(SNR10dB) |
400 | 0.1330 | 0.2363 | +0.1033 | [+0.0855, +0.1239] | 🔴 最大の弱点 |
⚠️ 「dom_g で有意差なし」を正しく読むために
「公式 ja Moonshine を超えた」とは言えません。 点推定では依然 baseline が上(0.1472 vs 0.1567)で、 「有意差なし」は同等と区別できないという意味です。
さらに、この「同等」は話者間の相殺です。 合計値だけを見ると一様に同等に見えますが、 実際は逆方向の差が打ち消し合っています。
| 話者 | n | moonshine-base-ja | ours | Δ | 95%CI | 判定 |
|---|---|---|---|---|---|---|
| あみたろ | 302 | 0.1120 | 0.1908 | +0.0788 | [+0.0596, +0.0981] | 🔴 有意に劣位 |
| つくよみちゃん | 100 | 0.2532 | 0.2879 | +0.0347 | [+0.0030, +0.0661] | 🔴 有意に劣位 |
| JVNV | 227 | 0.1281 | 0.0644 | -0.0637 | [-0.0868, -0.0432] | 🟢 有意に優位 |
| 合計 | 629 | 0.1472 | 0.1567 | +0.0095 | [-0.0063, +0.0245] | ⚪ 有意差なし |
キャラクター音声2話者では負けています。 全量 35,000 時間でも埋まりませんでした。
⚠️
dom_gの汚染可能性は排除できていません。 素材は ITA / JVS の公開台本の読み上げで、比較対象のmoonshine-base-jaは学習データを開示していません。したがって汚染判定は fail-closed で UNKNOWN です。 差が縮んだ今、この留保はより重要になります。
5. 精度 — Vosk との比較
同じ土俵(CPU オフライン・ストリーミング・パーミッシブライセンス)の直接競合である Vosk(Alpha Cephei・Kaldi hybrid・Apache-2.0)と、n を揃えて比較しました。
5.1 vs vosk-model-small-ja-0.22(48MB)— 6セット全勝
| 評価セット | n | Vosk small | ours | Δ | 95%CI | 相対 |
|---|---|---|---|---|---|---|
propn |
248 | 0.2625 | 0.1695 | -0.0929 | [-0.1120, -0.0721] | -35% |
dom_g |
629 | 0.2478 | 0.1567 | -0.0911 | [-0.1054, -0.0770] | -37% |
fleurs |
650 | 0.2248 | 0.1480 | -0.0768 | [-0.0898, -0.0640] | -34% |
speechbsd |
800 | 0.1712 | 0.1108 | -0.0605 | [-0.0713, -0.0482] | -35% |
jvnv_regular |
800 | 0.1551 | 0.0968 | -0.0583 | [-0.0700, -0.0474] | -38% |
jvnv_free |
240 | 0.1000 | 0.0638 | -0.0362 | [-0.0509, -0.0218] | -36% |
全セットで CI が 0 を跨がず、相対 34〜38% 改善しています。
5.2 vs vosk-model-ja-0.22(1GB)— 6セット中5セット優位・サイズは 1/3
| 評価セット | n | Vosk big | ours | Δ | 95%CI | 判定 |
|---|---|---|---|---|---|---|
jvnv_regular |
800 | 0.1459 | 0.0968 | -0.0491 | [-0.0617, -0.0364] | 🟢 有意優位 |
propn |
248 | 0.2012 | 0.1695 | -0.0316 | [-0.0507, -0.0113] | 🟢 有意優位 |
fleurs |
650 | 0.1703 | 0.1480 | -0.0223 | [-0.0358, -0.0074] | 🟢 有意優位 |
dom_g |
629 | 0.1776 | 0.1567 | -0.0209 | [-0.0348, -0.0069] | 🟢 有意優位 |
speechbsd |
800 | 0.1303 | 0.1108 | -0.0195 | [-0.0292, -0.0092] | 🟢 有意優位 |
jvnv_free |
240 | 0.0747 | 0.0638 | -0.0109 | [-0.0257, +0.0040] | ⚪ 有意差なし |
⚠️ 「1GB の Vosk に全セットで勝った」とは書けません(
jvnv_freeは CI が 0 を跨ぎます)。
Vosk 比較で未計測のこと(結論を一般化しないでください):
- 雑音条件は未比較です。本モデルは雑音が最大の弱点であり、Kaldi hybrid は雑音に強い可能性があります。 上記の「全セット優位」を雑音環境に一般化しないでください。
- Vosk 側の診断セット(
short/noise)は未測定です。 - 遅延計測時、Vosk の endpointing は無効のまま測っています(有効なら Vosk の Finalization は さらに前倒しになる=Vosk 有利方向の未計測要因)。
6. オフライン速度・サイズ
精度表とは別条件です(同一マシン・CPU)。
| モデル | params | 配布サイズ | offline RTF |
|---|---|---|---|
| ours | 140.1M | 324MB(ONNX deploy) | 0.19 |
moonshine-base-ja |
61.5M | 約 60MB | — |
vosk-model-small-ja-0.22 |
— | 48MB | 0.62 |
vosk-model-ja-0.22 |
— | 1GB | 0.21 |
絶対サイズでは公式 ja Moonshine(61.5M)と Vosk small(48MB)に負けています。 訴求できるのは「サイズ対性能のバランス」であって「最小」ではありません。
7. ストリーミング遅延
精度表・オフライン速度表とは別条件です。 block 500ms・同一マシン・CPU。 n は行ごとに異なります(ours 採用設定 n=24/Vosk n=8)。
| モデル | サイズ | TTFP(初回部分結果) | Finalization(確定まで) | offline RTF |
|---|---|---|---|---|
| ours(採用設定・実効 margin 24) | 324MB | 1091〜1138ms | 883〜957ms | 0.19 |
vosk-model-small-ja-0.22 |
48MB | 5997ms | 29ms | 0.62 |
vosk-model-ja-0.22 |
1GB | 1082ms | 133ms | 0.21 |
- Vosk small(48MB)に対しては TTFP 約 5.3倍・RTF 3.3倍 速い=「48MB は小さいが低遅延ではない」。
- Vosk big(1GB)に対しては Finalization が 6.6〜7.2倍 劣位です。AED は全 encoder フレームに cross-attend するため、Kaldi の増分デコードには構造的に及ばず、パラメータ調整では埋まりません。 対話 UI の体感を最も左右する指標なので、そこが重要な用途では Vosk big を検討してください。
- Finalization は CPU 実測で、同一設定の再測定でも約 8% 振れます。
ストリーミングは精度とのトレードオフです
ストリーミング動作は bounded-tail revision(local-agreement) で実装しています。 実効 margin を変えると CER と Finalization が逆方向に動きます。
| 実効 margin | CER | offline との差 | Finalization | 途中打ち切り |
|---|---|---|---|---|
| 12 | 0.2159 | +0.1101 | 608ms | 3/24 |
| 16 | 0.2090 | +0.1032 | 703ms | 3/24 |
| 24(採用) | 0.1596 | +0.0538 | 883〜957ms | 1/24 |
| 48 | 0.1578 | +0.0520 | 1387ms | 1/24 |
| 凍結なし | 0.1288 | +0.0230 | 2227ms | 0/24 |
(同一 n=24 での offline CER は 0.1058)
🚨 本カードの精度表(§4・§5)はすべて offline の値です。 ストリーミングでは採用設定でも CER が +0.0538 劣化します。オフライン値をそのまま ストリーミングの性能として提示しないでください。
8. 全評価セットの実測値
すべて checkpoint-84816・逐次実行・n_errors=0。
| 評価セット | n | CER | WER | repetition_rate | hallucination_rate |
|---|---|---|---|---|---|
fleurs |
650 | 0.1480 | 0.1629 | 0.0000 | 0.1215 |
dom_g(PRIMARY) |
629 | 0.1567 | 0.1555 | 0.0064 | 0.0000 |
propn |
248 | 0.1695 | 0.1836 | 0.0000 | 0.1008 |
short |
130 | 0.1448 | 0.1645 | 0.0000 | 0.1000 |
noise(SNR10dB) |
400 | 0.2363 | 0.2572 | 0.0050 | 0.1200 |
speechbsd |
800 | 0.1108 | 0.1236 | 0.0000 | 0.0575 |
jvnv_regular |
800 | 0.0968 | 0.0829 | 0.0000 | 0.0000 |
jvnv_free |
240 | 0.0638 | 0.0578 | 0.0000 | 0.0000 |
9. 既知の制限(採用前に必ずお読みください)
- 🔴 雑音に弱い(最大の弱点)。SNR 10dB で
moonshine-base-jaに +0.1033 劣位。 clean 比の劣化率は ours +60% に対し baseline +22% で、構造的に脆いと言えます (学習データの ReazonSpeech が比較的クリーンなため)。雑音環境での利用は推奨しません。 - 🔴 キャラクター音声(あみたろ・つくよみちゃん)で公式 ja Moonshine に有意に劣位。 全量データでも埋まりませんでした(§4 の話者別表)。
- 🔴 汎用用途では公式 ja Moonshine が上(FLEURS +0.0390・short +0.0281・propn +0.0341)。 総合力の置き換えではなく、対象ドメイン向けのモデルです。
- 🚨 hallucination_rate はデータ量では下がりません。fleurs 0.1215/short 0.1000/propn 0.1008 は 35倍少ないデータで学習した前世代と完全に同値でした=CER とは独立の課題です。 無音区間で出力が出ることがあるため、実運用では VAD / エンドポインティングを併用してください。
- ストリーミングは CER +0.0538 のトレードオフを伴います(§7)。
- encoder は int8 量子化できません(careful static QDQ でも精度ゲート未達)。float 208MB がサイズの下限です。
- 対話ドメインの直接評価は未実施です。
speechbsdは代理指標であり、実対話音源での測定はできていません。 dom_gの汚染可能性は未排除(§4)。
10. 学習の再現情報
| 項目 | 値 |
|---|---|
| ベース重み | moonshine-ai/moonshine-streaming-small(MIT。学習時は UsefulSensors/…=組織リネーム前の同一重み) |
| 学習データ | ReazonSpeech v2 "all"(35,000h)単独・2 epochs |
| tokenizer | ベース付属のまま(日本語 tokenizer への差し替えは A/B の結果不採用) |
| ピーク LR | 3.2e-4(4GPU DDP × --lr-scale sqrt の結果) |
| スケジューラ | cosine_with_min_lr(min_lr_rate=0.1)・warmup 2,604 step |
| バッチ | per-device 128 × 4 GPU = 実効 512 |
| 総 step | 84,816 |
| 最終 loss | 0.4951 |
| 精度形式 | BF16 |
| ハードウェア | RTX 5090 × 4(DDP) |
| run_id | phase3-f3c069e-1785651965115807400-f174fe / checkpoint-84816 |
学習方式はフルファインチューニング(LoRA ではありません)。混合データ(Common Voice / moe-speech)も 実験しましたが汎用性能を悪化させたため最終モデルには含めていません。
11. 成果物のハッシュ(SHA-256)
配布物が改変されていないことを検証できます。
PyTorch 重み
| ファイル | bytes | sha256 |
|---|---|---|
model.safetensors |
560,571,260 | bfe2c0e67940fe49e0365d9e71a76e52096576c601d5b7ecbfb662814f33a466 |
config.json |
1,697 | a89a79c1282ea95d1d7447cef0b9d4b65f8ea47f6d62ec7e849f5310e4a10b99 |
generation_config.json |
163 | fd54ad15ad0a14f68db3c58a8d8e5e8f3791ef95e1ea92ee46cd71b4a5d7528c |
ONNX deploy(3グラフ・計 323.6MB)
| ファイル | bytes | sha256 |
|---|---|---|
encoder.onnx |
1,105,435 | bc3738dc18aa366d7b306c907896b3fea51dcfc8284e7dbb79f32c9c2563a497 |
encoder.onnx.data |
206,806,656 | 6283dfebf6f07e541c395c2d6b0f04c761f0c0fe494c697cae41fdb802afe20d |
cross_kv_prefill.onnx |
76,893 | b1eb5a176651cf69c68c6bf1e43827ebd900f0093c5d2152166c08302d3404fd |
cross_kv_prefill.onnx.data |
32,440,320 | ab3d4f810d495722adb091ac83cc0e4afc9f118c82ba0dd192eedef733115f1b |
decoder_step_crosskv.int8a.onnx |
83,129,065 | 1860d39caa1b7329848a7a45eecb45ad647d033e0c18398f8bf69112ed431083 |
ORT(3グラフ・計 319.6MB)
| ファイル | bytes | sha256 |
|---|---|---|
encoder.ort |
205,158,336 | 450c4dd023fa9307f36745dee8b8640e37ef8baebd165342ef7b5d197b816e58 |
cross_kv_prefill.ort |
32,432,304 | c751673eeddbecfe35c8c25b775769626ce9bc18bb70f6d9d0526c16425fd6e5 |
decoder_step_crosskv.int8a.ort |
82,039,008 | 0155b520eebbf968df5a34e3ca03663195849ceb37169ef2b529c4aa00d0ed71 |
クロスランタイム一致: PyTorch greedy と ONNX greedy を token-id レベルで照合し、 float 経路で 24/24 完全一致(bit-exact・CER 差 0.0)。int8a 経路は token-id 20/24 ですが CER は float と同値(0.1058)です。
12. ライセンスと系譜
| 層 | ライセンス |
|---|---|
| 本モデルの重み・ONNX 資産 | Apache-2.0 |
ベースモデル moonshine-ai/moonshine-streaming-small |
MIT(NOTICE に全文を同梱) |
| 学習データ ReazonSpeech v2 | CDLA-Sharing-1.0(§3.5 により学習済み重み=Results に義務なし) |
| 学習コード / Transformers | Apache-2.0 |
ℹ️ ベースモデルの HF 組織名は
UsefulSensorsからmoonshine-aiに変更されています (2026-08-22 に確認。旧 ID は新 ID へリダイレクトされます)。重みは同一で (sha2c036506f23a09c18df5a50057599ba6d9280999・lastModified 2026-02-10)、 宣言ライセンスも MIT のままです。本モデルの学習は組織リネーム前の同じ重みで行いました。
同梱の tokenizer はベースモデル由来の MIT 素材なので、再配布時は NOTICE を必ず保持してください。
⚠️ 特許許諾の範囲: Apache-2.0 §3 の特許許諾は本モデルの貢献部分(日本語追加学習と ONNX 資産)について 本モデルの著作権者が与えるものです。ベースは MIT で特許について沈黙しており、Useful Sensors, Inc. は Moonshine アーキテクチャに関する特許許諾を与えていません。§3 をベースアーキテクチャまで及ぶものと 読まないでください。
⚠️ ライセンスは競合に対する差別化にはなりません(Vosk もモデル込みで Apache-2.0)。 本モデル固有の性質は「学習データの由来が開示されていて、同じ手順で再現できる」ことです (ReazonSpeech v2 単独。比較対象の
moonshine-base-jaは学習データ非開示)。
商標について: "Moonshine" はベースモデルを同定するための帰属表示としてのみ用いています。
Moonshine AI の商標ポリシーは公開されていませんが(moonshine.ai/{trademark,brand,legal,terms} はいずれも 404)、
同社は Community License 側で名称・マークの使用を明示的に禁じており、ブランド保護の意思は示されています。
本モデルはその系譜には属しません(MIT 経路)。
13. 謝辞
- Moonshine AI(Useful Sensors, Inc.) — ベースモデル
moonshine-streaming-small(MIT) - Reazon Human Interaction Lab — ReazonSpeech v2(CDLA-Sharing-1.0)
- 評価に用いた公開コーパス: FLEURS、SpeechBSD、JVNV、ITA / JVS コーパス
- 競合比較: Alpha Cephei — Vosk(Apache-2.0)
評価素材のうちキャラクター音声(あみたろ・つくよみちゃん)は各配布元の規約に従い、 音声そのものを再配布していません。本カードに載せているのは集計値のみです。
- Downloads last month
- 12
Model tree for ayousanz/kodama-ja-streaming-small
Base model
moonshine-ai/moonshine-streaming-small