Skip to content

Commit 2c97d0b

Browse files
committed
feat(backend): Add Sherpa ONNX backend and Omnilingual ASR
Signed-off-by: Richard Palethorpe <io@richiejp.com>
1 parent 067a255 commit 2c97d0b

File tree

19 files changed

+1499
-22
lines changed

19 files changed

+1499
-22
lines changed

.github/workflows/backend.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1928,6 +1928,34 @@ jobs:
19281928
dockerfile: "./backend/Dockerfile.python"
19291929
context: "./"
19301930
ubuntu-version: '2404'
1931+
# sherpa-onnx CPU
1932+
- build-type: ''
1933+
cuda-major-version: ""
1934+
cuda-minor-version: ""
1935+
platforms: 'linux/amd64,linux/arm64'
1936+
tag-latest: 'auto'
1937+
tag-suffix: '-cpu-sherpa-onnx'
1938+
runs-on: 'ubuntu-latest'
1939+
base-image: "ubuntu:24.04"
1940+
skip-drivers: 'false'
1941+
backend: "sherpa-onnx"
1942+
dockerfile: "./backend/Dockerfile.golang"
1943+
context: "./"
1944+
ubuntu-version: '2404'
1945+
# sherpa-onnx CUDA 12
1946+
- build-type: 'cublas'
1947+
cuda-major-version: "12"
1948+
cuda-minor-version: "8"
1949+
platforms: 'linux/amd64'
1950+
tag-latest: 'auto'
1951+
tag-suffix: '-gpu-nvidia-cuda-12-sherpa-onnx'
1952+
runs-on: 'ubuntu-latest'
1953+
base-image: "ubuntu:24.04"
1954+
skip-drivers: 'false'
1955+
backend: "sherpa-onnx"
1956+
dockerfile: "./backend/Dockerfile.golang"
1957+
context: "./"
1958+
ubuntu-version: '2404'
19311959
backend-jobs-darwin:
19321960
uses: ./.github/workflows/backend_build_darwin.yml
19331961
strategy:

Makefile

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Disable parallel execution for backend builds
2-
.NOTPARALLEL: backends/diffusers backends/llama-cpp backends/outetts backends/piper backends/stablediffusion-ggml backends/whisper backends/faster-whisper backends/silero-vad backends/local-store backends/huggingface backends/rfdetr backends/kitten-tts backends/kokoro backends/chatterbox backends/llama-cpp-darwin backends/neutts build-darwin-python-backend build-darwin-go-backend backends/mlx backends/diffuser-darwin backends/mlx-vlm backends/mlx-audio backends/stablediffusion-ggml-darwin backends/vllm backends/vllm-omni backends/moonshine backends/pocket-tts backends/qwen-tts backends/qwen-asr backends/nemo backends/voxcpm backends/whisperx backends/ace-step backends/voxtral
2+
.NOTPARALLEL: backends/diffusers backends/llama-cpp backends/outetts backends/piper backends/stablediffusion-ggml backends/whisper backends/faster-whisper backends/silero-vad backends/local-store backends/huggingface backends/rfdetr backends/kitten-tts backends/kokoro backends/chatterbox backends/llama-cpp-darwin backends/neutts build-darwin-python-backend build-darwin-go-backend backends/mlx backends/diffuser-darwin backends/mlx-vlm backends/mlx-audio backends/stablediffusion-ggml-darwin backends/vllm backends/vllm-omni backends/moonshine backends/pocket-tts backends/qwen-tts backends/qwen-asr backends/nemo backends/voxcpm backends/whisperx backends/ace-step backends/voxtral backends/sherpa-onnx
33

44
GOCMD=go
55
GOTEST=$(GOCMD) test
@@ -454,6 +454,7 @@ BACKEND_SILERO_VAD = silero-vad|golang|.|false|true
454454
BACKEND_STABLEDIFFUSION_GGML = stablediffusion-ggml|golang|.|--progress=plain|true
455455
BACKEND_WHISPER = whisper|golang|.|false|true
456456
BACKEND_VOXTRAL = voxtral|golang|.|false|true
457+
BACKEND_SHERPA_ONNX = sherpa-onnx|golang|.|false|true
457458

