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/ccache-action@v1.2 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/*.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 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 Moonshine" ./run-moonshine.sh rm -rf sherpa-onnx-* echo "Test SenseVoice ctc" ./run-sense-voice-small.sh rm -rf sherpa-onnx-sense-* 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-09-14 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 adding punctuation shell: bash run: | cd scripts/go/_internal/add-punctuation/ ./run.sh - name: Test non-streaming speaker diarization shell: bash run: | cd scripts/go/_internal/non-streaming-speaker-diarization/ ./run.sh - 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 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