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.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for eschmidbauer/phonon-2.5-c

Quantized
(2)
this model