Export to ONNX
In this section, we describe how to export models to ONNX.
Hint
Only non-streaming conformer transducer models are tested.
When to use it
It you want to use an inference framework that supports ONNX to run the pretrained model.
How to export
We use https://github.com/k2-fsa/icefall/tree/master/egs/librispeech/ASR/pruned_transducer_stateless3 as an example in the following.
cd egs/librispeech/ASR
epoch=14
avg=2
./pruned_transducer_stateless3/export.py \
--exp-dir ./pruned_transducer_stateless3/exp \
--bpe-model data/lang_bpe_500/bpe.model \
--epoch $epoch \
--avg $avg \
--onnx 1
It will generate the following files inside pruned_transducer_stateless3/exp
:
encoder.onnx
decoder.onnx
joiner.onnx
joiner_encoder_proj.onnx
joiner_decoder_proj.onnx
You can use ./pruned_transducer_stateless3/exp/onnx_pretrained.py
to decode
waves with the generated files:
./pruned_transducer_stateless3/onnx_pretrained.py \
--bpe-model ./data/lang_bpe_500/bpe.model \
--encoder-model-filename ./pruned_transducer_stateless3/exp/encoder.onnx \
--decoder-model-filename ./pruned_transducer_stateless3/exp/decoder.onnx \
--joiner-model-filename ./pruned_transducer_stateless3/exp/joiner.onnx \
--joiner-encoder-proj-model-filename ./pruned_transducer_stateless3/exp/joiner_encoder_proj.onnx \
--joiner-decoder-proj-model-filename ./pruned_transducer_stateless3/exp/joiner_decoder_proj.onnx \
/path/to/foo.wav \
/path/to/bar.wav \
/path/to/baz.wav
How to use the exported model
We also provide https://github.com/k2-fsa/sherpa-onnx performing speech recognition using onnxruntime with exported models. It has been tested on Linux, macOS, and Windows.