name: windows-x64 on: push: branches: - master tags: - 'v[0-9]+.[0-9]+.[0-9]+*' paths: - '.github/workflows/windows-x64.yaml' - '.github/scripts/test-online-transducer.sh' - '.github/scripts/test-online-paraformer.sh' - '.github/scripts/test-offline-transducer.sh' - '.github/scripts/test-offline-ctc.sh' - '.github/scripts/test-online-ctc.sh' - '.github/scripts/test-offline-tts.sh' - '.github/scripts/test-audio-tagging.sh' - '.github/scripts/test-offline-punctuation.sh' - '.github/scripts/test-online-punctuation.sh' - '.github/scripts/test-speaker-diarization.sh' - '.github/scripts/test-c-api.sh' - '.github/scripts/test-cxx-api.sh' - 'cmake/**' - 'sherpa-onnx/csrc/*' pull_request: branches: - master paths: - '.github/workflows/windows-x64.yaml' - '.github/scripts/test-online-transducer.sh' - '.github/scripts/test-online-paraformer.sh' - '.github/scripts/test-offline-transducer.sh' - '.github/scripts/test-offline-ctc.sh' - '.github/scripts/test-online-ctc.sh' - '.github/scripts/test-offline-tts.sh' - '.github/scripts/test-audio-tagging.sh' - '.github/scripts/test-offline-punctuation.sh' - '.github/scripts/test-online-punctuation.sh' - '.github/scripts/test-speaker-diarization.sh' - '.github/scripts/test-c-api.sh' - '.github/scripts/test-cxx-api.sh' - 'cmake/**' - 'sherpa-onnx/csrc/*' workflow_dispatch: concurrency: group: windows-x64-${{ github.ref }} cancel-in-progress: true jobs: windows_x64: name: shared-${{ matrix.shared_lib }} tts-${{ matrix.with_tts }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [windows-latest] shared_lib: [ON, OFF] with_tts: [ON, OFF] steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Configure CMake shell: bash run: | mkdir build cd build cmake \ -A x64 \ -DSHERPA_ONNX_ENABLE_TTS=${{ matrix.with_tts }} \ -D CMAKE_BUILD_TYPE=Release \ -D BUILD_SHARED_LIBS=${{ matrix.shared_lib }} \ -DCMAKE_INSTALL_PREFIX=./install \ .. - name: Build sherpa-onnx for windows shell: bash run: | cd build cmake --build . --config Release -- -m:2 cmake --build . --config Release --target install -- -m:2 ls -lh ./bin/Release/sherpa-onnx.exe - uses: actions/upload-artifact@v4 with: name: release-windows-x64-${{ matrix.shared_lib }}-${{ matrix.with_tts }} path: build/install/* - name: Copy files shell: bash run: | SHERPA_ONNX_VERSION=v$(grep "SHERPA_ONNX_VERSION" ./CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2) shared_lib=${{ matrix.shared_lib }} if [[ $shared_lib == "ON" ]]; then suffix=shared else suffix=static fi if [[ ${{ matrix.with_tts }} == ON ]]; then dst=sherpa-onnx-${SHERPA_ONNX_VERSION}-win-x64-$suffix else dst=sherpa-onnx-${SHERPA_ONNX_VERSION}-win-x64-$suffix-no-tts fi mkdir $dst cp -a build/install/bin $dst/ cp -a build/install/lib $dst/ cp -a build/install/include $dst/ tar cjvf ${dst}.tar.bz2 $dst # https://huggingface.co/docs/hub/spaces-github-actions - name: Publish to huggingface if: (github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa') && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') env: HF_TOKEN: ${{ secrets.HF_TOKEN }} uses: nick-fields/retry@v3 with: max_attempts: 20 timeout_seconds: 200 shell: bash command: | SHERPA_ONNX_VERSION=$(grep "SHERPA_ONNX_VERSION" ./CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2) git config --global user.email "csukuangfj@gmail.com" git config --global user.name "Fangjun Kuang" rm -rf huggingface export GIT_CLONE_PROTECTION_ACTIVE=false GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/csukuangfj/sherpa-onnx-libs huggingface cd huggingface dst=win64/$SHERPA_ONNX_VERSION mkdir -p $dst cp -v ../sherpa-onnx-*.tar.bz2 $dst git status git lfs track "*.bz2" git add . git commit -m "upload sherpa-onnx-${SHERPA_ONNX_VERSION}" git push https://csukuangfj:$HF_TOKEN@huggingface.co/csukuangfj/sherpa-onnx-libs main - name: Release pre-compiled binaries and libs for Windows x64 if: github.repository_owner == 'csukuangfj' && github.event_name == 'push' && contains(github.ref, 'refs/tags/') uses: svenstaro/upload-release-action@v2 with: file_glob: true overwrite: true file: sherpa-onnx-*-win-x64*.tar.bz2 # repo_name: k2-fsa/sherpa-onnx # repo_token: ${{ secrets.UPLOAD_GH_SHERPA_ONNX_TOKEN }} # tag: v1.10.45 - name: Release pre-compiled binaries and libs for Windows x64 if: github.repository_owner == 'k2-fsa'&& github.event_name == 'push' && contains(github.ref, 'refs/tags/') uses: svenstaro/upload-release-action@v2 with: file_glob: true overwrite: true file: sherpa-onnx-*-win-x64*.tar.bz2 - name: Test offline Moonshine for windows x64 shell: bash run: | export PATH=$PWD/build/bin/Release:$PATH export EXE=sherpa-onnx-offline.exe .github/scripts/test-offline-moonshine.sh - name: Test C++ API shell: bash run: | export PATH=$PWD/build/bin/Release:$PATH export CXX_STREAMING_ZIPFORMER_EXE=streaming-zipformer-cxx-api.exe export CXX_WHISPER_EXE=whisper-cxx-api.exe export CXX_SENSE_VOICE_EXE=sense-voice-cxx-api.exe .github/scripts/test-cxx-api.sh - name: Test offline speaker diarization shell: bash run: | export PATH=$PWD/build/bin/Release:$PATH export EXE=sherpa-onnx-offline-speaker-diarization.exe .github/scripts/test-speaker-diarization.sh - name: Test online punctuation shell: bash run: | export PATH=$PWD/build/bin/Release:$PATH export EXE=sherpa-onnx-online-punctuation.exe .github/scripts/test-online-punctuation.sh - name: Test offline punctuation shell: bash run: | export PATH=$PWD/build/bin/Release:$PATH export EXE=sherpa-onnx-offline-punctuation.exe .github/scripts/test-offline-punctuation.sh - name: Test C API shell: bash run: | export PATH=$PWD/build/bin/Release:$PATH export SLID_EXE=spoken-language-identification-c-api.exe export SID_EXE=speaker-identification-c-api.exe export AT_EXE=audio-tagging-c-api.exe export PUNCT_EXE=add-punctuation-c-api.exe .github/scripts/test-c-api.sh - name: Test Audio tagging shell: bash run: | export PATH=$PWD/build/bin/Release:$PATH export EXE=sherpa-onnx-offline-audio-tagging.exe .github/scripts/test-audio-tagging.sh - name: Test spoken language identification (C++ API) shell: bash run: | export PATH=$PWD/build/bin/Release:$PATH export EXE=sherpa-onnx-offline-language-identification.exe .github/scripts/test-spoken-language-identification.sh - name: Test online CTC shell: bash run: | export PATH=$PWD/build/bin/Release:$PATH export EXE=sherpa-onnx.exe .github/scripts/test-online-ctc.sh - name: Test offline TTS if: matrix.with_tts == 'ON' shell: bash run: | export PATH=$PWD/build/bin/Release:$PATH export EXE=sherpa-onnx-offline-tts.exe .github/scripts/test-offline-tts.sh - name: Test online paraformer for windows x64 shell: bash run: | export PATH=$PWD/build/bin/Release:$PATH export EXE=sherpa-onnx.exe .github/scripts/test-online-paraformer.sh - name: Test offline Whisper for windows x64 shell: bash run: | export PATH=$PWD/build/bin/Release:$PATH export EXE=sherpa-onnx-offline.exe .github/scripts/test-offline-whisper.sh - name: Test offline CTC for windows x64 shell: bash run: | export PATH=$PWD/build/bin/Release:$PATH export EXE=sherpa-onnx-offline.exe .github/scripts/test-offline-ctc.sh - name: Test offline transducer for Windows x64 shell: bash run: | export PATH=$PWD/build/bin/Release:$PATH export EXE=sherpa-onnx-offline.exe .github/scripts/test-offline-transducer.sh - name: Test online transducer for Windows x64 shell: bash run: | export PATH=$PWD/build/bin/Release:$PATH export EXE=sherpa-onnx.exe .github/scripts/test-online-transducer.sh - name: Test online transducer (C API) shell: bash run: | export PATH=$PWD/build/bin/Release:$PATH export EXE=decode-file-c-api.exe .github/scripts/test-online-transducer.sh