Skip to content

Build sherpa-onnx as a single shared library #904

Build sherpa-onnx as a single shared library

Build sherpa-onnx as a single shared library #904

Workflow file for this run

name: test-go
on:
push:
branches:
- master
paths:
- '.github/workflows/test-go.yaml'
- 'CMakeLists.txt'
- 'cmake/**'
- 'sherpa-onnx/csrc/*'
- 'go-api-examples/**'
- 'scripts/go/**'
pull_request:
branches:
- master
paths:
- '.github/workflows/test-go.yaml'
- 'CMakeLists.txt'
- 'cmake/**'
- 'sherpa-onnx/csrc/*'
- 'go-api-examples/**'
- 'scripts/go/**'
workflow_dispatch:
concurrency:
group: test-go-${{ github.ref }}
cancel-in-progress: true
jobs:
test-go:
name: ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, macos-13, ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: ccache
uses: hendrikmuhs/[email protected]
with:
key: ${{ matrix.os }}-go
- uses: actions/setup-go@v5
with:
go-version: '>=1.12'
- name: Display go version
shell: bash
run: |
go version
go env GOPATH
go env GOARCH
go env CGO_ENABLED
- name: Display go env
shell: bash
run: |
go env
- name: Build sherpa-onnx
shell: bash
run: |
upload_dir=$PWD/to-upload
mkdir -p $upload_dir
echo "upload_dir"
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
mkdir build
cd build
cmake \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DBUILD_SHARED_LIBS=ON \
-DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \
-DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \
-DCMAKE_INSTALL_PREFIX=./install \
..
if [[ ${{ matrix.os }} == windows-latest ]]; then
cmake --build . --target install --config Release -- -m:2
else
make -j2 install
fi
if [[ ${{ matrix.os }} == ubuntu-latest ]]; then
cp -v ./lib/*.so $upload_dir
cp -v _deps/onnxruntime-src/lib/libonnxruntime*so* $upload_dir
cp -v _deps/onnxruntime-src/lib/libonnxruntime*so* ./lib/
rm -v ./lib/libonnxruntime.so
cd lib
ln -s libonnxruntime.so.1.17.1 libonnxruntime.so
cd ..
rm -v ./lib/*.a
ls -h ./lib
elif [[ ${{ matrix.os }} == windows-latest ]]; then
cp -v ./install/lib/sherpa-onnx-c-api.dll ../scripts/go/_internal/lib/x86_64-pc-windows-gnu/
cp -v ./install/lib/onnxruntime.dll ../scripts/go/_internal/lib/x86_64-pc-windows-gnu/
ls -lh ../scripts/go/_internal/lib/x86_64-pc-windows-gnu/
cp -v ../scripts/go/_internal/lib/x86_64-pc-windows-gnu/*.dll ../scripts/go/_internal/speaker-identification/
cp -v ../scripts/go/_internal/lib/x86_64-pc-windows-gnu/*.dll ../scripts/go/_internal/streaming-hlg-decoding/
cp -v ../scripts/go/_internal/lib/x86_64-pc-windows-gnu/*.dll ../scripts/go/_internal/non-streaming-tts/
cp -v ../scripts/go/_internal/lib/x86_64-pc-windows-gnu/*.dll ../scripts/go/_internal/non-streaming-decode-files/
cp -v ../scripts/go/_internal/lib/x86_64-pc-windows-gnu/*.dll ../scripts/go/_internal/streaming-decode-files/
cp -v ../scripts/go/_internal/lib/x86_64-pc-windows-gnu/*.dll $upload_dir
else
cp -v _deps/onnxruntime-src/lib/libonnxruntime*dylib $upload_dir/
cp -v lib/*.dylib $upload_dir
cp -v _deps/onnxruntime-src/lib/libonnxruntime*dylib ./lib/
rm ./lib/*.a
rm ./lib/libonnxruntime.dylib
cd lib
ln -s libonnxruntime.1.17.1.dylib libonnxruntime.dylib
cd ..
fi
cd ../scripts/go/_internal/
ls -lh lib
echo "-----"
ls -lh lib/*/
echo "-----"
go mod tidy
go build
- uses: actions/upload-artifact@v4
with:
name: ${{ matrix.os }}-libs
path: to-upload/
- name: Test speaker identification
shell: bash
run: |
cd scripts/go/_internal/speaker-identification/
./run.sh
- name: Test streaming HLG decoding
shell: bash
run: |
cd scripts/go/_internal/streaming-hlg-decoding/
./run.sh
- name: Test non-streaming TTS
shell: bash
run: |
mkdir tts-waves
cd scripts/go/_internal/non-streaming-tts/
ls -lh
go mod tidy
cat go.mod
go build
ls -lh
echo "Test vits-ljs"
./run-vits-ljs.sh
rm -rf vits-ljs
echo "Test vits-vctk"
./run-vits-vctk.sh
rm -rf vits-vctk
echo "Test vits-zh-aishell3"
./run-vits-zh-aishell3.sh
rm -rf vits-icefall-zh-aishell3
echo "Test vits-piper-en_US-lessac-medium"
./run-vits-piper-en_US-lessac-medium.sh
rm -rf vits-piper-en_US-lessac-medium
cp *.wav ../../../../tts-waves/
- uses: actions/upload-artifact@v4
with:
name: tts-waves-${{ matrix.os }}
path: tts-waves
- name: Test non-streaming decoding files
shell: bash
run: |
cd scripts/go/_internal/non-streaming-decode-files/
ls -lh
go mod tidy
cat go.mod
go build
ls -lh
echo "Test telespeech ctc"
./run-telespeech-ctc.sh
rm -rf sherpa-onnx-telespeech-ctc-*
echo "Test transducer"
./run-transducer.sh
rm -rf sherpa-onnx-zipformer-en-2023-06-26
echo "Test transducer"
./run-transducer.sh
rm -rf sherpa-onnx-zipformer-en-2023-06-26
echo "Test paraformer"
./run-paraformer.sh
./run-paraformer-itn.sh
rm -rf sherpa-onnx-paraformer-zh-2023-03-28
echo "Test NeMo CTC"
./run-nemo-ctc.sh
rm -rf sherpa-onnx-nemo-ctc-en-conformer-medium
echo "Test Whisper tiny.en"
./run-whisper.sh
rm -rf sherpa-onnx-whisper-tiny.en
echo "Test Tdnn yesno"
./run-tdnn-yesno.sh
rm -rf sherpa-onnx-tdnn-yesno
- name: Test streaming decoding files
shell: bash
run: |
cd scripts/go/_internal/streaming-decode-files
ls -lh
go mod tidy
cat go.mod
go build
ls -lh
echo "Test zipformer2 CTC"
./run-zipformer2-ctc.sh
rm -rf sherpa-onnx-streaming-zipformer-ctc-multi-zh-hans-2023-12-13
echo "Test transducer"
./run-transducer.sh
rm -rf sherpa-onnx-streaming-zipformer-en-2023-06-26
./run-transducer-itn.sh
rm -rf sherpa-onnx-streaming-*
echo "Test paraformer"
./run-paraformer.sh
rm -rf sherpa-onnx-streaming-paraformer-bilingual-zh-en