Skip to content

Commit 206a71d

Browse files
committed
combine VAD with transcribe bckends
1 parent 1d12230 commit 206a71d

File tree

16 files changed

+117
-418
lines changed

16 files changed

+117
-418
lines changed

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ backend/go/image/stablediffusion-ggml/build/
99
backend/go/*/build
1010
backend/go/*/.cache
1111
backend/go/*/sources
12+
backend/go/*/package
1213
examples/rwkv/models
1314
examples/**/models
1415
Dockerfile*

Makefile

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -442,9 +442,6 @@ docker-save-diffusers: backend-images
442442
docker-build-whisper:
443443
docker build --build-arg BUILD_TYPE=$(BUILD_TYPE) --build-arg BASE_IMAGE=$(BASE_IMAGE) -t local-ai-backend:whisper -f backend/Dockerfile.golang --build-arg BACKEND=whisper .
444444

445-
docker-build-whisper-vad:
446-
docker build --build-arg BUILD_TYPE=$(BUILD_TYPE) --build-arg BASE_IMAGE=$(BASE_IMAGE) -t local-ai-backend:whisper-vad -f backend/Dockerfile.golang --build-arg BACKEND=whisper-vad .
447-
448445
docker-save-whisper: backend-images
449446
docker save local-ai-backend:whisper -o backend-images/whisper.tar
450447

backend/go/whisper-vad/Makefile

Lines changed: 0 additions & 77 deletions
This file was deleted.

backend/go/whisper-vad/gowhisper.h

Lines changed: 0 additions & 6 deletions
This file was deleted.

backend/go/whisper-vad/main.go

Lines changed: 0 additions & 46 deletions
This file was deleted.

backend/go/whisper-vad/package.sh

Lines changed: 0 additions & 52 deletions
This file was deleted.

backend/go/whisper-vad/run.sh

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
.cache/
22
sources/
33
build/
4+
package/
45
whisper
56
libgowhisper.so
67

backend/go/whisper/Makefile

Lines changed: 28 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,110 +1,53 @@
1-
GOCMD=go
1+
CMAKE_ARGS?=
2+
BUILD_TYPE?=
23
NATIVE?=false
34

4-
BUILD_TYPE?=
5-
CMAKE_ARGS?=
5+
GOCMD?=go
6+
GO_TAGS?=
7+
JOBS?=$(shell nproc --ignore=1)
68

79
# whisper.cpp version
810
WHISPER_REPO?=https://github.com/ggml-org/whisper.cpp
9-
WHISPER_CPP_VERSION?=fc45bb86251f774ef817e89878bb4c2636c8a58f
10-
11-
export WHISPER_CMAKE_ARGS?=-DBUILD_SHARED_LIBS=OFF
12-
export WHISPER_DIR=$(abspath ./sources/whisper.cpp)
13-
export WHISPER_INCLUDE_PATH=$(WHISPER_DIR)/include:$(WHISPER_DIR)/ggml/include
14-
export WHISPER_LIBRARY_PATH=$(WHISPER_DIR)/build/src/:$(WHISPER_DIR)/build/ggml/src
11+
WHISPER_CPP_VERSION?=16c2924cb2c4b5c9f79220aa7708eb5b346b029b
1512

16-
CGO_LDFLAGS_WHISPER?=
17-
CGO_LDFLAGS_WHISPER+=-lggml
18-
CMAKE_ARGS+=-DBUILD_SHARED_LIBS=OFF -DLLAMA_CURL=OFF
19-
CUDA_LIBPATH?=/usr/local/cuda/lib64/
13+
CMAKE_ARGS+=-DBUILD_SHARED_LIBS=OFF
2014

