OpenThai 2.0 ASR Streaming: an open model that writes Thai speech down while people are still talking
Today we are releasing OpenThai 2.0 ASR Streaming, an open-weight model that writes Thai speech down while people are still talking. Text arrives 80 to 1120 ms behind the voice, from one model with four latency settings. It has 0.64 billion parameters, runs on one GPU or on a CPU, and is free to download under the OpenMDW-1.1 licence. It is the model behind our hosted live service, OpenThai ASR Realtime.
Model page: iapp.co.th/openmodels/openthai2p0-asr-streaming · Weights: huggingface.co/iapp/OpenThai2.0-ASR-Streaming
Why streaming
Live captions, call-centre assistants and voice input need the text while the person is still speaking. Most open Thai speech models are built on Whisper, which reads a whole recording, or a 30-second window, before it writes anything. OpenThai 2.0 ASR Streaming reads the audio in short chunks and carries its state from one chunk to the next, so it writes as the audio arrives, in constant memory however long the stream runs. You choose the chunk when you decode: 80 ms for the fastest response, 1120 ms for the most accurate, or 320 or 560 ms in between.
Results
We compared it with the other open Thai model built on the same NVIDIA base, Typhoon ASR Streaming 0.6B. We decoded both ourselves, on the same public test sets, with the same script and settings.
Character error rate in %, lower is better, at 560 ms. We decoded every model ourselves with the same NeMo streaming script and the same settings: Typhoon ASR Streaming 0.6B as released, and with the 4-gram language model its authors publish for it.
| Test set | Clips | OpenThai 2.0 ASR Streaming | Typhoon ASR Streaming 0.6B | Typhoon ASR Streaming 0.6B + its 4-gram LM | Difference, ours − Typhoon |
|---|---|---|---|---|---|
| FLEURS, read speech | 1,021 | 8.47 | 11.28 | 11.73 | −2.82 [−3.15, −2.48], ours lower |
| GigaSpeech2 test, YouTube | 8,823 | 15.35 | 16.33 | 16.62 | −0.98 [−1.31, −0.58], ours lower |
| TVSpeech, TV and YouTube talk | 570 | 12.41 | 10.84 | 11.05 | +1.57 [+0.90, +2.52], Typhoon lower |
| LOTUSDIS meetings, conference microphone | 5,516 | 20.77 | 28.91 | 29.02 | −8.15 [−8.88, −7.46], ours lower |
| Isan dialect | 500 | 34.90 | 34.15 | 35.79 | +0.75 [−0.21, +1.69], tie |
- Both sides of every comparison are written the same way before scoring: numbers made equal, spaces and punctuation removed. Differences are ours minus Typhoon ASR Streaming 0.6B, with a 95% paired bootstrap interval that resamples whole videos, recordings, speakers or meetings; an interval that includes zero is a tie. Bold marks an error rate lower than the other model's with 95% confidence.
- TVSpeech is Typhoon ASR Streaming 0.6B's own benchmark. LOTUSDIS: we trained on other meetings from the same rooms and microphones, and some speakers appear in both, so that row favours us. FLEURS: we trained on its training and development splits, not its test split. Both models trained on the GigaSpeech2 training split. We did not train on Isan, and Typhoon ASR Streaming 0.6B's published training data lists none.
- Our released file carries a blank offset of −1.0 chosen on development data. Given the same treatment, Typhoon ASR Streaming 0.6B's best offset on the same development data is -2.0, and its error becomes FLEURS, read speech 11.63, GigaSpeech2 test, YouTube 15.26, TVSpeech, TV and YouTube talk 10.68, LOTUSDIS meetings, conference microphone 26.71, Isan dialect 33.87.
This model is ahead on read speech, YouTube clips and meetings; LOTUSDIS favours us, because we trained on other meetings from the same rooms. Typhoon ASR Streaming 0.6B is ahead on TV talk shows, on its own benchmark, TVSpeech. The two tie on the Isan dialect. Typhoon ASR Streaming 0.6B's 4-gram language model raises its English-word recall, as its card says, but adds errors on every set here. On whole recordings, decode in pieces cut at pauses, as the included server does: that way this model scores about as well as clip by clip, or better, while one stream makes it drop words after quiet pauses.
Results at 1120 ms and at every latency are on the model page.
How we built it
We started from NVIDIA Nemotron 3.5 ASR Streaming 0.6B, a multilingual streaming model that gets 99% of characters wrong on Thai before fine-tuning. We extended its tokenizer with 1,901 Thai pieces, trained a new decoder on that vocabulary, and fine-tuned the whole model, starting from NVIDIA's encoder.
- Data: 12,373 hours of Thai speech and 961 hours of English. 10,400 of the Thai hours are YouTube audio from the GigaSpeech2 training split, with its automatic transcripts. The other 1,973 hours are human-transcribed: public Thai corpora and iApp's own recordings of podcasts, talk shows and live streams. Recordings in Korat Thai, Kham Mueang and Pattani Malay were left out; this is a Central Thai model.
- Training: 115,000 optimizer steps, about 30,700 hours of audio seen, on NVIDIA H100 GPUs. The later stages added a second language prompt,
th-mix, which writes English words in Latin letters, and weighted the data towards conversational speech. - Choices on development data only: every setting, including the blank offset stored in the released file, was chosen on development sets. No clip of any test set above was trained on.
Limits
It is a Central Thai model, and on the Isan dialect it is no better than Typhoon ASR Streaming 0.6B. It writes English words in Thai script unless you ask for th-mix, and even then it writes only some of them in Latin letters. Hesitation sounds and repeated words are usually left out. Accuracy falls sharply when the microphone is far from the speakers. Long recordings should be decoded in pieces cut at pauses, as the included server does. It has not been measured on telephone audio. The model card lists every limit with its numbers.
Get it
The weights, the model card and a small server for files and live streams are on Hugging Face; the model page has the commands. If you would rather not run a GPU, OpenThai ASR Realtime serves this model behind a WebSocket API, free during its launch, and Chinda ASR Pro v2 is our more accurate service for recordings.
OpenThai 2.0 ASR Streaming is a derivative of NVIDIA Nemotron 3.5 ASR Streaming 0.6B and is distributed under the OpenMDW License Agreement, version 1.1. Built on NVIDIA Nemotron. It was trained and evaluated on NVIDIA H100 GPUs provided by Siam AI Corporation.