OpenThai · iApp Technology

OpenThai2.0-ASR-Streaming · ONNX

iApp's Thai speech-to-text model, OpenThai2.0-ASR-Streaming, exported from its NeMo checkpoint to ONNX so that it runs with ONNX Runtime alone: no Python, no PyTorch, on a CPU. This is the build ChindaBot downloads for dictation.

โมเดลถอดเสียงภาษาไทยของ iApp ในรูปแบบ ONNX รันด้วย ONNX Runtime ได้โดยไม่ต้องมี Python หรือ PyTorch เป็นไฟล์ที่ ChindaBot ดาวน์โหลดเพื่อใช้ปุ่มไมโครโฟน (พูดแทนการพิมพ์)

Accuracy

OpenThai2.0-ASR-Streaming against Typhoon ASR Streaming 0.6B (as released and with its 4-gram LM) and the Nemotron base: average character error rate and FLEURS, GigaSpeech2, TVSpeech, LOTUSDIS and Isan at 560 ms

These numbers were measured on the NeMo model this export comes from, iapp/OpenThai2.0-ASR-Streaming, at 560 ms, the attention context this export uses. The full-precision ONNX files give the same text as that model token for token on the clips we checked (see Checked below); the int8 files have not been measured. That model card has every table, the test sets and the limits.

Decode a long recording in pieces cut at pauses. Decoded as one long stream, the model drops some of the words that follow a pause of near-silence; dictation, one utterance at a time, is not affected.

Files

File Size What
encoder.onnx.data 2.45 GB The encoder's weights, full precision (fp32)
openthai2.0-asr-streaming-fp32.asr.zip 149 MB Beside them: encoder.onnx (the graph), decoder_joint.onnx, tokens.txt
encoder.int8.onnx.data 0.88 GB The encoder's weights with its MatMuls quantized to int8
openthai2.0-asr-streaming-int8.asr.zip 109 MB Beside them: encoder.int8.onnx, decoder_joint.onnx, tokens.txt

Unzip the .asr.zip into the folder that holds its .onnx.data file. The zips are stored, not compressed.

The model

  • A cache-aware FastConformer encoder (24 layers, 1024 wide, 609 M parameters) with a language prompt, and an RNN-T decoder (2-layer LSTM of 640) over 14,988 SentencePiece pieces; 640 M parameters in all.
  • Input: 16 kHz mono audio as 128 log-mel bands (25 ms Hann window, 10 ms hop, pre-emphasis 0.97, no normalisation). encoder.onnx takes audio_signal [1, 128, T], length [1] and prompt_index [1] (32 for Thai, 63 for Thai mixed with English) and gives encoded [1, T/8, 1024], the prompt already applied.
  • decoder_joint.onnx is one greedy RNN-T step: encoder_outputs [1, 1024, 1], targets [1, 1], target_length [1], and the LSTM's two states [2, 1, 640]; it gives the 14,989 scores (the last is the blank, id 14988) and the next states. Add a bias to the blank's score before the argmax: −1.0 as the model's service does in its standard mode (−2.5 for clips under two seconds).
  • tokens.txt: one piece a line, a piece's id its line number less one; ▁ is a space.

Checked

Exported on 10 Nov 2026 (opset 17), with the encoder's attention context at [56, 6]. A numpy + ONNX Runtime reference and ChindaBot's Rust implementation give the same text as the NeMo model, token for token, on three clips of 3.5 s, 8 s and 26 s. On an Apple M3 Max CPU the full-precision model hears 3.5 s of speech in 0.16 s.

The int8 files gave the same text on the two shorter clips and differed in two small places on the longest; their accuracy on real speech has not been measured. Use the full-precision files when in doubt.

Licence

OpenMDW-1.1, as the model it is exported from (see LICENSE). The model is built on NVIDIA's Nemotron ASR streaming model.

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

Collection including iapp/OpenThai2.0-ASR-Streaming-ONNX