Downloads · 30 days
21
7% of all-time downloads
hlevring/parakeet-rnnt-110m-da-dk-onnx
parakeet-rnnt-110m-da-dk-onnx is a automatic speech recognition model from hlevring. Use it when you need speech turned into text. It is set up for transformers.js. The card lists the license as cc-by-4.0.
ONNX export of nvidia/parakeet-rnnt-110m-da-dk for use with transformers.js (v4 branch with Nemo Conformer TDT/RNNT support).
Downloads · 30 days
21
7% of all-time downloads
All-time downloads
313
Public
Repo size
1.5 GB
Likes
1
Public
Click a slice to open those files.
.onnx896 MB · 100%
From the Hugging Face model README
ONNX export of nvidia/parakeet-rnnt-110m-da-dk for use with transformers.js (v4 branch with Nemo Conformer TDT/RNNT support).
| Base model | nvidia/parakeet-rnnt-110m-da-dk |
| Architecture | Conformer encoder + RNN-T decoder (110M params) |
| Language | Danish (da) |
| License | CC-BY-4.0 |
| File | Precision | Encoder | Decoder | Total |
|---|---|---|---|---|
| FP32 (original) | fp32 | 456 MB | 16 MB | 472 MB |
| FP16 | fp16 | 228 MB | 8 MB | 236 MB |
| INT8+FP16 | q8 | 145 MB | 7 MB | 152 MB |
| Precision | Encoder | Decoder |
|---|---|---|
| fp32 | onnx/encoder_model.onnx | onnx/decoder_model_merged.onnx |
| fp16 | onnx/encoder_model_fp16.onnx | onnx/decoder_model_merged_fp16.onnx |
| int8+fp16 | onnx/encoder_model_quantized.onnx | onnx/decoder_model_merged_quantized.onnx |
The INT8 models use selective dynamic quantization: only feed-forward and projection MatMul/Gemm layers are quantized to int8. Attention score computations (QK, attnV) and normalization layers (LayerNorm, biases) are kept in fp16.
This model uses the nemo-conformer-tdt model type in transformers.js. The RNNT architecture is a subset of TDT — the only difference is that RNNT has no duration prediction head. The transformers.js decoder loop automatically falls back to standard RNNT frame advancement when no duration logits are present.
Note: Requires the v4-nemo-conformer-tdt-main branch of transformers.js, which adds Nemo Conformer TDT/RNNT support.
import { pipeline } from '@huggingface/transformers';
const transcriber = await pipeline(
'automatic-speech-recognition',
'hlevring/parakeet-rnnt-110m-da-dk-onnx',
);
const result = await transcriber(audioData);
console.log(result.text);
Or with explicit model loading for more control:
import {
AutoProcessor,
AutoTokenizer,
NemoConformerForTDT,
AutomaticSpeechRecognitionPipeline,
} from '@huggingface/transformers';
const modelId = 'hlevring/parakeet-rnnt-110m-da-dk-onnx';
const [processor, tokenizer, model] = await Promise.all([
AutoProcessor.from_pretrained(modelId),
AutoTokenizer.from_pretrained(modelId),
NemoConformerForTDT.from_pretrained(modelId, {
dtype: { encoder_model: 'fp16', decoder_model_merged: 'fp16' },
}),
]);
const pipe = new AutomaticSpeechRecognitionPipeline({
task: 'automatic-speech-recognition',
model,
processor,
tokenizer,
});
const result = await pipe(audioData, { return_timestamps: true });
console.log(result.text);
console.log(result.words);
'fp32' — Full precision (472 MB total)'fp16' — Half precision (236 MB total)'q8' — INT8 quantized with fp16 remainder (152 MB total)You can also mix dtypes per component:
dtype: { encoder_model: 'fp16', decoder_model_merged: 'q8' }
| Parameter | Value |
|---|---|
| Sample rate | 16000 Hz |
| Mel bins | 80 |
| FFT size | 512 |
| Window length | 400 (25ms) |
| Hop length | 160 (10ms) |
| Preemphasis | 0.97 |
Exported from NeMo 2.7.0 using model.export(). The encoder and decoder+joint network are exported as separate ONNX files.
Encoder:
audio_signal [B, 80, T], length [B]outputs [B, 512, T'], encoded_lengths [B]Decoder:
encoder_outputs [B, 512, 1], targets [B, 1], target_length [B], input_states_1 [1, B, 640], input_states_2 [1, B, 640]outputs [B, 1, 1, 45], prednet_lengths [B], output_states_1 [1, B, 640], output_states_2 [1, B, 640]