reazonspeech-nemo-v2-medical-dmime

reazon-research/reazonspeech-nemo-v2 を、医学医療用語辞書 DMiME-1.1 (GPL-2.0) から合成した日本語 TTS 音声 (Azure Neural TTS) で Full fine-tune した医療ドメイン日本語 ASR モデルです。

ハイライト

  • CER 8.98% (test 50件) / 9.20% (val 849件) — DMiME 用語を含む医療短文の文字誤り率。
  • ベースモデル素の reazonspeech-nemo-v2 (CER 28-29% / 同条件) と比較し 約 20pt 改善
  • RTF 0.07-0.08 (NVIDIA RTX 5060 Ti, bf16) でリアルタイム性を維持。
  • 出力テキストには句点 () は含まれません (学習データ参照テキストに句点なしのため)。

用途と前提

  • 対象: 日本語の医学医療用語を含む短文〜中文の音声認識。
  • 想定シナリオ: 電子カルテ口述、医療現場のリアルタイム / 準リアルタイム認識補助、音声入力 IME の医療用語強化。
  • データ特性: 学習データはすべて TTS (Azure Neural Voice) 合成音声であり、実話者音声・実環境ノイズでの汎化は未検証
  • 免責: 医療上の判断材料として本モデルの出力をそのまま用いないでください。誤認識のリスクを必ず人間の校閲で除去すること。

評価結果

評価セットは本プロジェクト向けに用意した DMiME-1.1 由来の医療テンプレート文 + Azure Neural TTS 音声 (tts_list.tsv + WAV, seed=42) を使用しています。

モデル 評価セット CER (raw) CER (norm)* CER=0 件数 RTF
reazonspeech-k2-v2 (sherpa-onnx, greedy) 50件 18.53% 18.53% 18 0.066 (CPU)
reazonspeech-nemo-v2 素 (no pad) 50件 37.00% 28.29% 6 0.083 (GPU)
reazonspeech-nemo-v2 素 (pad 0.5s) 50件 29.10% 20.38% 16 0.101 (GPU)
本モデル (Full FT) test 50件 8.98% 10.61% 31 (62%) 0.078 (GPU)
本モデル (Full FT) val 849件 9.20% 10.91% 495 (58%) 0.072 (GPU)

*norm = 句読点・空白・全角/半角を NFKC で揃えた上での CER。

学習設定

項目
ベースモデル reazon-research/reazonspeech-nemo-v2 (619M, FastConformer-Longformer + RNN-T)
アーキテクチャ変更 なし (語彙・トークナイザも継承)
凍結対象 なし (Full fine-tune)
学習データ DMiME-1.1 用語 × テンプレート文 168,954 utterance / 171.6 h, 16 kHz mono
音声生成 Microsoft Azure Neural TTS (日本語)
検証データ 849 utterance (同分布、ランダム)
optimizer AdamW (β=[0.9, 0.98], wd=1e-3)
学習率 1.0e-5, Cosine annealing, warmup 3000 steps, min_lr 1e-7
バッチ 4 × accumulate_grad_batches=8 (effective 32)
precision bf16-mixed
epochs 2
GPU NVIDIA RTX 5060 Ti 16GB (sm_120) × 1
学習時間 約 7.5 時間 (3.7h/epoch)
フレームワーク NeMo 2.7.3, PyTorch 2.7.1+cu128, Lightning 2.x

学習スクリプトと config は本モデルカード末尾の「再現用 リポジトリ」を参照してください。

使い方

NeMo がインストールされた環境であれば、reazon-research/reazonspeech-nemo-v2 と同じ手順で利用できます。

import nemo.collections.asr as nemo_asr

model = nemo_asr.models.ASRModel.from_pretrained(
    "kenrouse/reazonspeech-nemo-v2-medical-dmime"
)
hypotheses = model.transcribe(["sample.wav"])
print(hypotheses[0].text)

hf download.nemo を直接取得して restore_from も可能です:

hf download kenrouse/reazonspeech-nemo-v2-medical-dmime \
    --local-dir ./reazonspeech-nemo-v2-medical-dmime
import nemo.collections.asr as nemo_asr
model = nemo_asr.models.ASRModel.restore_from(
    "./reazonspeech-nemo-v2-medical-dmime/finetuned.nemo"
)

推論時の注意

  • wav 前後の padding は不要: 本モデルは padding なしで学習しているため、pad-sec=0 を推奨します (素の reazonspeech-nemo-v2 ベースラインで有効だった 0.5 秒の無音 padding は本モデルでは逆効果)。
  • 句点が出力されません: 必要であれば後処理で付与してください。

sherpa-onnx (ONNX) での利用

onnx/ サブディレクトリに sherpa-onnx 互換の Transducer ONNX 一式 (fp32 / int8) を同梱しています。

  • encoder.onnx + encoder.onnx.data (external data 形式, 同一ディレクトリに配置必須) / decoder.onnx / joiner.onnx / tokens.txt
  • 量子化版: encoder.int8.onnx / decoder.int8.onnx / joiner.int8.onnx (動的量子化 QUInt8)
  • パッケージ版 (sherpa-onnx 配布物形式):
    • sherpa-onnx-nemo-reazonspeech-v2-medical-dmime-fp32.tar.bz2 (約 4.7 GB, fp32 一式)
    • sherpa-onnx-nemo-reazonspeech-v2-medical-dmime-int8.tar.bz2 (約 514 MB, int8 + tokens.txt + README.md)
