File size: 3,604 Bytes
10b603f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Transformers FP32 export

This export uses the standard `ParakeetForTDT` implementation in Transformers
5.15.1. No custom model code or `trust_remote_code` is required. Root-level
configuration, processor and safetensors files let applications such as Buzz load
`oruk/orukeet` through their existing Hugging Face/Parakeet backend.

```sh
pip install 'torch==2.8.0' 'torchaudio==2.8.0' 'transformers==5.15.1' soundfile
```

```python
import soundfile as sf
from transformers import AutoModelForTDT, AutoProcessor, pipeline

model = AutoModelForTDT.from_pretrained("oruk/orukeet", dtype="float32")
processor = AutoProcessor.from_pretrained("oruk/orukeet")
asr = pipeline(
    "automatic-speech-recognition", model=model, device="cpu",
    tokenizer=processor.tokenizer, feature_extractor=processor.feature_extractor,
)
audio, sample_rate = sf.read("speech.wav", dtype="float32")
assert sample_rate == 16000 and audio.ndim == 1
print(asr(audio)["text"])
```

Use 16 kHz mono audio. The model detects language automatically and does not
provide translation, speaker labels or prompt-conditioned transcription. Buzz
currently returns 30-second chunk boundaries, not aligned word timestamps.
Downloading the required configuration uses Hugging Face's normal model download
accounting. Cached local loading does not require an extra tracking request.

## Conversion

The source is `orukeet-v0.1.0.nemo` at revision
`555136b50265a132d4cea0d35560c26fc4f657ab`, SHA-256
`031c8ddab4845aeced904a7cde8e8aa57993b2e344716cf83a545b079c473b56`.
All 723 mapped tensors load with `strict=True`: 627,008,134 parameters in FP32.
The materialized Gabor filters are preserved as ordinary convolution weights.

The bundled upstream converter comes from Transformers commit
`6c6bac29f50c8aad5d1f06c72b2f892a6e335dd0`. The wrapper verifies the source hash,
extracts it with the data safety filter, and requires exact state-dictionary and
tokenizer compatibility before saving. Reproduce in Python 3.13:

```sh
pip install 'torch==2.8.0' 'transformers==5.15.1' protobuf sentencepiece pyyaml
python convert.py /path/to/output
```

Download both `convert.py` and `convert_nemo_to_hf.py` from this directory.
[`manifest.json`](manifest.json) records every exported runtime file's hash and size.
Weights remain CC BY-SA 4.0 with NVIDIA attribution; see the root `NOTICE.md` and
`LICENSE-WEIGHTS`. The upstream converter is Apache-2.0; see `LICENSE-CONVERTER`.

## Qualification

On Apple M5 Max CPU with PyTorch 2.8.0 and Transformers 5.15.1:

- The actual Buzz transcription path passed English, German, Spanish and French
  repeated transcription, 0.1/1/5-second silence, a recording spanning two chunks,
  and local loading/inference with socket connections disabled.
- A fixed 120-clip, six-language FLEURS validation compatibility sample produced
  the same normalized transcript as the recorded source-NeMo output for 117 clips.
  Pooled WER was **5.43% for this export versus 5.34% for source NeMo** using the
  same normalization: two additional word errors across 2,433 reference words.
- The sample contained 1,257.82 seconds of audio and took 217.64 seconds of inference
  across eight CPU threads (about 0.17 real-time factor). Other work ran on the
  machine during this check; this is a runtime receipt, not a controlled speed
  comparison with Parakeet.

This small compatibility sample is not a new held-out benchmark. The published
25-language NeMo results in the model card do not automatically transfer to this
export. Per-language measurements and normalization are in
[`qualification.json`](qualification.json).