feat: audio STT #17
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI Quality Gate | |
on: | |
pull_request: | |
types: [opened, synchronize, reopened] | |
workflow_dispatch: | |
env: | |
WHISPER_MODEL_URL: https://delta.jan.ai/ggml-tiny-q5_1.bin | |
jobs: | |
build-and-test: | |
runs-on: ${{ matrix.runs-on }} | |
timeout-minutes: 60 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: "linux" | |
name: "amd64-avx2" | |
runs-on: "ubuntu-20-04" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_NATIVE=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: true | |
vulkan: false | |
sccache: false | |
sccache-conf-path: "/tmp/sccache.conf" | |
- os: "linux" | |
name: "amd64-noavx" | |
runs-on: "ubuntu-20-04" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DGGML_NATIVE=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: "/tmp/sccache.conf" | |
- os: "linux" | |
name: "amd64-avx" | |
runs-on: "ubuntu-20-04" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: "/tmp/sccache.conf" | |
- os: "linux" | |
name: "amd64-avx512" | |
runs-on: "ubuntu-20-04" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_AVX512=ON -DGGML_NATIVE=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: "/tmp/sccache.conf" | |
- os: "linux" | |
name: "amd64-vulkan" | |
runs-on: "ubuntu-20-04-cuda-11-7" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_VULKAN=ON -DGGML_NATIVE=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: true | |
sccache: false | |
sccache-conf-path: "/tmp/sccache.conf" | |
- os: "linux" | |
name: "amd64-avx2-cuda-11-7" | |
runs-on: "ubuntu-20-04-cuda-11-7" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: "/tmp/sccache.conf" | |
- os: "linux" | |
name: "amd64-avx-cuda-11-7" | |
runs-on: "ubuntu-20-04-cuda-11-7" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: "/tmp/sccache.conf" | |
- os: "linux" | |
name: "amd64-avx512-cuda-11-7" | |
runs-on: "ubuntu-20-04-cuda-11-7" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_AVX512=ON -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: "/tmp/sccache.conf" | |
- os: "linux" | |
name: "amd64-avx2-cuda-12-0" | |
runs-on: "ubuntu-20-04-cuda-12-0" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: "/tmp/sccache.conf" | |
- os: "linux" | |
name: "amd64-avx-cuda-12-0" | |
runs-on: "ubuntu-20-04-cuda-12-0" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: "/tmp/sccache.conf" | |
- os: "linux" | |
name: "amd64-avx512-cuda-12-0" | |
runs-on: "ubuntu-20-04-cuda-12-0" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_AVX512=ON -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: "/tmp/sccache.conf" | |
- os: "mac" | |
name: "amd64" | |
runs-on: "macos-13" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DBUILD_SHARED_LIBS=OFF -DGGML_METAL=OFF -DWHISPER_SDL2=ON" | |
run-e2e: true | |
vulkan: false | |
sccache: false | |
sccache-conf-path: "" | |
- os: "mac" | |
name: "arm64" | |
runs-on: "macos-silicon" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DBUILD_SHARED_LIBS=OFF -DGGML_METAL_EMBED_LIBRARY=ON -DWHISPER_SDL2=ON" | |
run-e2e: true | |
vulkan: false | |
sccache: false | |
sccache-conf-path: "" | |
- os: "windows" | |
name: "amd64-avx2" | |
runs-on: "windows-2019" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_NATIVE=OFF -DWHISPER_SDL2=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: "" | |
- os: "windows" | |
name: "amd64-avx" | |
runs-on: "windows-2019" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_NATIVE=OFF -DGGML_AVX2=OFF -DWHISPER_SDL2=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl -GNinja" | |
run-e2e: true | |
vulkan: false | |
sccache: false | |
sccache-conf-path: "" | |
- os: "windows" | |
name: "amd64-avx512" | |
runs-on: "windows-2019" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_NATIVE=OFF -DGGML_AVX512=ON -DWHISPER_SDL2=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: "" | |
- os: "windows" | |
name: "amd64-vulkan" | |
runs-on: "windows-2019" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_NATIVE=OFF -DGGML_VULKAN=ON -DWHISPER_SDL2=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl -GNinja" | |
run-e2e: false | |
vulkan: true | |
sccache: false | |
sccache-conf-path: "" | |
- os: "windows" | |
name: "amd64-avx2-cuda-12-0" | |
runs-on: "windows-cuda-12-0" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DWHISPER_SDL2=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CUDA_COMPILER_LAUNCHER=sccache -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: 'C:\sccache.conf' | |
- os: "windows" | |
name: "amd64-avx-cuda-12-0" | |
runs-on: "windows-cuda-12-0" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DWHISPER_SDL2=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CUDA_COMPILER_LAUNCHER=sccache -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: 'C:\sccache.conf' | |
- os: "windows" | |
name: "amd64-avx512-cuda-12-0" | |
runs-on: "windows-cuda-12-0" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_AVX512=ON -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DWHISPER_SDL2=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CUDA_COMPILER_LAUNCHER=sccache -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: 'C:\sccache.conf' | |
- os: "windows" | |
name: "amd64-avx2-cuda-11-7" | |
runs-on: "windows-cuda-11-7" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DWHISPER_SDL2=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CUDA_COMPILER_LAUNCHER=sccache -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: 'C:\sccache.conf' | |
- os: "windows" | |
name: "amd64-avx-cuda-11-7" | |
runs-on: "windows-cuda-11-7" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DWHISPER_SDL2=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CUDA_COMPILER_LAUNCHER=sccache -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: 'C:\sccache.conf' | |
- os: "windows" | |
name: "amd64-avx512-cuda-11-7" | |
runs-on: "windows-cuda-11-7" | |
cmake-flags: "-DCORTEXAUDIO_VERSION=${{github.event.pull_request.head.sha}} -DGGML_AVX512=ON -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DWHISPER_SDL2=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CUDA_COMPILER_LAUNCHER=sccache -GNinja" | |
run-e2e: false | |
vulkan: false | |
sccache: false | |
sccache-conf-path: 'C:\sccache.conf' | |
steps: | |
- name: Clone | |
id: checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Prepare Vulkan SDK | |
if: ${{ matrix.vulkan }} | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: 1.3.275.0 | |
vulkan-components: Vulkan-Headers, Vulkan-Loader | |
vulkan-use-cache: true | |
- name: create sccache.conf | |
if: ${{ matrix.sccache }} | |
run: | | |
echo "[cache.s3]" > ${{ matrix.sccache-conf-path }} | |
echo 'bucket = "${{ secrets.MINIO_BUCKET_NAME }}"' >> ${{ matrix.sccache-conf-path }} | |
echo 'endpoint = "${{ secrets.MINIO_ENDPOINT }}"' >> ${{ matrix.sccache-conf-path }} | |
echo 'key_prefix = "${{ matrix.os }}-${{ matrix.name }}"' >> ${{ matrix.sccache-conf-path }} | |
echo 'use_ssl = false' >> ${{ matrix.sccache-conf-path }} | |
echo 'server_side_encryption = false' >> ${{ matrix.sccache-conf-path }} | |
echo 'no_credentials = false' >> ${{ matrix.sccache-conf-path }} | |
- name: Install SDL2 on MacOS | |
if: runner.os == 'macOS' | |
continue-on-error: true | |
run: | | |
brew update | |
brew install sdl2 | |
- name: Install choco on Windows | |
if: runner.os == 'Windows' | |
run: | | |
choco install make sccache ninja -y | |
choco install wget -y --force | |
- name: Fetch SDL2 on Windows | |
if: runner.os == 'Windows' | |
run: | | |
C:\ProgramData\chocolatey\lib\Wget\tools\wget.exe -qO sdl2.zip https://github.com/libsdl-org/SDL/releases/download/release-2.28.5/SDL2-devel-2.28.5-VC.zip | |
7z x sdl2.zip -aoa | |
echo "SDL2_DIR=$env:GITHUB_WORKSPACE/SDL2-2.28.5/cmake" >> $env:GITHUB_ENV | |
- name: Install ninja build on Linux | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt install ninja-build -y | |
- name: Add msbuild to PATH | |
if: runner.os == 'Windows' | |
uses: ilammy/[email protected] | |
- name: start scache server | |
if: ${{ matrix.sccache }} | |
run: | | |
sccache --start-server | |
env: | |
SCCACHE_BUCKET: "${{ secrets.MINIO_BUCKET_NAME }}" | |
SCCACHE_REGION: "${{ secrets.MINIO_REGION }}" | |
SCCACHE_ENDPOINT: "${{ secrets.MINIO_ENDPOINT }}" | |
SCCACHE_S3_USE_SSL: "false" | |
SCCACHE_S3_SERVER_SIDE_ENCRYPTION: "false" | |
SCCACHE_S3_KEY_PREFIX: "${{ matrix.os }}-${{ matrix.name }}" | |
SCCACHE_LOG: "debug" | |
SCCACHE_CONF: '${{ matrix.sccache-conf-path }}' | |
AWS_ACCESS_KEY_ID: "${{ secrets.MINIO_ACCESS_KEY_ID }}" | |
AWS_SECRET_ACCESS_KEY: "${{ secrets.MINIO_SECRET_ACCESS_KEY }}" | |
SCCACHE_IDLE_TIMEOUT: "0" | |
- name: Build | |
run: | | |
make build-example-server CMAKE_EXTRA_FLAGS="${{ matrix.cmake-flags }}" | |
- name: Pre Package | |
run: | | |
make pre-package | |
- name: Package | |
run: | | |
make package | |
- name: Run e2e testing | |
if: ${{ matrix.run-e2e }} | |
run: | | |
make run-e2e-test WHISPER_MODEL_URL=${{ env.WHISPER_MODEL_URL }} | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: cortex.audio-${{ matrix.os }}-${{ matrix.name }} | |
path: ./cortex.audio | |
- name: Clean | |
if: always() | |
continue-on-error: true | |
run: | | |
sccache --stop-server | |
rm ${{ matrix.sccache-conf-path }} |