Skip to content

Commit

Permalink
Add CI test for exporting csj pretrained zipformer to ncnn (facebookr…
Browse files Browse the repository at this point in the history
  • Loading branch information
csukuangfj authored Feb 16, 2023
1 parent 6d7a559 commit c011756
Showing 1 changed file with 82 additions and 13 deletions.
95 changes: 82 additions & 13 deletions .github/scripts/test-ncnn-export.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ log() {
echo -e "$(date '+%Y-%m-%d %H:%M:%S') (${fname}:${BASH_LINENO[0]}:${FUNCNAME[1]}) $*"
}

cd egs/librispeech/ASR
pushd egs/librispeech/ASR

log "Install ncnn and pnnx"

Expand Down Expand Up @@ -37,6 +37,8 @@ make -j4 pnnx

popd

export PATH=$PWD/ncnn/tools/pnnx/build/src:$PATH

log "=========================================================================="
repo_url=https://huggingface.co/Zengwei/icefall-asr-librispeech-conv-emformer-transducer-stateless2-2022-07-05
GIT_LFS_SKIP_SMUDGE=1 git clone $repo_url
Expand Down Expand Up @@ -66,9 +68,9 @@ log "Export via torch.jit.trace()"
--right-context-length 8 \
--memory-size 32

./ncnn/tools/pnnx/build/src/pnnx $repo/exp/encoder_jit_trace-pnnx.pt
./ncnn/tools/pnnx/build/src/pnnx $repo/exp/decoder_jit_trace-pnnx.pt
./ncnn/tools/pnnx/build/src/pnnx $repo/exp/joiner_jit_trace-pnnx.pt
pnnx $repo/exp/encoder_jit_trace-pnnx.pt
pnnx $repo/exp/decoder_jit_trace-pnnx.pt
pnnx $repo/exp/joiner_jit_trace-pnnx.pt

python3 ./conv_emformer_transducer_stateless2/streaming-ncnn-decode.py \
--tokens $repo/data/lang_bpe_500/tokens.txt \
Expand Down Expand Up @@ -105,9 +107,9 @@ log "Export via torch.jit.trace()"
--avg 1 \
--use-averaged-model 0

./ncnn/tools/pnnx/build/src/pnnx $repo/exp/encoder_jit_trace-pnnx.pt
./ncnn/tools/pnnx/build/src/pnnx $repo/exp/decoder_jit_trace-pnnx.pt
./ncnn/tools/pnnx/build/src/pnnx $repo/exp/joiner_jit_trace-pnnx.pt
pnnx $repo/exp/encoder_jit_trace-pnnx.pt
pnnx $repo/exp/decoder_jit_trace-pnnx.pt
pnnx $repo/exp/joiner_jit_trace-pnnx.pt

python3 ./lstm_transducer_stateless2/streaming-ncnn-decode.py \
--tokens $repo/data/lang_bpe_500/tokens.txt \
Expand Down Expand Up @@ -164,9 +166,9 @@ popd
--decoder-dim 512 \
--joiner-dim 512

./ncnn/tools/pnnx/build/src/pnnx $repo/exp/encoder_jit_trace-pnnx.pt
./ncnn/tools/pnnx/build/src/pnnx $repo/exp/decoder_jit_trace-pnnx.pt
./ncnn/tools/pnnx/build/src/pnnx $repo/exp/joiner_jit_trace-pnnx.pt
pnnx $repo/exp/encoder_jit_trace-pnnx.pt
pnnx $repo/exp/decoder_jit_trace-pnnx.pt
pnnx $repo/exp/joiner_jit_trace-pnnx.pt

python3 ./pruned_transducer_stateless7_streaming/streaming-ncnn-decode.py \
--tokens $repo/data/lang_bpe_500/tokens.txt \
Expand Down Expand Up @@ -214,9 +216,9 @@ popd
--decoder-dim 512 \
--joiner-dim 512

./ncnn/tools/pnnx/build/src/pnnx $repo/exp/encoder_jit_trace-pnnx.pt
./ncnn/tools/pnnx/build/src/pnnx $repo/exp/decoder_jit_trace-pnnx.pt
./ncnn/tools/pnnx/build/src/pnnx $repo/exp/joiner_jit_trace-pnnx.pt
pnnx $repo/exp/encoder_jit_trace-pnnx.pt
pnnx $repo/exp/decoder_jit_trace-pnnx.pt
pnnx $repo/exp/joiner_jit_trace-pnnx.pt

python3 ./pruned_transducer_stateless7_streaming/streaming-ncnn-decode.py \
--tokens $repo/data/lang_char_bpe/tokens.txt \
Expand All @@ -230,3 +232,70 @@ python3 ./pruned_transducer_stateless7_streaming/streaming-ncnn-decode.py \

rm -rf $repo
log "--------------------------------------------------------------------------"

# Go back to the root directory of icefall repo
popd

pushd egs/csj/ASR

log "=========================================================================="
repo_url=https://huggingface.co/TeoWenShen/icefall-asr-csj-pruned-transducer-stateless7-streaming-230208
GIT_LFS_SKIP_SMUDGE=1 git clone $repo_url
repo=$(basename $repo_url)

pushd $repo
git lfs pull --include "exp_fluent/pretrained.pt"
git lfs pull --include "exp_disfluent/pretrained.pt"

cd exp_fluent
ln -s pretrained.pt epoch-99.pt

cd ../exp_disfluent
ln -s pretrained.pt epoch-99.pt

cd ../test_wavs
git lfs pull --include "*.wav"
popd

log "Export via torch.jit.trace()"

for exp in exp_fluent exp_disfluent; do
./pruned_transducer_stateless7_streaming/export-for-ncnn.py \
--exp-dir $repo/$exp/ \
--lang $repo/data/lang_char \
--epoch 99 \
--avg 1 \
--use-averaged-model 0 \
\
--decode-chunk-len 32 \
--num-left-chunks 4 \
--num-encoder-layers "2,4,3,2,4" \
--feedforward-dims "1024,1024,2048,2048,1024" \
--nhead "8,8,8,8,8" \
--encoder-dims "384,384,384,384,384" \
--attention-dims "192,192,192,192,192" \
--encoder-unmasked-dims "256,256,256,256,256" \
--zipformer-downsampling-factors "1,2,4,8,2" \
--cnn-module-kernels "31,31,31,31,31" \
--decoder-dim 512 \
--joiner-dim 512

pnnx $repo/$exp/encoder_jit_trace-pnnx.pt
pnnx $repo/$exp/decoder_jit_trace-pnnx.pt
pnnx $repo/$exp/joiner_jit_trace-pnnx.pt

for wav in aps-smp.wav interview_aps-smp.wav reproduction-smp.wav sps-smp.wav; do
python3 ./pruned_transducer_stateless7_streaming/streaming-ncnn-decode.py \
--tokens $repo/data/lang_char/tokens.txt \
--encoder-param-filename $repo/$exp/encoder_jit_trace-pnnx.ncnn.param \
--encoder-bin-filename $repo/$exp/encoder_jit_trace-pnnx.ncnn.bin \
--decoder-param-filename $repo/$exp/decoder_jit_trace-pnnx.ncnn.param \
--decoder-bin-filename $repo/$exp/decoder_jit_trace-pnnx.ncnn.bin \
--joiner-param-filename $repo/$exp/joiner_jit_trace-pnnx.ncnn.param \
--joiner-bin-filename $repo/$exp/joiner_jit_trace-pnnx.ncnn.bin \
$repo/test_wavs/$wav
done
done

rm -rf $repo
log "--------------------------------------------------------------------------"

0 comments on commit c011756

Please sign in to comment.