21-
ONEAPI_VERSION?=2025.2
22-
23-
# IF native is false, we add -DGGML_NATIVE=OFF to CMAKE_ARGS
24-
ifeq ($(NATIVE),false)
25-
CMAKE_ARGS+=-DGGML_NATIVE=OFF
26-
WHISPER_CMAKE_ARGS+=-DGGML_NATIVE=OFF
27-
endif
28-
CURRENT_MAKEFILE_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
2915
ifeq ($(NATIVE),false)
3016
CMAKE_ARGS+=-DGGML_NATIVE=OFF
3117
endif
32-
# If build type is cublas, then we set -DGGML_CUDA=ON to CMAKE_ARGS automatically
18+
3319
ifeq ($(BUILD_TYPE),cublas)
34-
CGO_LDFLAGS+=-lcublas -lcudart -L$(CUDA_LIBPATH) -L$(CUDA_LIBPATH)/stubs/ -lcuda
3520
CMAKE_ARGS+=-DGGML_CUDA=ON
36-
CGO_LDFLAGS_WHISPER+=-lcufft -lggml-cuda
37-
export WHISPER_LIBRARY_PATH:=$(WHISPER_LIBRARY_PATH):$(WHISPER_DIR)/build/ggml/src/ggml-cuda/
38-
# If build type is openblas then we set -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS
39-
# to CMAKE_ARGS automatically
4021
else ifeq ($(BUILD_TYPE),openblas)
4122
CMAKE_ARGS+=-DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS
42-
# If build type is clblas (openCL) we set -DGGML_CLBLAST=ON -DCLBlast_DIR=/some/path
4323
else ifeq ($(BUILD_TYPE),clblas)
4424
CMAKE_ARGS+=-DGGML_CLBLAST=ON -DCLBlast_DIR=/some/path
45-
# If it's hipblas we do have also to set CC=/opt/rocm/llvm/bin/clang CXX=/opt/rocm/llvm/bin/clang++
4625
else ifeq ($(BUILD_TYPE),hipblas)
47-
ROCM_HOME ?= /opt/rocm
48-
ROCM_PATH ?= /opt/rocm
49-
LD_LIBRARY_PATH ?= /opt/rocm/lib:/opt/rocm/llvm/lib
50-
export STABLE_BUILD_TYPE=
51-
export CXX=$(ROCM_HOME)/llvm/bin/clang++
52-
export CC=$(ROCM_HOME)/llvm/bin/clang
53-
# GPU_TARGETS ?= gfx803,gfx900,gfx906,gfx908,gfx90a,gfx942,gfx1010,gfx1030,gfx1032,gfx1100,gfx1101,gfx1102
54-
# AMDGPU_TARGETS ?= "$(GPU_TARGETS)"
55-
CMAKE_ARGS+=-DGGML_HIP=ON
56-
CGO_LDFLAGS += -O3 --rtlib=compiler-rt -unwindlib=libgcc -lhipblas -lrocblas --hip-link -L${ROCM_HOME}/lib/llvm/lib -L$(CURRENT_MAKEFILE_DIR)/sources/whisper.cpp/build/ggml/src/ggml-hip/ -lggml-hip
57-
# CMAKE_ARGS+=-DGGML_HIP=ON -DAMDGPU_TARGETS="$(AMDGPU_TARGETS)" -DGPU_TARGETS="$(GPU_TARGETS)"
26+
CMAKE_ARGS+=-DGGML_HIPBLAS=ON
5827
else ifeq ($(BUILD_TYPE),vulkan)
59-
CMAKE_ARGS+=-DGGML_VULKAN=1
60-
CGO_LDFLAGS_WHISPER+=-lggml-vulkan -lvulkan
61-
export WHISPER_LIBRARY_PATH:=$(WHISPER_LIBRARY_PATH):$(WHISPER_DIR)/build/ggml/src/ggml-vulkan/
28+
CMAKE_ARGS+=-DGGML_VULKAN=ON
6229
else ifeq ($(OS),Darwin)
63-
ifeq ($(BUILD_TYPE),)
64-
BUILD_TYPE=metal
65-
endif
6630
ifneq ($(BUILD_TYPE),metal)
6731
CMAKE_ARGS+=-DGGML_METAL=OFF
68-
CGO_LDFLAGS_WHISPER+=-lggml-blas
69-
export WHISPER_LIBRARY_PATH:=$(WHISPER_LIBRARY_PATH):$(WHISPER_DIR)/build/ggml/src/ggml-blas
7032
else
7133
CMAKE_ARGS+=-DGGML_METAL=ON
7234
CMAKE_ARGS+=-DGGML_METAL_EMBED_LIBRARY=ON
73-
CMAKE_ARGS+=-DGGML_METAL_USE_BF16=ON
74-
CMAKE_ARGS+=-DGGML_OPENMP=OFF
75-
CMAKE_ARGS+=-DWHISPER_BUILD_EXAMPLES=OFF
76-
CMAKE_ARGS+=-DWHISPER_BUILD_TESTS=OFF
77-
CMAKE_ARGS+=-DWHISPER_BUILD_SERVER=OFF
78-
CGO_LDFLAGS += -framework Accelerate
79-
CGO_LDFLAGS_WHISPER+=-lggml-metal -lggml-blas
80-
export WHISPER_LIBRARY_PATH:=$(WHISPER_LIBRARY_PATH):$(WHISPER_DIR)/build/ggml/src/ggml-metal/:$(WHISPER_DIR)/build/ggml/src/ggml-blas
8135
endif
82-
TARGET+=--target ggml-metal
8336
endif
8437

