ONNX Model Zoo

kangkyu/icefall-asr-korean-multidomain-zipformer-2026-03-19

By kangkyu · ↓ 0 · ♥ 0 · Updated 2026-03-19

What's in this repo

This page lists the files in kangkyu/icefall-asr-korean-multidomain-zipformer-2026-03-19, including no-state-epoch-9-avg-3.onnx, with-state-epoch-9-avg-3.onnx, decoder-epoch-1-avg-1.int8.onnx and more.

  • 8 ONNX models (.onnx files)
  • 21 files, including 8 .onnx, 3 .wav, 2 .model, 2 .jsonl, 2 .txt, 1 .md
  • Last updated 2026-03-19

ONNX files

File Size Download
data/lm/no-state-epoch-9-avg-3.onnx — Download
data/lm/with-state-epoch-9-avg-3.onnx — Download
decoder-epoch-1-avg-1.int8.onnx — Download
decoder-epoch-1-avg-1.onnx — Download
encoder-epoch-1-avg-1.int8.onnx — Download
encoder-epoch-1-avg-1.onnx — Download
joiner-epoch-1-avg-1.int8.onnx — Download
joiner-epoch-1-avg-1.onnx — Download

How to use

These ONNX files can be loaded with ONNX Runtime. To inspect a model graph, upload the file to the Netron viewer. Download links point to the original files on Hugging Face.

README

Korean Multi-Domain Zipformer ASR

A Korean ASR model finetuned on 6,863 hours across 3 domains from AI Hub, built on KsponSpeech pretrained weights using the icefall Zipformer transducer (74.78M parameters).

Key Feature: Korean-Only Output

This model outputs Korean text exclusively. All English words, numbers, and abbreviations are transcribed as their Korean pronunciations — exactly as spoken.

Audio Whisper / Other ASR This model
"EBS 뉴스입니다" EBS 뉴스입니다 이비에스 뉴스입니다
"60분 남았습니다" 60분 남았습니다 육십 분 남았습니다
"3G 속도가 느려요" 3G 속도가 느려요 쓰리쥐 속도가 느려요

The training data uses (written)/(spoken) pronunciation pairs where the spoken form (Korean) is the ground truth. This eliminates ambiguity — the model transcribes exactly what it hears.

ITN (Inverse Text Normalization) is recommended for display. We provide ITN dictionaries with 14,000+ written↔spoken pairs to convert Korean output back to mixed-script text (e.g. 육십 분 → 60분).

Performance

CER (Character Error Rate), spaces excluded. Our model measured with sherpa-onnx int8 greedy decoding on CPU.

Engine Type KSP clean KSP other
Ours + LM rescore Open 7.99% 9.64%
Ours (greedy) Open 11.39% 11.61%
Naver ClovaSpeech Commercial API 8.05% 7.96%
OpenAI Whisper large-v2 Open 12.06% 11.39%
Google STT API v2 Commercial API 11.82% 11.50%

Benchmark source: Awesome Korean Speech Recognition (2026-03)

Our model with LM rescoring surpasses Naver ClovaSpeech on KSP eval_clean (7.99% vs 8.05%) while being fully open-source.

With RNN-LM Rescoring (scale=0.2)

Domain Greedy + LM Rescore Improvement
KSP eval_clean 11.39% 7.99% -3.40%p
KSP eval_other 11.61% 9.64% -1.97%p

Training Data

Domain Dataset Hours Weight
Spontaneous conversation KsponSpeech 969 10%
Telephone counseling AIHub 상담음성 2,897 40%
Multi-speaker meeting AIHub 회의음성 2,997 40%
Total 6,863

Text was cleaned using domain-specific rules to handle transcription markers:

  • (written)/(spoken) pronunciation pairs → spoken form retained
  • n/ b/ o/ speaker/noise/overlap markers → removed
  • + stuttering → pre-correction syllables removed
  • Filler words (아/, 어/) → slash removed, Korean retained
  • PII masking (**, OOO) → entire utterance excluded

Model Architecture

Component Details
Encoder Zipformer (74.78M params)
Decoder Embedding decoder
Joiner Transducer joiner
Tokenizer SentencePiece BPE, 5000 vocab
Loss Pruned RNN-T (k2)
Input 80-dim fbank, 16kHz mono

How to Use

With sherpa-onnx (Recommended)

pip install sherpa-onnx

git lfs install
git clone https://huggingface.co/kangkyu/icefall-asr-korean-multidomain-zipformer-2026-03-19
cd icefall-asr-korean-multidomain-zipformer-2026-03-19
import sherpa_onnx

