Phonon-2.5 for phonon-2.5-c
Phonon-2.5, Fermion Research's five-value, 25-language student of
NVIDIA's Parakeet-TDT 0.6B v3, repacked for phonon-2.5-c, a pure-C
inference engine for CPUs with no dependencies beyond libc and pthreads. These are the weights of the Phonon-2.5
release re-encoded, not re-quantised: the encoder's five-value linears stay five-value, and the engine decodes
identical token ids to the transformers reference on the same features (50 of 50 on a 10 s clip, 965 of 965 on a
256 s call).
| File | Size | sha256 |
|---|---|---|
phonon-2.5-c-weights-v1.tar.gz |
183 MB | ed622ca97bc4ec044c7ba5fb69c10985b1b3897e600dbf611840d9a0692b4cfe |
It unpacks to c_weights/ (255 MB): weights.bin, weights.json (the tensor index) and tokens.txt (the
vocabulary). The format is phonon-2.5-c-weights-v1; its layout is described at the top of convert_weights.py.
The same engine's weights for Phonon-2, the English-only predecessor, are at
eschmidbauer/phonon-2-c; the two engines install side by side.
Run it
git clone https://github.com/eschmidbauer/phonon-2.5-c && cd phonon-2.5-c
make -C csrc
curl -L https://huggingface.co/eschmidbauer/phonon-2.5-c/resolve/main/phonon-2.5-c-weights-v1.tar.gz | tar xz
./csrc/phonon25 c_weights recording.wav
./csrc/phonon25 --json c_weights recording.wav # word timestamps
scripts/get_weights.sh in the engine repository (also make -C csrc weights) is the same download with the
archive's sha256 checked against the value pinned there. Any WAV works (PCM or float, any sample rate, mono or
multi-channel), and --stream reads raw 16-bit PCM from stdin. The engine's README covers the command line, the C
library and the Python bindings. On an Apple M5 Max the default mode transcribes an 8-minute chapter in 3.7 s
(137ร realtime), a 256 s phone call in 2.8 s and a 3 s utterance in 0.04 s.
Accuracy
Measured with the engine on LibriSpeech, scored with the Whisper English normaliser (what the Open ASR Leaderboard
uses). exact expands the five values to fp32; int8w, the default, runs int8 dot products over the same codes.
The model card's own English figures, scored with the leaderboard's protocol, are 1.60 % and 3.41 %.
| Set | int8w (default) |
exact |
|---|---|---|
| test-clean (2,620 utterances) | 2.03 % | 2.01 % |
| test-other (2,939 utterances) | 3.95 % | 3.87 % |
Long recordings are decoded in pause-aligned 25โ35 s windows, the way Phonon-2.5's own engine does it; on
concatenated LibriSpeech chapters (5โ10 minutes each) that scores 1.65 % (test-clean) and 2.76 % (test-other).
The same engine scored Phonon-2 at 2.16 % / 4.34 % with this protocol. The engine's README has the protocol, the parity test
against transformers and the speed table. The other 24 languages are the model's (see its card for the FLEURS
figures); the engine's arithmetic is the same for every language, and its exact mode is token-identical to
transformers on the same features.
What is inside
| Tensors | Count | Stored as |
|---|---|---|
| Encoder linears (feed-forward, fused Q/K/V, position, output, pointwise convs) | 216 | five-value: 2-bit signs + 1-bit lo/hi flags, [in, out], fp32 lo/hi per output, 229 MB |
| Subsampling linear, encoder projector | 2 | int8 with one fp32 scale per output column, exact from the container's int6 |
| Embedding, LSTM, decoder projector, joint head | 7 | int8 with one fp32 scale per row, exact, 17 MB |
| Norms, biases, subsampling convs, depthwise conv with its BatchNorm folded in | 354 | fp32 |
Everything is exact except the BatchNorm fold, which is computed in double precision and stored as fp32.
Verifying and rebuilding
shasum -a 256 -c --ignore-missing SHA256SUMS.txt # the archive, and the three files once unpacked
build.sh rebuilds the archive from Phonon-2.5's release and checks the result against those sums. It downloads
phonon-2.5.bps.tar.zst (163 MB, sha256 1faa04053a472cabab3bc31d07f30c23f22906f71044ca10eb1f0de36d1f19a9) from
FermionResearch/Phonon-2.5, checks the container inside it (model.fermion, sha256
17cb62d08e751a41819eb779db089aa7ac4eb2bab433ba5c2991d8cbd3cfefb9, also recorded in weights.json under _meta),
converts it with convert_weights.py and packs c_weights/ deterministically (ustar, fixed order, zero timestamps
and owners, no gzip header name), so a rebuild gives this exact file:
python3 -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt # numpy, zstandard, huggingface_hub
./build.sh
convert_weights.py is a verbatim copy of the engine's converter, and fermion_container.py is Fermion Research's
reference reader for the container, unchanged from the Phonon-2.5 repository.
Licence
The weights are CC-BY-4.0 (LICENSE-WEIGHTS-CC-BY-4.0.txt), the licence of Phonon-2.5 and of NVIDIA's Parakeet-TDT
0.6B v3 they derive from; the attribution chain, the changes made and the training-data terms are in
NOTICE. convert_weights.py and build.sh are MIT (LICENSE-CODE-MIT.txt), as is the engine;
fermion_container.py is Apache-2.0 (LICENSE-CODE-Apache-2.0.txt), Fermion Research.
Model tree for eschmidbauer/phonon-2.5-c
Base model
nvidia/parakeet-tdt-0.6b-v3