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%
What the soup does and does not buy
It is worth 0.19 WER points over the best ingredient. That is a real but
small gain, and two things should temper it:
The mixing weight was chosen on the set reported here. Three combinations
were tried -- all three models at 1:1:1, then 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.
Not every soup helps. Averaging all three models made things worse than
the best ingredient -- 12.30% against 12.08% -- because 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%
Read the evaluation set carefully
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.
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.
Output text convention
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.
Results by speaker
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%.