reazon-research/reazonspeech
Updated • 910 • 118
How to use kizuna-intelligence/hiragana-parakeet-tdt-ctc-0.6b-ja-beta with NeMo:
import nemo.collections.asr as nemo_asr
asr_model = nemo_asr.models.ASRModel.from_pretrained("kizuna-intelligence/hiragana-parakeet-tdt-ctc-0.6b-ja-beta")
transcriptions = asr_model.transcribe(["file.wav"])Beta Release - このモデルはベータ版です。精度やAPIは今後変更される可能性があります。
ひらがな専用の日本語音声認識モデル。漢字変換を排除し、音素レベルの認識に特化しています。
| Metric | Value |
|---|---|
| Hiragana CER (CommonVoice JA v8.0 test 500samples) | 5.68% |
| Val WER (best) | 5.82% |
| CPU 1-core RTF | 0.176 (5.7x realtime) |
pyopenjtalk.g2p() → jaconv.kata2hira() でひらがなに変換し、ひらがな以外の文字を除去CER = Σ Levenshtein(ref_i, pred_i) / Σ len(ref_i)
= 615 / 10819
= 5.68%
| REF (正解) | PRED (予測) | CER |
|---|---|---|
| きむらさんわわたしにしゃしんをみせてくれました | きむらさまわわたしにしゃんしをみせてくれました | 13.0% |
| たなかさんのおくさんわだいがくのせんせーです | たなかさんのおくさんわだいがくのせんせーです | 0.0% |
| わたしわまついさんがかいたさくぶんをよみました | わたしわまついさんがかいたさくぶんをよみました | 0.0% |
import nemo.collections.asr as nemo_asr
model = nemo_asr.models.EncDecHybridRNNTCTCBPEModel.restore_from("hiragana-parakeet-tdt-ctc-0.6b-ja.nemo")
transcriptions = model.transcribe(["audio.wav"])
print(transcriptions) # ['ひらがなのてきすと']
漢字テキストからひらがなへの変換は以下のパイプラインで行われます:
import pyopenjtalk, jaconv
text = "東京都渋谷区"
kana = pyopenjtalk.g2p(text, kana=True) # "トーキョートシブヤク"
hira = jaconv.kata2hira(kana) # "とーきょーとしぶやく"
1/10サイズ(64M params)の小型モデルも試みましたが、同等の精度には至りませんでした。
| 小型モデル | CER | 結果 |
|---|---|---|
| CTC-only (64M) | ~16% | 長文は実用的だが短文が苦手 |
| CTC→TDT (65M, エンコーダ凍結) | ~22% | blank collapse回避に成功したが精度不足 |
| 漢字CTC (64M) | 学習不能 | vocab 4096でblank collapse |
同サイズの Moonshine-base-ja (61.5M) が CER 3.9% を達成しており、Conformer+CTC/TDTアーキテクチャではこのサイズ帯で Encoder-Decoder+Attention 型に対抗するのは困難と判断しました。
Apache-2.0
Based on:
Base model
nvidia/parakeet-tdt_ctc-0.6b-ja