--- license: cc-by-4.0 language: - th library_name: nemo pipeline_tag: automatic-speech-recognition base_model: scb10x/typhoon-asr-realtime tags: - automatic-speech-recognition - speech - streaming - FastConformer - Transducer - Thai - NeMo --- # Typhoon ASR Streaming 115M Cache-aware **streaming** Thai ASR (FastConformer-Transducer, 115M params). Converted from [Typhoon ASR Real-time](https://huggingface.co/scb10x/typhoon-asr-realtime) — causal convolutions + chunked limited-context attention swapped in, every weight copied as a warm start, then briefly fine-tuned on the ~11k-hour Thai corpus. Unlike the full-context base (which collapses to 62.8% CER when forced to stream at 1040 ms), this model decodes live, chunk by chunk, with the encoder cache carried across chunks. ## At a glance | | | |---|---| | Architecture | FastConformer-Transducer (RNN-T), cache-aware streaming | | NeMo class | `EncDecRNNTBPEModel` | | Tokenizer | single 2048-token Thai BPE | | Latency knob | `chunk_size` × 80 ms → 1040 / 480 / 80 ms | | Multi-latency `att_context_size` | `[[70,13],[70,6],[70,1],[70,0]]` | | Streaming CER (TVSpeech) | **19.4%** @1040 ms · 16.4% @3200 ms | | RTF (batch-1, H100 @1040 ms) | 0.020 (~50× real time) | | Paired n-gram | [`typhoon-ai/typhoon-asr-streaming-115m-ngram`](https://huggingface.co/typhoon-ai/typhoon-asr-streaming-115m-ngram) | Use this model for low latency / low cost when English code-switching is light; for best accuracy use [`typhoon-ai/typhoon-asr-streaming-nemotron-0.6b`](https://huggingface.co/typhoon-ai/typhoon-asr-streaming-nemotron-0.6b). ## Usage Requires NVIDIA NeMo with cache-aware streaming support (see the [project repo](https://github.com/warit-s/typhoon-asr-streaming) for the pinned commit and the full streaming loop / server / demo): ```python import nemo.collections.asr as nemo_asr model = nemo_asr.models.ASRModel.restore_from("typhoon-asr-streaming-115m.nemo", map_location="cuda") model.eval() # offline (whole file) text = model.transcribe(audio=["clip.wav"])[0].text # true streaming: model.encoder.setup_streaming_params(chunk_size=13, left_chunks=2, # shift_size=13) + conformer_stream_step(...) — see demo/asr_engine.py in the repo. ``` Decode-time vocabulary steering (phrase boosting + n-gram shallow fusion) runs inside the streaming decoder — see the repo's `docs/SHALLOW_FUSION.md`. ## License & attribution Released under **CC-BY-4.0**, following the base-model chain: - fine-tuned + converted from **[scb10x/typhoon-asr-realtime](https://huggingface.co/scb10x/typhoon-asr-realtime)** (CC-BY-4.0, SCB DataX), - itself fine-tuned from **[nvidia/stt_en_fastconformer_transducer_large](https://huggingface.co/nvidia/stt_en_fastconformer_transducer_large)** (CC-BY-4.0, NVIDIA). Modifications in this release: full-context → cache-aware streaming conversion (causal convolutions, chunked limited-context attention, multi-latency `att_context_size`) and a 1-epoch Thai fine-tune on the Typhoon ASR Real-time corpus.