encoder_embed_dim=192, d_model=768, nhead=12, num_encoder_layers=6, num_decoder_layers=6, dim_feedforward=3072, dropout=0.15, stride=1, window_size=11conv1–conv4/pool1–pool3/fc1) is hardcoded regardless of variant — only the final fc2 bottleneck layer scales with output_values (7.22M→7.24M→7.25M base→medium→large). All size scaling across variants is in the transformer, not the acoustic front-end. (Documented upstream; see whipstr_encoder.py.)1git clone https://github.com/neurlang/whipstr.git
2cd whipstr/
3uv run --with torch --with transformers --with phase-spectrogram stt_infer_hf.py --audio /home/m/Downloads/LJ001-0001.wav --model neurlang/ipa-whipstr-large-48khz-cv-21uv run --with torch --with transformers --with phase-spectrogram --with sounddevice stt_mic_hf.py --model neurlang/ipa-whipstr-large-48khz-cv-21batch_size=1 to batch_size=4 (alongside AMP/mixed-precision and other throughput fixes) and several recoveries from unrelated infrastructure issues (a training-restart bug that silently dropped the encoder's weights, and a disk-full interruption) — none of which reflect problems with the model itself, and all of which the checkpoint history below has been verified to recover cleanly from.| Run | Batch size | Duration | Batches | Samples |
|---|---|---|---|---|
| run1 | 1 | 2h13m | 45,000 | 45,000 |
| run2 | 1 | 57h02m | 1,158,000 | 1,158,000 |
| run3 | 4 | 4h12m | 20,000 | 80,000 |
| run4 | 4 | 13h22m | 120,000 | 480,000 |
| run5 | 4 | 38h36m | 341,000 | 1,364,000 |
| run6 | 4 | 41h48m | 356,000 | 1,424,000 |
| Total | 157h13m (~6.55 days) | 2,040,000 | 4,551,000 |
epoch), batch numbers within runs 3–6 are restart-local, not a single continuous count — the table above reports each run's own step count and the wall-clock/sample totals, which are unaffected by that.| Step | WER | CER | Notes |
|---|---|---|---|
| 152,000 | 155.62% | 90.17% | Early/noisy phase |
| 182,000 | 133.84% | 86.27% | First real improvement |
| 359,000 | 128.97% | 85.15% | Plateau |
| 507,000 | 110.89% | 69.00% | Breakout |
| 632,000 | 99.30% | 59.48% | Transient language-misidentification failure mode observed (resolved by step 1,071,000) |
| 1,048,000 | 81.46% | 38.83% | Large jump |
| 1,071,000 | 79.84% | 38.80% | Misidentification pattern confirmed resolved |
| 1,158,000 | — | — | Last checkpoint before switch to batch_size=4 + EOS/padding-mask fixes |
| Step (restart-local) | WER | CER | Notes |
|---|---|---|---|
| 15,000 | 79.72% | 41.16% | Recovered from regime-switch dip |
| 49,000 | 73.00% | 33.24% | First checkpoint to cross ipa-whisper-medium's 33.88% CER benchmark |
| 75,000 | 73.00% | 33.31% | Plateau |
| 179,000 | 71.84% | 31.72% | Breakout begins |
| 203,000 | 67.67% | 29.81% | First sub-30% CER |
| 356,000 | 60.25% | 24.89% | Current best (run6) |