aufklarer commited on
Commit
edc7ea5
·
verified ·
1 Parent(s): 0747c3d

Add Nemotron-3.5 ASR streaming multilingual bundle + model card

Browse files
Files changed (11) hide show
  1. .gitattributes +3 -0
  2. README.md +136 -0
  3. config.json +28 -0
  4. decoder.onnx +3 -0
  5. decoder.onnx.data +3 -0
  6. encoder.onnx +3 -0
  7. encoder.onnx.data +3 -0
  8. joint.onnx +3 -0
  9. joint.onnx.data +3 -0
  10. languages.json +127 -0
  11. vocab.json +0 -0
.gitattributes CHANGED
@@ -33,3 +33,6 @@ 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
+ decoder.onnx.data filter=lfs diff=lfs merge=lfs -text
37
+ encoder.onnx.data filter=lfs diff=lfs merge=lfs -text
38
+ joint.onnx.data filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,136 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: other
3
+ license_name: nvidia-open-model-license
4
+ license_link: https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-license/
5
+ language:
6
+ - en
7
+ - es
8
+ - zh
9
+ - hi
10
+ - ar
11
+ - fr
12
+ - de
13
+ - ja
14
+ - ru
15
+ - pt
16
+ - ko
17
+ - it
18
+ - nl
19
+ - pl
20
+ - tr
21
+ - uk
22
+ - ro
23
+ - cs
24
+ - hu
25
+ - sv
26
+ - da
27
+ - fi
28
+ - th
29
+ - vi
30
+ - id
31
+ tags:
32
+ - automatic-speech-recognition
33
+ - streaming-asr
34
+ - cache-aware
35
+ - multilingual
36
+ - FastConformer
37
+ - RNNT
38
+ - onnx
39
+ base_model: nvidia/nemotron-3.5-asr-streaming-0.6b
40
+ library_name: onnxruntime
41
+ pipeline_tag: automatic-speech-recognition
42
+ ---
43
+
44
+ # Nemotron-3.5-ASR-Streaming-Multilingual-0.6B — ONNX (FP16)
45
+
46
+ Cache-aware **streaming** multilingual speech recognition. A 0.6 B FastConformer-RNNT
47
+ encoder with a 128-slot **language prompt** (one slot per language/locale), exported to
48
+ ONNX in **FP16**. FP16 is lossless versus the FP32 source (identical WER/CER) at half the
49
+ download size, and is hardware-accelerated on GPU / NPU / Android-NNAPI.
50
+
51
+ - **Architecture**: cache-aware FastConformer encoder (24 layers, 1024 hidden, 8× subsampling) + RNN-T decoder/joint
52
+ - **Streaming**: 320 ms chunk, 240 ms lookahead, left attention context 56, right context 3
53
+ - **Languages**: 100+ via the prompt dictionary (`languages.json`); benchmarked on 6 below
54
+ - **Audio**: 16 kHz mono, 128-bin log-mel front end
55
+
56
+ ## Model
57
+
58
+ | | |
59
+ |---|---|
60
+ | Parameters | ~0.6 B |
61
+ | Format | ONNX (external-data weights) |
62
+ | Precision | FP16 |
63
+ | Bundle size | ~1.25 GB |
64
+ | Sample rate | 16 kHz mono |
65
+ | Chunk / lookahead | 320 ms / 240 ms |
66
+
67
+ ## Files
68
+
69
+ | File | Size | Description |
70
+ |---|---|---|
71
+ | `encoder.onnx` + `encoder.onnx.data` | ~1.18 GB | Cache-aware FastConformer encoder (FP16) |
72
+ | `decoder.onnx` + `decoder.onnx.data` | ~30 MB | RNN-T prediction network |
73
+ | `joint.onnx` + `joint.onnx.data` | ~19 MB | RNN-T joint network |
74
+ | `config.json` | <1 KB | Model + streaming config (mel, chunk, cache sizes) |
75
+ | `languages.json` | ~2 KB | Locale → prompt-slot dictionary (128 slots) |
76
+ | `vocab.json` | ~230 KB | 13 087-token BPE vocabulary |
77
+
78
+ ## Performance
79
+
80
+ FLEURS test, 320 ms streaming, **CPU**, n=30 per language. FP16 is bit-equivalent to FP32.
81
+ For Japanese, **CER** is the meaningful metric (no word boundaries).
82
+
83
+ | Language | WER % | CER % |
84
+ |---|---|---|
85
+ | English (en-US) | 9.92 | 5.65 |
86
+ | German (de-DE) | 12.68 | 7.40 |
87
+ | French (fr-FR) | 15.93 | 6.02 |
88
+ | Arabic (ar-EG) | 14.02 | 3.74 |
89
+ | Hindi (hi-IN) | 7.37 | 4.46 |
90
+ | Japanese (ja-JP) | — | 16.28 |
91
+
92
+ Resource profile (8.4 s utterance, ONNX Runtime CPU): encoder ~87 ms/chunk (RTF ~0.27),
93
+ peak RSS ~3.4 GB. Note: ONNX Runtime up-converts FP16→FP32 on CPU (no native FP16 CPU
94
+ kernels), so FP16's runtime wins are realized on GPU / NPU / NNAPI — on CPU its benefit is
95
+ the smaller download. For lowest CPU latency/RAM, use the INT8 build.
96
+
97
+ ## Usage
98
+
99
+ ```python
100
+ import onnxruntime as ort
101
+
102
+ so = ort.SessionOptions()
103
+ enc = ort.InferenceSession("encoder.onnx", so, providers=["CPUExecutionProvider"])
104
+ dec = ort.InferenceSession("decoder.onnx", so, providers=["CPUExecutionProvider"])
105
+ joint = ort.InferenceSession("joint.onnx", so, providers=["CPUExecutionProvider"])
106
+
107
+ # Pick the language prompt slot from languages.json, e.g. "en-US" -> 0, "ja-JP" -> 10.
108
+ # Front end: 128-bin log-mel (n_fft=512, win=400, hop=160, preemph=0.97), 16 kHz mono.
109
+ # Streaming contract (per chunk): feed 320 ms of audio + the carried encoder caches
110
+ # (attention / conv / pre-cache), then run the RNN-T greedy loop over the 4 emitted frames.
111
+ # Port wiring for the encoder caches is described by config.json's "streaming" block.
112
+ ```
113
+
114
+ Production streaming, cache management and RNN-T greedy decoding are handled by the
115
+ **[speech-android](https://github.com/soniqo/speech-android)** SDK.
116
+
117
+ ## Source
118
+
119
+ Converted from **[nvidia/nemotron-3.5-asr-streaming-0.6b](https://huggingface.co/nvidia/nemotron-3.5-asr-streaming-0.6b)**
120
+ (NVIDIA NeMo). Licensed under the
121
+ [NVIDIA Open Model License](https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-license/).
122
+
123
+ ## Related models
124
+
125
+ | Variant | Repo |
126
+ |---|---|
127
+ | ONNX · FP16 (this) | `soniqo/Nemotron-3.5-ASR-Streaming-Multilingual-0.6B-ONNX-FP16` |
128
+ | ONNX · INT8 | [soniqo/…-ONNX-INT8](https://huggingface.co/soniqo/Nemotron-3.5-ASR-Streaming-Multilingual-0.6B-ONNX-INT8) |
129
+ | LiteRT · FP16 | [soniqo/…-LiteRT-FP16](https://huggingface.co/soniqo/Nemotron-3.5-ASR-Streaming-Multilingual-0.6B-LiteRT-FP16) |
130
+ | LiteRT · INT8 | [soniqo/…-LiteRT-INT8](https://huggingface.co/soniqo/Nemotron-3.5-ASR-Streaming-Multilingual-0.6B-LiteRT-INT8) |
131
+
132
+ ## Links
133
+
134
+ - [speech-android](https://github.com/soniqo/speech-android) — Android SDK
135
+ - [soniqo.audio](https://soniqo.audio) — website
136
+ - [blog](https://soniqo.audio/blog) — blog
config.json ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "modelName": "nemotron-3.5-asr-streaming-multilingual-0.6b",
3
+ "numMelBins": 128,
4
+ "sampleRate": 16000,
5
+ "nFFT": 512,
6
+ "hopLength": 160,
7
+ "winLength": 400,
8
+ "preEmphasis": 0.97,
9
+ "encoderHidden": 1024,
10
+ "encoderLayers": 24,
11
+ "subsamplingFactor": 8,
12
+ "attentionLeftContext": 56,
13
+ "convCacheSize": 8,
14
+ "decoderHidden": 640,
15
+ "decoderLayers": 2,
16
+ "vocabSize": 13087,
17
+ "blankTokenId": 13087,
18
+ "numPrompts": 128,
19
+ "streaming": {
20
+ "chunkMs": 320,
21
+ "chunkSize": 4,
22
+ "rightContext": 3,
23
+ "lookaheadMs": 240,
24
+ "melFrames": 32,
25
+ "preCacheSize": 9,
26
+ "outputFrames": 4
27
+ }
28
+ }
decoder.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:965f7cb2fa4b04364d1562c76e9d756e7f6c50548e0436c6c379cb4189bf06fb
3
+ size 7040
decoder.onnx.data ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cafdb046f5dc849be2c0183dd3da17befa3f3a4dc5cead867793c23a69f5b929
3
+ size 29880320
encoder.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:851c598c39729c0925b4d2f066821b1283676ed307d9f38c7d0174b6d90330e8
3
+ size 22130711
encoder.onnx.data ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4e0ae7c84854c5d322f9a168283e47c4f2da603a5b1f4ce402cad66f939e4b92
3
+ size 1236396032
joint.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a4ae1a699ab5aee9e85499c51907ec58714806c54638c7b5357510d7dded60db
3
+ size 3207
joint.onnx.data ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:35eb3b1c090cc72a451f7250b7ee0e50573cebb3bb4efd9cf90ae6c6d0374d92
3
+ size 18911296
languages.json ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "numPrompts": 128,
3
+ "promptDictionary": {
4
+ "en-US": 0,
5
+ "en": 0,
6
+ "en-GB": 1,
7
+ "enGB": 1,
8
+ "es-ES": 2,
9
+ "esES": 2,
10
+ "es-US": 3,
11
+ "es": 3,
12
+ "zh-CN": 4,
13
+ "zh-ZH": 4,
14
+ "zh-TW": 5,
15
+ "hi-IN": 6,
16
+ "hi": 6,
17
+ "hi-HI": 6,
18
+ "ar-AR": 7,
19
+ "ar": 7,
20
+ "fr-FR": 8,
21
+ "fr": 8,
22
+ "de-DE": 9,
23
+ "de": 9,
24
+ "ja-JP": 10,
25
+ "ja-JA": 10,
26
+ "ru-RU": 11,
27
+ "ru": 11,
28
+ "pt-BR": 12,
29
+ "pt-PT": 13,
30
+ "pt": 13,
31
+ "ko-KR": 14,
32
+ "ko": 14,
33
+ "ko-KO": 14,
34
+ "it-IT": 15,
35
+ "it": 15,
36
+ "nl-NL": 16,
37
+ "nl": 16,
38
+ "pl-PL": 17,
39
+ "pl": 17,
40
+ "tr-TR": 18,
41
+ "tr": 18,
42
+ "uk-UA": 19,
43
+ "uk": 19,
44
+ "ro-RO": 20,
45
+ "ro": 20,
46
+ "el-GR": 21,
47
+ "el": 21,
48
+ "cs-CZ": 22,
49
+ "cs": 22,
50
+ "hu-HU": 23,
51
+ "hu": 23,
52
+ "sv-SE": 24,
53
+ "sv": 24,
54
+ "da-DK": 25,
55
+ "da": 25,
56
+ "fi-FI": 26,
57
+ "fi": 26,
58
+ "no-NO": 27,
59
+ "no": 27,
60
+ "nb-NO": 103,
61
+ "nb": 103,
62
+ "nn-NO": 104,
63
+ "nn": 104,
64
+ "sk-SK": 28,
65
+ "sk": 28,
66
+ "hr-HR": 29,
67
+ "hr": 29,
68
+ "bg-BG": 30,
69
+ "bg": 30,
70
+ "lt-LT": 31,
71
+ "lt": 31,
72
+ "et-EE": 60,
73
+ "et": 60,
74
+ "lv-LV": 61,
75
+ "lv": 61,
76
+ "sl-SI": 62,
77
+ "sl": 62,
78
+ "th-TH": 32,
79
+ "vi-VN": 33,
80
+ "id-ID": 34,
81
+ "ms-MY": 35,
82
+ "bn-IN": 36,
83
+ "ur-PK": 37,
84
+ "fa-IR": 38,
85
+ "ta-IN": 39,
86
+ "te-IN": 40,
87
+ "mr-IN": 41,
88
+ "gu-IN": 42,
89
+ "kn-IN": 43,
90
+ "ml-IN": 44,
91
+ "si-LK": 45,
92
+ "ne-NP": 46,
93
+ "km-KH": 47,
94
+ "sw-KE": 48,
95
+ "am-ET": 49,
96
+ "ha-NG": 50,
97
+ "zu-ZA": 51,
98
+ "yo-NG": 52,
99
+ "ig-NG": 53,
100
+ "af-ZA": 54,
101
+ "rw-RW": 55,
102
+ "so-SO": 56,
103
+ "ny-MW": 57,
104
+ "ln-CD": 58,
105
+ "or-KE": 59,
106
+ "he-IL": 64,
107
+ "ku-TR": 65,
108
+ "az-AZ": 66,
109
+ "ka-GE": 67,
110
+ "hy-AM": 68,
111
+ "uz-UZ": 69,
112
+ "tg-TJ": 70,
113
+ "ky-KG": 71,
114
+ "qu-PE": 80,
115
+ "ay-BO": 81,
116
+ "gn-PY": 82,
117
+ "nah-MX": 83,
118
+ "mi-NZ": 96,
119
+ "haw-US": 97,
120
+ "sm-WS": 98,
121
+ "to-TO": 99,
122
+ "fr-CA": 100,
123
+ "mt-MT": 102,
124
+ "auto": 101
125
+ },
126
+ "autoSlot": 101
127
+ }
vocab.json ADDED
The diff for this file is too large to render. See raw diff