import sherpa_onnx
recognizer = sherpa_onnx.OfflineRecognizer.from_transducer(
    encoder="onnx/encoder.onnx",
    decoder="onnx/decoder.onnx",
    joiner="onnx/joiner.onnx",
    tokens="onnx/tokens.txt",
    model_type="nemo_transducer",
    sample_rate=16000,
    feature_dim=80,
)

動作確認状況: Python sherpa-onnx==1.13.x の内蔵 onnxruntime のグラフ最適化 (ReshapeFusion) でエンコーダのロードに失敗する既知問題があります。モデル自体は ORT GraphOptimizationLevel.ORT_DISABLE_ALL ではロード可能で構造的には valid です。C# / Java / Swift 等の他言語バインディングや、別ビルドの onnxruntime では動作する可能性があります。動作報告・不具合報告は Community / Discussions へお寄せください。

既知の制限

  • TTS 音声偏重: 学習データは Azure Neural TTS 1 種類のみ。実話者・収音環境のばらつき・雑音への耐性は未評価。
  • 短文崩壊: 1-2 単語の極短発話 (例: 「急性」「Broca失語」) では文脈不足により誤認識率が上がる傾向。
  • 同音類似誤り: 「集簇 ↔ 習属」「橈骨 ↔ 頭骨」のような同音漢字の混同は残存。
  • ストリーミング推論は未対応: ベースの reazonspeech-nemo-v2 同様 long-form (オフライン) 設計。発話単位 (VAD 切り出し) での運用は可能ですが、低レイテンシのチャンク推論はサポート外です。
  • ONNX 版の Python 動作未確認: sherpa-onnx 公式 model zoo への登録は未実施。Python sherpa-onnx==1.13.x ではエンコーダ ONNX のロードに onnxruntime のグラフ最適化バグが影響します (詳細は「使い方 → sherpa-onnx (ONNX) での利用」参照)。

ライセンス

GPL-2.0

本モデルは以下の素材を組み合わせた派生作品です:

構成要素 ライセンス 出所
Base model weights Apache-2.0 reazon-research/reazonspeech-nemo-v2 (Reazon Human Interaction Lab)
Transcript (医学医療用語辞書) GPL-2.0 DMiME-1.1, Copyright (C) 2016 Kmm, Project DMiME
学習用音声 (合成) Microsoft Azure Neural TTS の出力を学習データに使用

DMiME-1.1 のライセンス (GPL-2.0) を継承する形で、本モデル全体を GPL-2.0 として配布します。Apache-2.0 と GPL-2.0 のライセンス互換性については FSF 公式見解で「非互換」とされていますが、本配布はベース weights の Apache-2.0 通知を保持しつつ、DMiME ライセンスの継承義務を優先する実務的判断によるものです。再配布・改変時は GPL-2.0 の条件 (ソース提供 / 派生物のライセンス継承 等) に従ってください。

Azure Neural TTS の出力を学習データとして使用していることを明示します。Azure サービスの利用規約は出所側で随時改訂されるため、再学習・再配布を行う場合は Microsoft Azure の最新の利用規約 (https://learn.microsoft.com/azure/ai-services/speech-service/) を必ず確認してください。

免責

本モデルは研究 / 実験目的で公開しているものであり、医療上の判断 (診断・治療・処方 等) に直接利用することを意図していません。誤認識による損害について作者は責任を負いません。

学習・評価コード

本モデルの学習に使用した config と評価スクリプトを、参考情報として本リポジトリにも併載しています:

  • 学習 config: configs/nemo_finetune.yaml (Full FT 採用版), configs/nemo_finetune_frozen.yaml (凍結 FT 試行版)
  • 評価結果 TSV: output/nemo_finetuned_full_pad00.tsv (test 50件), output/nemo_finetuned_full_val.tsv (val 849件)
  • LICENSE (GPL-2.0 全文)

関連プロジェクト

  • kenrouse/vosk-model-ja-medical — 同じ DMiME-1.1 由来の医療語彙を LM 言語モデル側で補強した Vosk モデル (別プロジェクト、メソッド異なる)。

引用

@misc{reazonspeech-nemo-v2-medical-dmime-2026,
  title  = {reazonspeech-nemo-v2-medical-dmime: Japanese medical ASR fine-tuned from ReazonSpeech-NeMo-v2 on DMiME},
  author = {kenrouse},
  year   = {2026},
  howpublished = {Hugging Face},
  url    = {https://huggingface.co/kenrouse/reazonspeech-nemo-v2-medical-dmime},
  note   = {GPL-2.0}
}

謝辞

  • Reazon Human Interaction Lab — 高品質な日本語 ASR モデル reazonspeech-nemo-v2 の公開。
  • Project DMiME (Kmm 氏ほか) — オープンライセンスの医学医療用語辞書の整備と公開。
  • 日本医師会総合政策研究機構 ORCA — DMiME の土台となるかな漢字変換用医療辞書の公開。
Downloads last month
1
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for kenrouse/reazonspeech-nemo-v2-medical-dmime

Quantized
(2)
this model

Dataset used to train kenrouse/reazonspeech-nemo-v2-medical-dmime

Evaluation results

  • CER on DMiME-1.1 medical TTS (val, 849 utterances)
    self-reported
    9.200
  • CER on DMiME-1.1 medical TTS (test, 50 utterances, seed=42)
    self-reported
    8.980