85-
ifneq (,$(findstring sycl,$(BUILD_TYPE)))
86-
export CC=icx
87-
export CXX=icpx
88-
CGO_LDFLAGS_WHISPER += -fsycl -L${DNNLROOT}/lib -rpath ${ONEAPI_ROOT}/${ONEAPI_VERSION}/lib -ldnnl ${MKLROOT}/lib/intel64/libmkl_sycl.a -fiopenmp -fopenmp-targets=spir64 -lOpenCL -lggml-sycl
89-
CGO_LDFLAGS_WHISPER += $(shell pkg-config --libs mkl-static-lp64-gomp)
90-
CGO_CXXFLAGS_WHISPER += -fiopenmp -fopenmp-targets=spir64
91-
CGO_CXXFLAGS_WHISPER += $(shell pkg-config --cflags mkl-static-lp64-gomp )
92-
export WHISPER_LIBRARY_PATH:=$(WHISPER_LIBRARY_PATH):$(WHISPER_DIR)/build/ggml/src/ggml-sycl/
38+
ifeq ($(BUILD_TYPE),sycl_f16)
9339
CMAKE_ARGS+=-DGGML_SYCL=ON \
9440
-DCMAKE_C_COMPILER=icx \
9541
-DCMAKE_CXX_COMPILER=icpx \
96-
-DCMAKE_CXX_FLAGS="-fsycl"
42+
-DGGML_SYCL_F16=ON
9743
endif
9844

99-
ifeq ($(BUILD_TYPE),sycl_f16)
100-
CMAKE_ARGS+=-DGGML_SYCL_F16=ON
101-
endif
102-
103-
ifneq ($(OS),Darwin)
104-
CGO_LDFLAGS_WHISPER+=-lgomp
45+
ifeq ($(BUILD_TYPE),sycl_f32)
46+
CMAKE_ARGS+=-DGGML_SYCL=ON \
47+
-DCMAKE_C_COMPILER=icx \
48+
-DCMAKE_CXX_COMPILER=icpx
10549
endif
10650

107-
## whisper
10851
sources/whisper.cpp:
10952
mkdir -p sources/whisper.cpp
11053
cd sources/whisper.cpp && \
@@ -114,18 +57,21 @@ sources/whisper.cpp:
11457
git checkout $(WHISPER_CPP_VERSION) && \
11558
git submodule update --init --recursive --depth 1 --single-branch
11659

117-
sources/whisper.cpp/build/src/libwhisper.a: sources/whisper.cpp
118-
cd sources/whisper.cpp && cmake $(CMAKE_ARGS) $(WHISPER_CMAKE_ARGS) . -B ./build
119-
cd sources/whisper.cpp/build && cmake --build . --config Release
60+
libgowhisper.so: sources/whisper.cpp CMakeLists.txt gowhisper.cpp gowhisper.h
61+
mkdir -p build && \
62+
cd build && \
63+
cmake .. $(CMAKE_ARGS) && \
64+
cmake --build . --config Release -j$(JOBS) && \
65+
cd .. && \
66+
mv build/libgowhisper.so ./
12067

121-
whisper: sources/whisper.cpp sources/whisper.cpp/build/src/libwhisper.a
122-
$(GOCMD) mod edit -replace github.com/ggerganov/whisper.cpp=$(CURDIR)/sources/whisper.cpp
123-
$(GOCMD) mod edit -replace github.com/ggerganov/whisper.cpp/bindings/go=$(CURDIR)/sources/whisper.cpp/bindings/go
124-
CGO_LDFLAGS="$(CGO_LDFLAGS) $(CGO_LDFLAGS_WHISPER)" C_INCLUDE_PATH="${WHISPER_INCLUDE_PATH}" LIBRARY_PATH="${WHISPER_LIBRARY_PATH}" LD_LIBRARY_PATH="${WHISPER_LIBRARY_PATH}" \
125-
CGO_CXXFLAGS="$(CGO_CXXFLAGS_WHISPER)" \
126-
$(GOCMD) build -ldflags "$(LD_FLAGS)" -tags "$(GO_TAGS)" -o whisper ./
68+
whisper: main.go gowhisper.go libgowhisper.so
69+
CGO_ENABLED=0 $(GOCMD) build -tags "$(GO_TAGS)" -o whisper ./
12770

12871
package:
12972
bash package.sh
13073

13174
build: whisper package
75+
76+
clean:
77+
rm -rf libgowhisper.o build whisper

0 commit comments

Comments
 (0)