458459
# Python backends with root context
459460
BACKEND_RERANKERS = rerankers|python|.|false|true
@@ -489,6 +490,7 @@ define docker-build-backend
489490
--build-arg CUDA_MINOR_VERSION=$(CUDA_MINOR_VERSION) \
490491
--build-arg UBUNTU_VERSION=$(UBUNTU_VERSION) \
491492
--build-arg UBUNTU_CODENAME=$(UBUNTU_CODENAME) \
493+
--progress=plain \
492494
$(if $(filter true,$(5)),--build-arg BACKEND=$(1)) \
493495
-t local-ai-backend:$(1) -f backend/Dockerfile.$(2) $(3)
494496
endef
@@ -530,12 +532,13 @@ $(eval $(call generate-docker-build-target,$(BACKEND_NEMO)))
530532
$(eval $(call generate-docker-build-target,$(BACKEND_VOXCPM)))
531533
$(eval $(call generate-docker-build-target,$(BACKEND_WHISPERX)))
532534
$(eval $(call generate-docker-build-target,$(BACKEND_ACE_STEP)))
535+
$(eval $(call generate-docker-build-target,$(BACKEND_SHERPA_ONNX)))
533536

534537
# Pattern rule for docker-save targets
535538
docker-save-%: backend-images
536539
docker save local-ai-backend:$* -o backend-images/$*.tar
537540

538-
docker-build-backends: docker-build-llama-cpp docker-build-rerankers docker-build-vllm docker-build-vllm-omni docker-build-transformers docker-build-outetts docker-build-diffusers docker-build-kokoro docker-build-faster-whisper docker-build-coqui docker-build-chatterbox docker-build-vibevoice docker-build-moonshine docker-build-pocket-tts docker-build-qwen-tts docker-build-qwen-asr docker-build-nemo docker-build-voxcpm docker-build-whisperx docker-build-ace-step docker-build-voxtral
541+
docker-build-backends: docker-build-llama-cpp docker-build-rerankers docker-build-vllm docker-build-vllm-omni docker-build-transformers docker-build-outetts docker-build-diffusers docker-build-kokoro docker-build-faster-whisper docker-build-coqui docker-build-chatterbox docker-build-vibevoice docker-build-moonshine docker-build-pocket-tts docker-build-qwen-tts docker-build-qwen-asr docker-build-nemo docker-build-voxcpm docker-build-whisperx docker-build-ace-step docker-build-voxtral docker-build-sherpa-onnx
539542

540543
########################################################
541544
### Mock Backend for E2E Tests

backend/go/sherpa-onnx/.gitignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.cache/
2+
sources/
3+
build*/
4+
package/
5+
backend-assets/
6+
sherpa-onnx
7+
*.so
8+
compile_commands.json
9+
sherpa-onnx-whisper-*

