Automatic Speech Recognition
NeMo
PyTorch
speech-recognition
cache-aware ASR
streaming-asr
speech
audio
FastConformer
RNNT
Parakeet
ASR
NeMo
Eval Results (legacy)
Instructions to use RedHatAI/nemotron-speech-streaming-en-0.6b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- NeMo
How to use RedHatAI/nemotron-speech-streaming-en-0.6b with NeMo:
import nemo.collections.asr as nemo_asr asr_model = nemo_asr.models.ASRModel.from_pretrained("RedHatAI/nemotron-speech-streaming-en-0.6b") transcriptions = asr_model.transcribe(["file.wav"]) - Notebooks
- Google Colab
- Kaggle
Add files using upload-large-folder tool
Browse files- .gitattributes +7 -0
- README.md +434 -0
- bias.md +4 -0
- explainability.md +14 -0
- figures/caching_schema.png +3 -0
- figures/inference_pipeline.png +3 -0
- figures/results_wer_and_scaling.png +3 -0
- nemotron-speech-streaming-en-0.6b.nemo +3 -0
- privacy.md +13 -0
- safety.md +7 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,10 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
nemotron-speech-realtime-en-600m.nemo filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
caching_schema.png filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
inference_pipeline.png filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
figures/caching_schema.png filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
figures/inference_pipeline.png filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
nemotron-speech-streaming-en-0.6b.nemo filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
figures/results_wer_and_scaling.png filter=lfs diff=lfs merge=lfs -text
|
README.md
ADDED
|
@@ -0,0 +1,434 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: other
|
| 3 |
+
license_name: nvidia-open-model-license
|
| 4 |
+
license_link: >-
|
| 5 |
+
https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-license/
|
| 6 |
+
library_name: nemo
|
| 7 |
+
datasets:
|
| 8 |
+
- nvidia/Granary
|
| 9 |
+
- YTC
|
| 10 |
+
- Yodas2
|
| 11 |
+
- LibriLight
|
| 12 |
+
- librispeech_asr
|
| 13 |
+
- fisher_corpus
|
| 14 |
+
- Switchboard-1
|
| 15 |
+
- WSJ-0
|
| 16 |
+
- WSJ-1
|
| 17 |
+
- National-Singapore-Corpus-Part-1
|
| 18 |
+
- National-Singapore-Corpus-Part-6
|
| 19 |
+
- vctk
|
| 20 |
+
- voxpopuli
|
| 21 |
+
- europarl
|
| 22 |
+
- multilingual_librispeech
|
| 23 |
+
- fleurs
|
| 24 |
+
- mozilla-foundation/common_voice_8_0
|
| 25 |
+
- MLCommons/peoples_speech
|
| 26 |
+
- google/speech_commands
|
| 27 |
+
thumbnail: null
|
| 28 |
+
tags:
|
| 29 |
+
- speech-recognition
|
| 30 |
+
- cache-aware ASR
|
| 31 |
+
- automatic-speech-recognition
|
| 32 |
+
- streaming-asr
|
| 33 |
+
- speech
|
| 34 |
+
- audio
|
| 35 |
+
- FastConformer
|
| 36 |
+
- RNNT
|
| 37 |
+
- Parakeet
|
| 38 |
+
- ASR
|
| 39 |
+
- pytorch
|
| 40 |
+
- NeMo
|
| 41 |
+
widget:
|
| 42 |
+
- example_title: Librispeech sample 1
|
| 43 |
+
src: https://cdn-media.huggingface.co/speech_samples/sample1.flac
|
| 44 |
+
- example_title: Librispeech sample 2
|
| 45 |
+
src: https://cdn-media.huggingface.co/speech_samples/sample2.flac
|
| 46 |
+
model-index:
|
| 47 |
+
- name: nemotron-speech-streaming-en-0.6b
|
| 48 |
+
results:
|
| 49 |
+
- task:
|
| 50 |
+
name: Automatic Speech Recognition
|
| 51 |
+
type: automatic-speech-recognition
|
| 52 |
+
dataset:
|
| 53 |
+
name: AMI
|
| 54 |
+
type: ami
|
| 55 |
+
config: ihm
|
| 56 |
+
split: test
|
| 57 |
+
metrics:
|
| 58 |
+
- name: WER (1.12s frame size)
|
| 59 |
+
type: wer
|
| 60 |
+
value: 11.58
|
| 61 |
+
- task:
|
| 62 |
+
name: Automatic Speech Recognition
|
| 63 |
+
type: automatic-speech-recognition
|
| 64 |
+
dataset:
|
| 65 |
+
name: Earnings22
|
| 66 |
+
type: earnings22
|
| 67 |
+
split: test
|
| 68 |
+
metrics:
|
| 69 |
+
- name: WER (1.12s frame size)
|
| 70 |
+
type: wer
|
| 71 |
+
value: 12.48
|
| 72 |
+
- task:
|
| 73 |
+
name: Automatic Speech Recognition
|
| 74 |
+
type: automatic-speech-recognition
|
| 75 |
+
dataset:
|
| 76 |
+
name: Gigaspeech
|
| 77 |
+
type: gigaspeech
|
| 78 |
+
split: test
|
| 79 |
+
metrics:
|
| 80 |
+
- name: WER (1.12s frame size)
|
| 81 |
+
type: wer
|
| 82 |
+
value: 11.45
|
| 83 |
+
- task:
|
| 84 |
+
name: Automatic Speech Recognition
|
| 85 |
+
type: automatic-speech-recognition
|
| 86 |
+
dataset:
|
| 87 |
+
name: LibriSpeech test-clean
|
| 88 |
+
type: librispeech_asr
|
| 89 |
+
config: clean
|
| 90 |
+
split: test
|
| 91 |
+
metrics:
|
| 92 |
+
- name: WER (1.12s frame size)
|
| 93 |
+
type: wer
|
| 94 |
+
value: 2.31
|
| 95 |
+
- task:
|
| 96 |
+
name: Automatic Speech Recognition
|
| 97 |
+
type: automatic-speech-recognition
|
| 98 |
+
dataset:
|
| 99 |
+
name: LibriSpeech test-other
|
| 100 |
+
type: librispeech_asr
|
| 101 |
+
config: other
|
| 102 |
+
split: test
|
| 103 |
+
metrics:
|
| 104 |
+
- name: WER (1.12s frame size)
|
| 105 |
+
type: wer
|
| 106 |
+
value: 4.75
|
| 107 |
+
- task:
|
| 108 |
+
name: Automatic Speech Recognition
|
| 109 |
+
type: automatic-speech-recognition
|
| 110 |
+
dataset:
|
| 111 |
+
name: SPGI Speech
|
| 112 |
+
type: spgispeech
|
| 113 |
+
split: test
|
| 114 |
+
metrics:
|
| 115 |
+
- name: WER (1.12s frame size)
|
| 116 |
+
type: wer
|
| 117 |
+
value: 2.62
|
| 118 |
+
- task:
|
| 119 |
+
name: Automatic Speech Recognition
|
| 120 |
+
type: automatic-speech-recognition
|
| 121 |
+
dataset:
|
| 122 |
+
name: TEDLIUM
|
| 123 |
+
type: tedlium
|
| 124 |
+
split: test
|
| 125 |
+
metrics:
|
| 126 |
+
- name: WER (1.12s frame size)
|
| 127 |
+
type: wer
|
| 128 |
+
value: 4.5
|
| 129 |
+
- task:
|
| 130 |
+
name: Automatic Speech Recognition
|
| 131 |
+
type: automatic-speech-recognition
|
| 132 |
+
dataset:
|
| 133 |
+
name: VoxPopuli
|
| 134 |
+
type: voxpopuli
|
| 135 |
+
config: en
|
| 136 |
+
split: test
|
| 137 |
+
metrics:
|
| 138 |
+
- name: WER (1.12s frame size)
|
| 139 |
+
type: wer
|
| 140 |
+
value: 7.57
|
| 141 |
+
metrics:
|
| 142 |
+
- wer
|
| 143 |
+
pipeline_tag: automatic-speech-recognition
|
| 144 |
+
---
|
| 145 |
+
|
| 146 |
+
|
| 147 |
+
# Nemotron Speech ASR
|
| 148 |
+
|
| 149 |
+
<style>
|
| 150 |
+
h1, h2, h3, h4, h5, h6 {
|
| 151 |
+
color: #76b900; /* NVIDIA green */
|
| 152 |
+
font-weight: 700;
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
hr {
|
| 156 |
+
border: none;
|
| 157 |
+
border-top: 1px solid #e5e7eb;
|
| 158 |
+
margin: 2rem 0;
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
/* Improve list spacing */
|
| 162 |
+
ul, ol {
|
| 163 |
+
margin-top: 0.5rem;
|
| 164 |
+
margin-bottom: 0.5rem;
|
| 165 |
+
}
|
| 166 |
+
|
| 167 |
+
/* Badge alignment consistency */
|
| 168 |
+
img {
|
| 169 |
+
display: inline;
|
| 170 |
+
vertical-align: middle;
|
| 171 |
+
}
|
| 172 |
+
|
| 173 |
+
|
| 174 |
+
</style>
|
| 175 |
+
|
| 176 |
+
[](#model-architecture)
|
| 177 |
+
| [](#model-architecture)
|
| 178 |
+
| [](#datasets)
|
| 179 |
+
|
| 180 |
+
Nemotron-Speech-Streaming-En-0.6b is the first unified model in the Nemotron Speech family, engineered to deliver high-quality English transcription across both low-latency streaming and high-throughput batch workloads. The model natively supports punctuation and capitalization and offers runtime flexibility with configurable chunk sizes, including 80ms, 160ms, 560ms, and 1120ms.
|
| 181 |
+
|
| 182 |
+
Why Choose nvidia/nemotron-speech-streaming-en-0.6b?
|
| 183 |
+
|
| 184 |
+
* **Native Streaming Architecture:** Cache-aware design enables efficient processing of continuous audio streams, designed and optimized for low-latency voice agent applications interaction.
|
| 185 |
+
* **Improved Operational Efficiency:** Delivers superior throughput compared to traditional buffered streaming approaches. This allows for a higher number of parallel streams within the same GPU memory constraints, directly reducing operational costs for production environments.
|
| 186 |
+
* **Dynamic Runtime Flexibility:** Enables you to choose the optimal operating point on the latency-accuracy Pareto curve at inference time. No re-training is required to adjust for different use-case requirements.
|
| 187 |
+
* **Punctuation & Capitalization:** Built-in support for punctuation and capitalization in output text
|
| 188 |
+
|
| 189 |
+
<figure align="center">
|
| 190 |
+
<img src="figures/results_wer_and_scaling.png" width="1250" />
|
| 191 |
+
<figcaption>
|
| 192 |
+
Nemotron-speech-streaming-en-0.6b allows users to choose the optimal operating point on the latency-accuracy pareto curve at inference time, without requiring any re-training. Further, the cache-aware streaming mechanism scales much better than buffered streaming approaches, consistently outperforming production models like <a href="https://build.nvidia.com/nvidia/parakeet-ctc-1_1b-asr"> parakeet-ctc-1_1b-asr </a> across chunk sizes.
|
| 193 |
+
</figcaption>
|
| 194 |
+
</figure>
|
| 195 |
+
|
| 196 |
+
This model consists of a cache-aware streaming 🦜 Parakeet (FastConformer) encoder with an RNN-T decoder. It is designed for real-time speech-to-text applications where low latency is critical, such as voice assistants, live captioning, and conversational AI systems. Unlike traditional "buffered" streaming, the cache-aware architecture enables continuous transcription by processing only new audio chunks while reusing cached encoder context. This significantly improves computational efficiency and minimizes end-to-end delay without sacrificing accuracy.
|
| 197 |
+
|
| 198 |
+
🗣️ **Experience `Nemotron-Speech-Streaming-En-0.6b` in action** here: [https://huggingface.co/spaces/nvidia/nemotron-speech-streaming-en-0.6b](https://huggingface.co/spaces/nvidia/nemotron-speech-streaming-en-0.6b)
|
| 199 |
+
|
| 200 |
+
This model is ready for commercial/non-commercial use.
|
| 201 |
+
|
| 202 |
+
Read more about the model in the [dev blog](https://huggingface.co/blog/nvidia/nemotron-speech-asr-scaling-voice-agents) and check out the [paper](https://arxiv.org/abs/2312.17279).
|
| 203 |
+
|
| 204 |
+
|
| 205 |
+
<div align="center">
|
| 206 |
+
<img src="figures/inference_pipeline.png" width="750" />
|
| 207 |
+
</div>
|
| 208 |
+
|
| 209 |
+
|
| 210 |
+
## Explore more from NVIDIA:
|
| 211 |
+
For documentation, deployment guides, enterprise-ready APIs, and the latest open models—including Nemotron and other cutting-edge speech, translation, and generative AI—visit the NVIDIA Developer Portal at [developer.nvidia.com](https://developer.nvidia.com/).
|
| 212 |
+
Join the community to access tools, support, and resources to accelerate your development with NVIDIA's NeMo, Riva, NIM, and foundation models.<br>
|
| 213 |
+
|
| 214 |
+
What is [Nemotron](https://www.nvidia.com/en-us/ai-data-science/foundation-models/nemotron/)?<br>
|
| 215 |
+
NVIDIA Developer [Nemotron](https://developer.nvidia.com/nemotron)<br>
|
| 216 |
+
[NVIDIA Riva Speech](https://developer.nvidia.com/riva?sortBy=developer_learning_library%2Fsort%2Ffeatured_in.riva%3Adesc%2Ctitle%3Aasc#demos)<br>
|
| 217 |
+
[NeMo Documentation](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemotoolkit/asr/models.html)<br>
|
| 218 |
+
|
| 219 |
+
Also, check out the following NVIDIA speech models that extend the capabilities of Nemotron-Speech-Streaming:
|
| 220 |
+
* Multitalker Parakeet Streaming - https://huggingface.co/nvidia/multitalker-parakeet-streaming-0.6b-v1
|
| 221 |
+
* Parakeet Realtime EOU - https://huggingface.co/nvidia/parakeet_realtime_eou_120m-v1
|
| 222 |
+
|
| 223 |
+
## Access Model Inference and Examples:
|
| 224 |
+
* Deploy the Nemotron Speech ASR endpoint on [Modal](https://github.com/modal-projects/modal-nvidia-asr)
|
| 225 |
+
* Build local voice agent using [Daily’s framework](https://github.com/pipecat-ai/nemotron-january-2026)
|
| 226 |
+
|
| 227 |
+
## Model Architecture
|
| 228 |
+
|
| 229 |
+
**Architecture Type:** FastConformer-CacheAware-RNNT
|
| 230 |
+
|
| 231 |
+
The model is based on the Cache-Aware [1] FastConformer [2] architecture with 24 encoder layers and an RNNT (Recurrent Neural Network Transducer) decoder. The cache-aware streaming design enables efficient processing of audio in chunks while maintaining context from previous frames. Unlike buffered inference, this model maintains caches for all encoder self-attention and convolution layers. This enables reuse of hidden states at every streaming step, where cached activations eliminate redundant computations. As a result, there are no overlapping computations; each processed frame is strictly non-overlapping.
|
| 232 |
+
|
| 233 |
+
The caching schema of self-attention and convolution layers for consecutive chunks is as follows. For more details, please refer to [1].
|
| 234 |
+
<div align="center">
|
| 235 |
+
<img src="figures/caching_schema.png" width="750" />
|
| 236 |
+
</div>
|
| 237 |
+
|
| 238 |
+
**Network Architecture:**
|
| 239 |
+
- Encoder: Cache-Aware FastConformer with 24 layers
|
| 240 |
+
- Decoder: RNNT (Recurrent Neural Network Transducer)
|
| 241 |
+
- Parameters: 600M
|
| 242 |
+
|
| 243 |
+
## NVIDIA NeMo
|
| 244 |
+
|
| 245 |
+
To train, fine-tune or perform inference with this model, you will need to install [NVIDIA NeMo](https://github.com/NVIDIA/NeMo)[4]. We recommend you install it after you've installed Cython and latest PyTorch version.
|
| 246 |
+
|
| 247 |
+
```bash
|
| 248 |
+
apt-get update && apt-get install -y libsndfile1 ffmpeg
|
| 249 |
+
pip install Cython packaging
|
| 250 |
+
pip install git+https://github.com/NVIDIA/NeMo.git@main#egg=nemo_toolkit[asr]
|
| 251 |
+
```
|
| 252 |
+
|
| 253 |
+
## How to Use this Model
|
| 254 |
+
|
| 255 |
+
The model is available for use in the NeMo Framework, and can be used as a pre-trained checkpoint for inference or for fine-tuning on another dataset.
|
| 256 |
+
|
| 257 |
+
### Loading the Model
|
| 258 |
+
|
| 259 |
+
```python
|
| 260 |
+
import nemo.collections.asr as nemo_asr
|
| 261 |
+
asr_model = nemo_asr.models.ASRModel.from_pretrained(model_name="nvidia/nemotron-speech-streaming-en-0.6b")
|
| 262 |
+
```
|
| 263 |
+
|
| 264 |
+
### Streaming Inference
|
| 265 |
+
You can use the cache-aware streaming inference script from NeMo - [NeMo/examples/asr/asr_cache_aware_streaming/speech_to_text_cache_aware_streaming_infer.py](https://github.com/NVIDIA-NeMo/NeMo/blob/main/examples/asr/asr_cache_aware_streaming/speech_to_text_cache_aware_streaming_infer.py)
|
| 266 |
+
|
| 267 |
+
``` bash
|
| 268 |
+
cd NeMo
|
| 269 |
+
python examples/asr/asr_cache_aware_streaming/speech_to_text_cache_aware_streaming_infer.py \
|
| 270 |
+
model_path=<model_path> \
|
| 271 |
+
dataset_manifest=<dataset_manifest> \
|
| 272 |
+
batch_size=<batch_size> \
|
| 273 |
+
att_context_size="[70,13]" \ #set the second value to the desired right context from {0,1,6,13}
|
| 274 |
+
output_path=<output_folder>
|
| 275 |
+
```
|
| 276 |
+
|
| 277 |
+
|
| 278 |
+
You can also run streaming inference through the pipeline method, which uses [NeMo/examples/asr/conf/asr_streaming_inference/cache_aware_rnnt.yaml](https://github.com/NVIDIA-NeMo/NeMo/blob/main/examples/asr/conf/asr_streaming_inference/cache_aware_rnnt.yaml) configuration file to build end‑to‑end workflows with punctuation and capitalization (PnC), inverse text normalization (ITN), and translation support.
|
| 279 |
+
|
| 280 |
+
```python
|
| 281 |
+
from nemo.collections.asr.inference.factory.pipeline_builder import PipelineBuilder
|
| 282 |
+
from omegaconf import OmegaConf
|
| 283 |
+
|
| 284 |
+
# Path to the cache aware config file downloaded from above link
|
| 285 |
+
cfg_path = 'cache_aware_rnnt.yaml'
|
| 286 |
+
cfg = OmegaConf.load(cfg_path)
|
| 287 |
+
|
| 288 |
+
# Pass the paths of all the audio files for inferencing
|
| 289 |
+
audios = ['/path/to/your/audio.wav']
|
| 290 |
+
|
| 291 |
+
# Create the pipeline object and run inference
|
| 292 |
+
pipeline = PipelineBuilder.build_pipeline(cfg)
|
| 293 |
+
output = pipeline.run(audios)
|
| 294 |
+
|
| 295 |
+
# Print the output
|
| 296 |
+
for entry in output:
|
| 297 |
+
print(entry['text'])
|
| 298 |
+
```
|
| 299 |
+
|
| 300 |
+
_______
|
| 301 |
+
|
| 302 |
+
### Setting up Streaming Configuration
|
| 303 |
+
|
| 304 |
+
Latency is defined by the `att_context_size` param, where att_context_size = `{num_frames_left_context, num_frame_right_context}`, all measured in **80ms frames**:
|
| 305 |
+
* [70, 0]: Chunk size = 1 (1 × 80ms = 0.08s)
|
| 306 |
+
* [70, 1]: Chunk size = 2 (2 × 80ms = 0.16s)
|
| 307 |
+
* [70, 6]: Chunk size = 7 (7 × 80ms = 0.56s)
|
| 308 |
+
* [70, 13]: Chunk size = 14 (14 × 80ms = 1.12s)
|
| 309 |
+
|
| 310 |
+
Here, chunk size = current frame + right context; each chunk is processed in non-overlapping fashion.
|
| 311 |
+
|
| 312 |
+
|
| 313 |
+
### Input
|
| 314 |
+
|
| 315 |
+
This model accepts single-channel (mono) audio sampled at 16,000 Hz. At least 80ms duration is required.
|
| 316 |
+
|
| 317 |
+
### Output
|
| 318 |
+
|
| 319 |
+
The model outputs English text transcriptions with punctuation and capitalization. The output text might be empty if input audio doesn't contain any speech.
|
| 320 |
+
|
| 321 |
+
## Datasets
|
| 322 |
+
|
| 323 |
+
### Training Datasets
|
| 324 |
+
|
| 325 |
+
The majority of the training data comes from the English portion of the Granary dataset [3]:
|
| 326 |
+
|
| 327 |
+
- YouTube-Commons (YTC) (109.5k hours)
|
| 328 |
+
- YODAS2 (102k hours)
|
| 329 |
+
- Mosel (14k hours)
|
| 330 |
+
- LibriLight (49.5k hours)
|
| 331 |
+
|
| 332 |
+
In addition, the following datasets were used:
|
| 333 |
+
|
| 334 |
+
- Librispeech 960 hours
|
| 335 |
+
- Fisher Corpus
|
| 336 |
+
- Switchboard-1 Dataset
|
| 337 |
+
- WSJ-0 and WSJ-1
|
| 338 |
+
- National Speech Corpus (Part 1, Part 6)
|
| 339 |
+
- VCTK
|
| 340 |
+
- VoxPopuli (EN)
|
| 341 |
+
- Europarl-ASR (EN)
|
| 342 |
+
- Multilingual Librispeech (MLS EN)
|
| 343 |
+
- Mozilla Common Voice (v11.0)
|
| 344 |
+
- Mozilla Common Voice (v7.0)
|
| 345 |
+
- Mozilla Common Voice (v4.0)
|
| 346 |
+
- People Speech
|
| 347 |
+
- AMI
|
| 348 |
+
|
| 349 |
+
**Data Modality:** Audio and text
|
| 350 |
+
|
| 351 |
+
**Audio Training Data Size:** 285k hours
|
| 352 |
+
|
| 353 |
+
**Data Collection Method:** Human - All audios are human recorded
|
| 354 |
+
|
| 355 |
+
**Labeling Method:** Hybrid (Human, Synthetic) - Some transcripts are generated by ASR models, while some are manually labeled
|
| 356 |
+
|
| 357 |
+
### Evaluation Datasets
|
| 358 |
+
|
| 359 |
+
The model was evaluated on the HuggingFace ASR Leaderboard datasets:
|
| 360 |
+
|
| 361 |
+
- AMI
|
| 362 |
+
- Earnings22
|
| 363 |
+
- Gigaspeech
|
| 364 |
+
- LibriSpeech test-clean
|
| 365 |
+
- LibriSpeech test-other
|
| 366 |
+
- SPGI Speech
|
| 367 |
+
- TEDLIUM
|
| 368 |
+
- VoxPopuli
|
| 369 |
+
|
| 370 |
+
## Performance
|
| 371 |
+
|
| 372 |
+
## ASR Performance (w/o PnC)
|
| 373 |
+
|
| 374 |
+
ASR performance is measured using the Word Error Rate (WER). Both ground-truth and predicted texts are processed using [whisper-normalizer](https://pypi.org/project/whisper-normalizer/) version 0.1.12.
|
| 375 |
+
|
| 376 |
+
The following tables show the WER on the [HuggingFace OpenASR leaderboard](https://huggingface.co/spaces/hf-audio/open_asr_leaderboard) datasets:
|
| 377 |
+
|
| 378 |
+
### Word Error Rate (WER) for chunk size of 1.12s
|
| 379 |
+
|
| 380 |
+
| | Average | AMI | Earnings22 | Gigaspeech | LS-test-clean | LS-test-other | SPGI | TEDLIUM | VoxPopuli |
|
| 381 |
+
| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
| 382 |
+
| **WER (%)** | **7.16** | 11.58 | 12.48 | 11.45 | 2.31 | 4.75 | 2.62 | 4.50 | 7.57 |
|
| 383 |
+
|
| 384 |
+
### WER for chunk size of 0.56s
|
| 385 |
+
|
| 386 |
+
| | Average | AMI | Earnings22 | Gigaspeech | LS-test-clean | LS-test-other | SPGI | TEDLIUM | VoxPopuli |
|
| 387 |
+
| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
| 388 |
+
| **WER (%)** | **7.22** | 11.69 | 12.61 | 11.43 | 2.40 | 4.97 | 2.64 | 4.46 | 7.59 |
|
| 389 |
+
|
| 390 |
+
### WER for chunk size of 0.16s
|
| 391 |
+
|
| 392 |
+
| | Average | AMI | Earnings22 | Gigaspeech | LS-test-clean | LS-test-other | SPGI | TEDLIUM | VoxPopuli |
|
| 393 |
+
| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
| 394 |
+
| **WER (%)** | **7.84** | 13.88 | 13.61 | 12.12 | 2.43 | 5.33 | 2.82 | 4.80 | 7.72 |
|
| 395 |
+
|
| 396 |
+
### WER for chunk size of 0.08s
|
| 397 |
+
|
| 398 |
+
| | Average | AMI | Earnings22 | Gigaspeech | LS-test-clean | LS-test-other | SPGI | TEDLIUM | VoxPopuli |
|
| 399 |
+
| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
| 400 |
+
| **WER (%)** | **8.528** | 16.05 | 14.6 | 12.92 | 2.55 | 5.79 | 3.01 | 5.07 | 8.23 |
|
| 401 |
+
|
| 402 |
+
## Software Integration
|
| 403 |
+
|
| 404 |
+
**Runtime Engine:** NeMo 25.11
|
| 405 |
+
|
| 406 |
+
**Supported Hardware Microarchitecture Compatibility:**
|
| 407 |
+
- NVIDIA Ampere
|
| 408 |
+
- NVIDIA Blackwell
|
| 409 |
+
- NVIDIA Hopper
|
| 410 |
+
- NVIDIA Volta
|
| 411 |
+
|
| 412 |
+
**Test Hardware:**
|
| 413 |
+
- NVIDIA V100
|
| 414 |
+
- NVIDIA A100
|
| 415 |
+
- NVIDIA A6000
|
| 416 |
+
- DGX Spark
|
| 417 |
+
|
| 418 |
+
**Preferred/Supported Operating System(s):** Linux
|
| 419 |
+
|
| 420 |
+
## Ethical Considerations
|
| 421 |
+
|
| 422 |
+
NVIDIA believes Trustworthy AI is a shared responsibility and we have established policies and practices to enable development for a wide array of AI applications. When downloaded or used in accordance with our terms of service, developers should work with their internal model team to ensure this model meets requirements for the relevant industry and use case and addresses unforeseen product misuse.
|
| 423 |
+
|
| 424 |
+
Please report model quality, risk, security vulnerabilities or NVIDIA AI Concerns [here](https://www.nvidia.com/en-us/support/submit-security-vulnerability/).
|
| 425 |
+
|
| 426 |
+
## References
|
| 427 |
+
|
| 428 |
+
[1] [Stateful Conformer with Cache-based Inference for Streaming Automatic Speech Recognition](https://arxiv.org/abs/2312.17279)
|
| 429 |
+
|
| 430 |
+
[2] [Fast Conformer with Linearly Scalable Attention for Efficient Speech Recognition](https://arxiv.org/abs/2305.05084)
|
| 431 |
+
|
| 432 |
+
[3] [NVIDIA Granary](https://huggingface.co/datasets/nvidia/Granary)
|
| 433 |
+
|
| 434 |
+
[4] [NVIDIA NeMo Framework](https://github.com/NVIDIA/NeMo)
|
bias.md
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Field | Response
|
| 2 |
+
:---------------------------------------------------------------------------------------------------|:---------------
|
| 3 |
+
Participation considerations from adversely impacted groups [protected classes](https://www.senate.ca.gov/content/protected-classes) in model design and testing: | None
|
| 4 |
+
Measures taken to mitigate against unwanted bias: | None
|
explainability.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Field | Response
|
| 2 |
+
:------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------
|
| 3 |
+
Intended Task/Domain: | Speech Recognition
|
| 4 |
+
Model Type: | FastConformer-RNNT
|
| 5 |
+
Intended Users: | People who work with conversational AI models and need to transcribe speech to text with low latency in streaming scenarios.
|
| 6 |
+
Output: | Text tokens
|
| 7 |
+
Describe how the model works: | Raw audio is passed into the model, and the model outputs text.
|
| 8 |
+
Name the adversely impacted groups this has been tested to deliver comparable outcomes regardless of: | Not Applicable
|
| 9 |
+
Technical Limitations & Mitigation: | The model is trained on only a limited amount of English speech data; therefore, it may not work well for other languages, and its performance may degrade in noisy environments.
|
| 10 |
+
Verified to have met prescribed NVIDIA quality standards: | Yes
|
| 11 |
+
Performance Metrics: | Word Error Rate (WER)
|
| 12 |
+
Potential Known Risks: | The model may produce incorrect transcriptions if the audio is noisy or the speech is not clear, and predicted text may be inaccurate in domains that are not well-represented in the training data.
|
| 13 |
+
Licensing: | [NVIDIA Open Model License](https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-license/)
|
| 14 |
+
|
figures/caching_schema.png
ADDED
|
Git LFS Details
|
figures/inference_pipeline.png
ADDED
|
Git LFS Details
|
figures/results_wer_and_scaling.png
ADDED
|
Git LFS Details
|
nemotron-speech-streaming-en-0.6b.nemo
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8aa8b21fb8a5b7d06dd05b4c57351fdee68a925c29ac3fccbecb8e5d77455cc2
|
| 3 |
+
size 2473031680
|
privacy.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Field | Response
|
| 2 |
+
:----------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------
|
| 3 |
+
Generatable or reverse engineerable personal data? | No
|
| 4 |
+
Personal data used to create this model? | Yes - Voice
|
| 5 |
+
Was consent obtained for any personal data used? | Yes
|
| 6 |
+
Is a mechanism in place to honor data subject right of access or deletion of personal data? | Yes
|
| 7 |
+
If personal data was collected for the development of the model, was it collected directly by NVIDIA? | Yes
|
| 8 |
+
If personal data was collected for the development of the model by NVIDIA, do you maintain or have access to disclosures made to data subjects? | Yes
|
| 9 |
+
If personal data was collected for the development of this AI model, was it minimized to only what was required? | Yes
|
| 10 |
+
Is there provenance for all datasets used in training? | Yes
|
| 11 |
+
Does data labeling (annotation, metadata) comply with privacy laws? | Yes
|
| 12 |
+
Is data compliant with data subject requests for data correction or removal, if such a request was made? | The data is compliant where applicable, but is not applicable for all data.
|
| 13 |
+
Applicable Privacy Policy | [https://www.nvidia.com/en-us/about-nvidia/privacy-policy/]
|
safety.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Field | Response
|
| 2 |
+
:---------------------------------------------------|:----------------------------------
|
| 3 |
+
Model Application Field(s): | Customer Service
|
| 4 |
+
Describe the life critical impact (if present). | Not Applicable
|
| 5 |
+
Use Case Restrictions: | Abide by [NVIDIA Open Model License](https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-license/)
|
| 6 |
+
Model and dataset restrictions: | The Principle of least privilege (PoLP) is applied limiting access for dataset generation and model development. Restrictions enforce dataset access during training, and dataset license constraints adhered to.
|
| 7 |
+
|