maratos's picture
Add initial model card
37fae26 verified
|
Raw
History Blame Contribute Delete
5.57 kB
---
license: cc-by-4.0
language:
- en
library_name: voxrt
pipeline_tag: automatic-speech-recognition
tags:
- speech-recognition
- streaming
- asr
- fastconformer
- nemo
- nvidia
- on-device
- edge
- arm
- neon
- voxrt
base_model:
- nvidia/stt_en_fastconformer_hybrid_medium_streaming_80ms_pc
---
# NeMo FastConformer streaming-medium-pc on the VoxRT runtime
The `stt_en_fastconformer_hybrid_medium_streaming_80ms_pc` model
from NVIDIA NeMo, packaged as a **`.vxrt`** file for the VoxRT
on-device inference runtime. Same weights, repackaged so the
80 ms cache-aware streaming ASR runs on Android or iOS in
real-time β€” with punctuation and capitalisation output straight
from the model, no post-processing layer required.
**This is not our model.** The weights are NVIDIA's
`nvidia/stt_en_fastconformer_hybrid_medium_streaming_80ms_pc`
checkpoint, released under CC-BY-4.0. What we ship is the runtime
that makes it fast on cheap ARM hardware plus the `.vxrt`
container that the runtime consumes.
## Runtime performance
Cumulative RTF on a single CPU core, `arm64` release builds,
post-warmup. Live-mic figures are the production-realistic ones
(scheduler jitter + capture overhead included):
| Device | CPU | Decoder | Mode | RTF |
|----------------------------|------------|---------|-------------|-----------:|
| Xiaomi Redmi 9C (Android) | Cortex-A73 | RNN-T | file replay | **0.302** |
| Xiaomi Redmi 9C (Android) | Cortex-A73 | RNN-T | live mic | **0.353** |
| iPhone 13 Pro Max (iOS) | Apple A15 | RNN-T | live mic | **0.08–0.10** |
For the same weights, RNN-T decoding costs ~50 ms of CPU per
1.12 s chunk on SD662; the CTC head is ~5 ms per chunk with a
minor WER hit. The SDK exposes both decoders β€” pick per your
battery / accuracy trade-off.
Chunked streaming granularity is **80 ms** cache-aware
look-ahead. Inherent end-to-end buffering is one chunk
(β‰ˆ 1.12 s at chunk_size=112) before text emission begins.
## Model quality
Empirically validated on LibriSpeech test-clean (500-utterance
subset, matches the SDK repos' reported numbers):
| Decoder | WER | Notes |
|-----------------|-------:|--------------------------------------------------|
| **RNN-T** β˜… | **3.267 %** | Recommended default. Higher accuracy. |
| CTC | 4.895 % | ~15 % cheaper per chunk; long-session friendly. |
Model architecture, training data, and topline WER claims are
NVIDIA's β€” see the upstream checkpoint at
[huggingface.co/nvidia/stt_en_fastconformer_hybrid_medium_streaming_80ms_pc](https://huggingface.co/nvidia/stt_en_fastconformer_hybrid_medium_streaming_80ms_pc).
## Download & use
The `.vxrt` file on this HF repo is byte-identical to the one at
[github.com/VoxRT/voxrt-asr-models/releases](https://github.com/VoxRT/voxrt-asr-models/releases).
Either source is fine.
`.vxrt` files cannot be loaded with `transformers`, `nemo_toolkit`,
or any standard HF library β€” they are a proprietary container
the VoxRT runtime reads. Use one of our SDKs:
- Android β€” [`voxrt-asr-android`](https://github.com/VoxRT/voxrt-asr-android) (JitPack)
- iOS β€” [`voxrt-asr-ios`](https://github.com/VoxRT/voxrt-asr-ios) (Swift Package)
- Linux aarch64 β€” available on request (contact `help@voxrt.com`)
## Kotlin example
```kotlin
import com.voxrt.asr.VoxrtAsrNative
import com.voxrt.asr.VoxrtAsrStreamingEngine
val engine = VoxrtAsrStreamingEngine.fromAssetFd(modelFd)
// Or explicitly pick CTC:
// val engine = VoxrtAsrStreamingEngine.fromAssetFd(modelFd, VoxrtAsrNative.DECODE_CTC)
val delta = engine.processPcm(pcmFloatArray) // text emitted this call
val tail = engine.stop() // drain remaining text
engine.close()
```
`engine.processPcm` / `stop` / `reset` / `close` are
**synchronous and stateful** β€” the engine doesn't own a worker
thread. Drive it from your own capture / IO thread; marshal text
deltas back to UI via `runOnUiThread` / a Flow / your preferred
concurrency. RNN-T (default) survives chunk boundaries via its
LSTM state; CTC dedupes across chunks internally.
## Licensing
- **Model weights** are derived from
`nvidia/stt_en_fastconformer_hybrid_medium_streaming_80ms_pc`,
Β© NVIDIA Corporation, CC-BY-4.0 licensed.
- **Repackaging** into the `.vxrt` container preserves the CC-BY-4.0
obligations attached to the weights. Full notice lives at
[github.com/VoxRT/voxrt-asr-models/blob/main/LICENSE](https://github.com/VoxRT/voxrt-asr-models/blob/main/LICENSE).
- **The VoxRT runtime and `.vxrt` container format** are proprietary
Elephant Enterprises LLC IP. Redistribution allowed as an
unmodified part of the VoxRT SDKs above.
Attribution required by CC-BY-4.0:
> Speech recognition powered by NVIDIA NeMo FastConformer
> (streaming, medium, 80 ms look-ahead, P&C),
> Β© NVIDIA Corporation, licensed under CC-BY-4.0.
Include this line in your product's UI, docs, or credits when you
ship a product that runs this model.
## About VoxRT
VoxRT is a from-scratch on-device inference runtime tuned for
streaming audio on commodity ARM CPUs β€” no GPU, no NPU, no vendor
accelerator required. Sister products on the same runtime:
- Wake-word: **["Hey Assistant" model + custom-phrase tier](https://huggingface.co/VoxRT/wake-word-hey-assistant-vxrt)**
- Voice activity detection: **[Silero VAD in `.vxrt`](https://huggingface.co/VoxRT/silero-vad-vxrt)**
Commercial integration / custom-model packaging: `help@voxrt.com`
Β· [voxrt.com](https://voxrt.com)