#!/bin/bash # Phase 3: scale-up. Warm-start from P1 (weights-only init), train on ~337h # (IndicVoices-hi 307h + keywords + svarah + numbers) with x3 speed perturbation. # bf16, pure CTC, causal streaming, fixed 103-char vocab. set -e source /workspace/venvs/icefall/bin/activate export PYTHONPATH=/root/icefall:$PYTHONPATH cd /root/icefall/egs/hindi/ASR ROOT=/workspace/hindi_ft/asr_ctc python zipformer/train.py \ --world-size 1 \ --num-epochs 15 \ --start-epoch 1 \ --init-ckpt $ROOT/exp_p1/epoch-30.pt \ --exp-dir $ROOT/exp_p3 \ --lang-dir $ROOT/data/lang_char \ --manifest-dir $ROOT/data/fbank_p3 \ --use-ctc 1 --use-transducer 0 --ctc-loss-scale 1.0 \ --causal 1 \ --chunk-size "16,32,64,-1" \ --left-context-frames "64,128,256,-1" \ --max-duration 300 \ --use-fp16 0 \ --num-workers 8 \ --enable-musan False \ --on-the-fly-feats True \ --base-lr 0.02 # warm-start lr; nan at batch~350 was a bad data sample (recurs at any lr), handled by skip-nan guard in train.py