sherpa-ncnn-2022-09-05 / export-for-ncnn-lstm.sh
csukuangfj's picture
rename
90fd0be
#!/usr/bin/env bash
# Please go to
# https://huggingface.co/csukuangfj/icefall-asr-librispeech-lstm-transducer-stateless2-2022-09-03
# to download the pre-trained models
if [ ! -d lstm2 ]; then
mkdir lstm2
pushd lstm2
ln -s ~/open-source/icefall-models/icefall-asr-librispeech-lstm-transducer-stateless2-2022-09-03/exp/pretrained-iter-468000-avg-16.pt epoch-99.pt
ln -s ~/open-source/icefall-models/icefall-asr-librispeech-lstm-transducer-stateless2-2022-09-03/data .
popd
fi
export CUDA_VISIBLE_DEVICES=""
set -ex
./lstm_transducer_stateless2/export-for-ncnn.py \
--exp-dir ./lstm2 \
--bpe-model ./lstm2/data/lang_bpe_500/bpe.model \
--epoch 99 \
--avg 1 \
--use-averaged-model 0 \
--num-encoder-layers 12 \
--encoder-dim 512 \
--rnn-hidden-size 1024
cd ./lstm2
pnnx encoder_jit_trace-pnnx.pt
pnnx decoder_jit_trace-pnnx.pt
pnnx joiner_jit_trace-pnnx.pt
# Now we need to modified encoder_jit_trace-pnnx.ncnn.param for sherpa-ncnn
# The following is the diff
#
# diff -uN ./encoder_jit_trace-pnnx.ncnn.param-before ./encoder_jit_trace-pnnx.ncnn.param
# --- ./encoder_jit_trace-pnnx.ncnn.param-before 2023-02-15 11:27:14.000000000 +0800
# +++ ./encoder_jit_trace-pnnx.ncnn.param 2023-02-15 11:35:41.000000000 +0800
# @@ -1,5 +1,6 @@
# 7767517
# -267 379
# +268 379
# +SherpaMetaData sherpa_meta_data1 0 0 0=3 1=12 2=512 3=1024
# Input in0 0 1 in0
# Input in1 0 1 in1
# Input in2 0 1 in2
#
#
# Explanation:
# 1. A new layer is added, so we change the layer number 267 to 268
# 2. SherpaMetaData, it is the layer type. MUST be SherpaMetaData
# 3. sherpa_meta_data1, it is the layer name. MUST be sherpa_meta_data1
# 4. 0=3, attribute 0, MUST be 3
# 5. 1=12, attribute 1, 12 is the value of --num-encoder-layers
# 6. 2=512, attribute 2, 512 is the value of --encoder-dim
# 7. 3=1024, attribute 3, 1024 is the value of --rnn-hidden-size