recognizer = sherpa_onnx.OfflineRecognizer.from_transducer(
    encoder="encoder-epoch-1-avg-1.int8.onnx",
    decoder="decoder-epoch-1-avg-1.int8.onnx",
    joiner="joiner-epoch-1-avg-1.int8.onnx",
    tokens="tokens.txt",
    num_threads=4,
    decoding_method="greedy_search",
)

stream = recognizer.create_stream()
stream.accept_wave_file("test_wavs/0.wav")
recognizer.decode(stream)
print(stream.result.text)

With RNN-LM Rescoring

recognizer = sherpa_onnx.OfflineRecognizer.from_transducer(
    encoder="encoder-epoch-1-avg-1.int8.onnx",
    decoder="decoder-epoch-1-avg-1.int8.onnx",
    joiner="joiner-epoch-1-avg-1.int8.onnx",
    tokens="tokens.txt",
    num_threads=4,
    decoding_method="modified_beam_search",
    lm="data/lm/no-state-epoch-9-avg-3.onnx",
    lm_scale=0.2,
)

Files

.
├── encoder-epoch-1-avg-1.onnx          # Encoder FP32 (261MB)
├── encoder-epoch-1-avg-1.int8.onnx     # Encoder INT8 (71MB) ← recommended
├── decoder-epoch-1-avg-1.onnx          # Decoder FP32 (11MB)
├── decoder-epoch-1-avg-1.int8.onnx     # Decoder INT8 (3MB)
├── joiner-epoch-1-avg-1.onnx           # Joiner FP32 (10MB)
├── joiner-epoch-1-avg-1.int8.onnx      # Joiner INT8 (3MB)
├── tokens.txt                          # BPE token list
├── bpe.model                           # SentencePiece BPE model
├── exp/
│   └── pretrained.pt                   # PyTorch checkpoint (857MB)
├── data/
│   ├── lang_bpe_5000/
│   │   ├── bpe.model
│   │   └── tokens.txt
│   ├── lm/
│   │   ├── no-state-epoch-9-avg-3.onnx # RNN-LM for offline rescoring (37MB)
│   │   └── with-state-epoch-9-avg-3.onnx # RNN-LM for streaming (37MB)
│   └── itn_pairs/
│       ├── counseling.jsonl            # 3,943 pairs
│       └── meeting.jsonl               # 10,998 pairs
└── test_wavs/
    ├── 0.wav, 1.wav, 2.wav

RNN Language Model

6.7M-parameter RNN-LM for rescoring.

Property Value
Architecture LSTM, 2 layers, hidden 512, embed 512
Vocab Shared BPE 5000
Validation PPL 57.3

Use no-state-epoch-9-avg-3.onnx with OfflineRecognizer for rescoring.

Training Details

Limitations

  • Non-causal (offline) model — not suitable for real-time streaming. Use for batch/file transcription.
  • Korean-only output — English words and numbers appear as Korean pronunciation. ITN post-processing needed for display.
  • No punctuation — the model does not output punctuation marks.

License

Apache License 2.0.

This model was trained using AI datasets built as part of projects by the National Information Society Agency (NIA, 한국지능정보사회진흥원) of the Republic of Korea, provided through AI Hub.

Original datasets are not redistributed. Download directly from AI Hub to reproduce training.

Acknowledgments

Model info

k2 onnx automatic-speech-recognition zipformer transducer icefall sherpa-onnx korean ko dataset:aihub dataset:ksponspeech license:apache-2.0
↓ 0 ♥ 0

Created: 2026-03-18

Updated: 2026-03-19

View on Hugging Face

Files (21)

.gitattributes
README.md
bpe.model
data/itn_pairs/counseling.jsonl
data/itn_pairs/meeting.jsonl
data/lang_bpe_5000/bpe.model
data/lang_bpe_5000/tokens.txt
data/lm/no-state-epoch-9-avg-3.onnx ONNX
data/lm/with-state-epoch-9-avg-3.onnx ONNX
decoder-epoch-1-avg-1.int8.onnx ONNX
decoder-epoch-1-avg-1.onnx ONNX
encoder-epoch-1-avg-1.int8.onnx ONNX
encoder-epoch-1-avg-1.onnx ONNX
exp/pretrained.pt
joiner-epoch-1-avg-1.int8.onnx ONNX
joiner-epoch-1-avg-1.onnx ONNX
prepare_release.sh
test_wavs/0.wav
test_wavs/1.wav
test_wavs/2.wav
tokens.txt

Related models