Zipformer RNNT+CTC ひらがな日本語音声認識モデル

軽量・高速なひらがな専用の日本語音声認識モデルです。Zipformer エンコーダと RNNT+CTC デコーダを組み合わせた 20.6M パラメータのモデルで、ReazonSpeech 全データ(約2,200万サンプル)で学習しています。

特徴

  • 軽量: 20.6M パラメータ(82MB)
  • 高速: 1 CPU コアで RTF 0.020(50倍速でリアルタイム処理可能)
  • ひらがな出力: 漢字変換不要。音声をそのままひらがなに変換
  • 依存なし: icefall / k2 / lhotse 不要。PyTorch + torchaudio のみ

性能

CER(文字誤り率)比較

モデル パラメータ Common Voice 8 (2000件) JSUT basic5000 (2000件) RTF (1 CPU コア)
本モデル (RNNT) 20.6M 10.9% 3.3% 0.020
Moonshine tiny-ja 27.1M 4.9%* - 0.068
Moonshine base-ja 61.5M 5.8%* - 0.079

*Moonshine は漢字出力をひらがなに変換して比較。50サンプルでの評価。

本モデルの強み

  • RTF が Moonshine の 3.4 倍速い(0.020 vs 0.068)
  • パラメータ数が 24% 少ない(20.6M vs 27.1M)
  • CER では Moonshine に劣るが、速度とサイズで大幅に有利
  • ひらがな直接出力のため、後処理(漢字→ひらがな変換)が不要

CER 分布(Common Voice 200 サンプル分析)

区分 割合
完全一致 (CER 0%) 46%
ほぼ正解 (CER 1-10%) 23%
まあまあ (CER 11-30%) 22%
悪い (CER 31-50%) 8%
壊滅的 (CER 50%超) 2%

約7割の発話でほぼ正しい認識結果が得られます。

使い方

推論

import torch
import torchaudio
from hiragana_zipformer.data import compute_fbank, load_audio
from hiragana_zipformer.model import HiraganaZipformerConfig, build_model

# モデル読み込み
checkpoint = torch.load("model.pt", map_location="cpu")
config = HiraganaZipformerConfig.from_dict(checkpoint["config"])
model = build_model(config=config, model_type="rnnt_ctc")
model.load_state_dict(checkpoint["model_state_dict"])
model.eval()

# 音声読み込みと推論
waveform = load_audio("sample.wav", sample_rate=16000)
features = compute_fbank(waveform, sample_rate=16000, num_mel_bins=80).unsqueeze(0)
feature_lengths = torch.tensor([features.size(1)], dtype=torch.long)

with torch.no_grad():
    result = model.greedy_decode(features, feature_lengths, strategy="rnnt")[0]
print(result)  # ひらがな出力: "きょーわいいてんきですね"

コマンドラインでの推論

python infer.py --checkpoint model.pt --audio sample.wav --decode-strategy rnnt

モデル構成

  • エンコーダ: Zipformer2(3ステージ: dim 192/256/320, layers 2/2/3)
  • RNNT Predictor: 1層 GRU(dim 320)、専用 BOS トークン
  • RNNT Joiner: Linear projection(dim 320)+ Tanh + Linear
  • CTC head: 補助ロス用
  • 語彙: ひらがな 83 文字 + blank

学習データ

  • ReazonSpeech: 約2,200万サンプル(日本語ニュース音声)
  • 学習エポック: 約3.5エポック(2,625,000ステップ)
  • AMP: bfloat16
  • GPU: NVIDIA RTX 3090(24GB)

技術的な詳細

本モデルは icefall の Zipformer2 を参考に、単体運用のために簡略化した standalone 版です。以下の改良を加えています:

  • RNNT predictor に専用の学習可能な BOS トークンを追加(blank と分離)
  • predictor_dim / joiner_dim を 160 から 320 に拡大
  • AMP (bfloat16) 対応で学習を高速化
  • RNNT loss clamp を無効化(-1.0)して early training での勾配阻害を防止

ライセンス

Apache License 2.0

引用

本モデルは ReazonSpeech データセットを使用して学習しています。

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support