- Step 1. Install cross compile tools in the PC.
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnuOr download, and install the binaries from: https://releases.linaro.org/components/toolchain/binaries/latest-7
- Step 2. Export your experiment model to ONNX by https://github.com/wenet-e2e/wenet/blob/main/wenet/bin/export_onnx_cpu.py
exp=exp # Change it to your experiment dir
onnx_dir=onnx
python -m wenet.bin.export_onnx_cpu \
--config $exp/train.yaml \
--checkpoint $exp/final.pt \
--chunk_size 16 \
--output_dir $onnx_dir \
--num_decoding_left_chunks -1
# When it finishes, you can find `encoder.onnx(.quant)`, `ctc.onnx(.quant)`, and `decoder.onnx(.quant)` in the $onnx_dir respectively.
# We use the quantified to speed up the inference, so rename it without the suffix `.quant`- Step 3. Build. The build requires cmake 3.14 or above. and Send the binary and libraries to Raspberry PI.
cmake -B build -DONNX=ON -DTORCH=OFF -DWEBSOCKET=OFF -DGRPC=OFF -DCMAKE_TOOLCHAIN_FILE=toolchains/aarch64-linux-gnu.toolchain.cmake
cmake --build build
scp build/bin/decoder_main pi@xxx.xxx.xxx:/path/to/wenet
scp fc_base/onnxruntime-src/lib/libonnxruntime.so* pi@xxx.xxx.xxx:/path/to/wenet- Step 4. Testing, the RTF(real time factor) is shown in Raspberry PI's console.
cd /path/to/wenet
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
export GLOG_logtostderr=1
export GLOG_v=2
wav_path=your_test_wav_path
onnx_dir=your_model_dir
units=units.txt # Change it to your model units path
./build/bin/decoder_main \
--chunk_size 16 \
--wav_path $wav_path \
--onnx_dir $onnx_dir \
--unit_path $units 2>&1 | tee log.txt