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. Part of OpenThai (formerly OpenThaiGPT). Developed by iApp, launched with AIEAT.

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

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