backend/go/sherpa-onnx/Makefile

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
CURRENT_DIR=$(abspath ./)
2+
GOCMD=go
3+
4+
ONNX_VERSION?=1.23.2
5+
SHERPA_COMMIT?=7e227a529be6c383134a358c5744d0eb1cb5ae1f
6+
ONNX_ARCH?=x64
7+
ONNX_OS?=linux
8+
9+
ifneq (,$(findstring aarch64,$(shell uname -m)))
10+
ONNX_ARCH=aarch64
11+
endif
12+
13+
ifeq ($(OS),Darwin)
14+
ONNX_OS=osx
15+
ifneq (,$(findstring aarch64,$(shell uname -m)))
16+
ONNX_ARCH=arm64
17+
else ifneq (,$(findstring arm64,$(shell uname -m)))
18+
ONNX_ARCH=arm64
19+
else
20+
ONNX_ARCH=x86_64
21+
endif
22+
endif
23+
24+
ifeq ($(BUILD_TYPE),cublas)
25+
ONNX_VARIANT=-gpu
26+
SHERPA_GPU=ON
27+
ONNX_PROVIDER=cuda
28+
else
29+
ONNX_VARIANT=
30+
SHERPA_GPU=OFF
31+
ONNX_PROVIDER=cpu
32+
endif
33+
34+
JOBS?=$(shell nproc --ignore=1 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4)
35+
36+
sources/onnxruntime:
37+
mkdir -p sources/onnxruntime
38+
curl -L https://github.com/microsoft/onnxruntime/releases/download/v$(ONNX_VERSION)/onnxruntime-$(ONNX_OS)-$(ONNX_ARCH)$(ONNX_VARIANT)-$(ONNX_VERSION).tgz \
39+
-o sources/onnxruntime/onnxruntime.tgz
40+
cd sources/onnxruntime && tar -xf onnxruntime.tgz --strip-components=1 && rm onnxruntime.tgz
41+
42+
sources/sherpa-onnx: sources/onnxruntime
43+
git clone https://github.com/k2-fsa/sherpa-onnx.git sources/sherpa-onnx
44+
cd sources/sherpa-onnx && git checkout $(SHERPA_COMMIT)
45+
mkdir -p sources/sherpa-onnx/build
46+
cd sources/sherpa-onnx/build && cmake \
47+
-DCMAKE_BUILD_TYPE=Release \
48+
-DCMAKE_C_FLAGS="-Wno-error=format-security" \
49+
-DCMAKE_CXX_FLAGS="-Wno-error=format-security" \
50+
-DSHERPA_ONNX_ENABLE_GPU=$(SHERPA_GPU) \
51+
-DSHERPA_ONNX_ENABLE_TTS=ON \
52+
-DSHERPA_ONNX_ENABLE_BINARY=OFF \
53+
-DSHERPA_ONNX_ENABLE_PYTHON=OFF \
54+
-DSHERPA_ONNX_ENABLE_TESTS=OFF \
55+
-DSHERPA_ONNX_ENABLE_C_API=ON \
56+
-DBUILD_SHARED_LIBS=ON \
57+
-DSHERPA_ONNX_USE_PRE_INSTALLED_ONNXRUNTIME_IF_AVAILABLE=ON \
58+
-DONNXRUNTIME_DIR=$(CURRENT_DIR)/sources/onnxruntime \
59+
..
60+
cd sources/sherpa-onnx/build && make -j$(JOBS)
61+
62+
backend-assets/lib: sources/sherpa-onnx sources/onnxruntime
63+
mkdir -p backend-assets/lib
64+
cp -rfLv sources/onnxruntime/lib/* backend-assets/lib/
65+
cp -rfLv sources/sherpa-onnx/build/lib/*.so* backend-assets/lib/ 2>/dev/null || true
66+
cp -rfLv sources/sherpa-onnx/build/lib/*.dylib backend-assets/lib/ 2>/dev/null || true
67+
68+
sherpa-onnx: backend-assets/lib
69+
CGO_LDFLAGS="$(CGO_LDFLAGS) -L$(CURRENT_DIR)/backend-assets/lib -lsherpa-onnx-c-api -lonnxruntime" \
70+
CGO_CFLAGS="$(CGO_CFLAGS) -I$(CURRENT_DIR)/sources/sherpa-onnx/sherpa-onnx/c-api -I$(CURRENT_DIR)/sources/onnxruntime/include" \
71+
LIBRARY_PATH=$(CURRENT_DIR)/backend-assets/lib \
72+
$(GOCMD) build -ldflags "$(LD_FLAGS) -X main.onnxProvider=$(ONNX_PROVIDER)" -tags "$(GO_TAGS)" -o sherpa-onnx ./
73+
74+
package:
75+
bash package.sh
76+
77+
build: sherpa-onnx package
78+
79+
clean:
80+
rm -rf sherpa-onnx sources/ backend-assets/ package/ vits-ljs/ sherpa-onnx-whisper-*/
81+
82+
test: sherpa-onnx
83+
CGO_LDFLAGS="$(CGO_LDFLAGS) -L$(CURRENT_DIR)/backend-assets/lib -lsherpa-onnx-c-api -lonnxruntime" \
84+
CGO_CFLAGS="$(CGO_CFLAGS) -I$(CURRENT_DIR)/sources/sherpa-onnx/sherpa-onnx/c-api -I$(CURRENT_DIR)/sources/onnxruntime/include" \
85+
LIBRARY_PATH=$(CURRENT_DIR)/backend-assets/lib \
86+
LD_LIBRARY_PATH=$(CURRENT_DIR)/backend-assets/lib \
87+
bash test.sh
88+
89+
.PHONY: build package clean test

0 commit comments

Comments
 (0)