Downloads · 30 days
5
10% of all-time downloads
dys-asr/parakeet-ctc-0.6b-soup
parakeet-ctc-0.6b-soup is a automatic speech recognition model from dys-asr. Use it when you need speech turned into text. It is set up for transformers. The card lists the license as other.
A model soup: the weights of two fine-tunes averaged into one network, at 1 part dys-asr/parakeet-ctc-0.6b-sapc2 to 2 parts dys-asr/parakeet-ctc-0.6b-all. No training was done here. Inference costs exactly what one mo…
Downloads · 30 days
5
10% of all-time downloads
All-time downloads
48
Public
Parameters
609M
2.4 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors2.4 GB · 100%
From the Hugging Face model README
A model soup: the weights of two fine-tunes averaged into one network, at 1
part dys-asr/parakeet-ctc-0.6b-sapc2
to 2 parts dys-asr/parakeet-ctc-0.6b-all.
No training was done here. Inference costs exactly what one model costs.
All rows below are the same 17,582 utterances from 48 speakers, greedy CTC decoding, no language model, both sides through the same normaliser:
| WER | CER | |
|---|---|---|
nvidia/parakeet-ctc-0.6b | 32.35% | 20.43% |
dys-asr/parakeet-ctc-0.6b-sapc1 | 14.65% | 8.77% |
dys-asr/parakeet-ctc-0.6b-sapc2 | 13.35% | 7.83% |
dys-asr/parakeet-ctc-0.6b-all | 12.08% | 7.02% |
| this soup | 11.89% | 6.89% |
It is worth 0.19 WER points over the best ingredient. That is a real but small gain, and two things should temper it:
sapc2+all at 1:1 and at 1:2 --
and the best was kept. Choosing and reporting on one set flatters the number,
so treat 11.89% as the optimistic end. The CER moving with it (7.02% to 6.89%)
is the more convincing part, since CER is estimated from far more units.sapc1 at 14.65% drags
the average down. Soups reward ingredients of similar quality; these differ
by training data rather than by seed or hyperparameter, which is not the
setting soups were designed for.| soup | WER |
|---|---|
sapc1 + sapc2 + all, 1:1:1 | 12.30% |
sapc2 + all, 1:1 | 12.12% |
sapc2 + all, 1:2 | 11.89% |
parakeet-ctc-0.6b-all trains on SAPC1 dev, which shares 28,253 recordings and
76 of SAPC2 dev's 124 speakers, so neither sapc1_dev nor the whole of
sapc2_dev is a fair test for this soup. What is fair is the 48 SAPC2 dev
speakers appearing nowhere in any ingredient's training data, and that is the
set used above.
That set is harder than SAPC2 dev as a whole: all 35 of SAPC2 dev's
Parkinson's speakers also appear in SAPC1 dev, so it contains no Parkinson's
speech, and Parkinson's is the easiest cohort here by a wide margin. Do not
compare this model's 11.89% against parakeet-ctc-0.6b-sapc2's published 11.51%
on all of SAPC2 dev. They are different sets. Scored head to head, as above, the
soup wins by 1.46 points.
python -m ataxia.cli soup \
--models dys-asr/parakeet-ctc-0.6b-sapc2 dys-asr/parakeet-ctc-0.6b-all \
--weights 1 2 \
--output-dir parakeet-ctc-0.6b-soup
Float tensors, including the BatchNorm running_mean and running_var buffers,
are averaged in float64 and cast back. The 24 int64 num_batches_tracked
counters are not averaged -- a counter has no meaningful mean, and integer
division would floor it -- and are carried across as a maximum. This changes
nothing at inference: that counter is read only when a BatchNorm layer sets
momentum=None, and Parakeet's layers set a momentum.
This model writes numbers as words and emits upper-case, unpunctuated text, inherited from its ingredients.
audio: "lower the temperature three degrees"
output: LOWER THE TEMPERATURE THREE DEGREES # not "... 3 DEGREES"
The tokeniser has 1,025 tokens and no digit characters. If you score this model, verbalise your references the same way or numerals will dominate your errors.
Pooled over words the figure is 11.89%; averaged with equal weight per speaker it is 14.73%, and the spread is wide:
| min | 25th | median | 75th | max |
|---|---|---|---|---|
| 0.73% | 5.13% | 12.01% | 17.70% | 70.88% |
20 of the 48 speakers are under 10% WER; 3 are above 30%.
| aetiology | speakers | mean WER | median WER |
|---|---|---|---|
| Down Syndrome | 13 | 21.43% | 14.87% |
| Cerebral Palsy | 13 | 18.30% | 17.14% |
| Stroke | 9 | 15.02% | 12.15% |
| ALS | 13 | 4.27% | 2.66% |
import torch
from transformers import AutoModelForCTC, AutoProcessor
model_id = "dys-asr/parakeet-ctc-0.6b-soup"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForCTC.from_pretrained(model_id).eval()
inputs = processor(audio, sampling_rate=16_000, return_tensors="pt") # 16 kHz mono
with torch.inference_mode():
logits = model(**inputs).logits
print(processor.batch_decode(logits.argmax(dim=-1)))