From 52dca75d9c417ba9e5d25f434ea76764a0d2f4f4 Mon Sep 17 00:00:00 2001 From: Roy Shilkrot Date: Mon, 3 Feb 2025 09:05:32 -0500 Subject: [PATCH 01/11] Add acceleration options to build workflows and actions --- .github/actions/build-plugin/action.yaml | 2 + .github/workflows/build-project.yaml | 6 +- cmake/BuildWhispercpp.cmake | 217 +++++++++++++++++------ 3 files changed, 167 insertions(+), 58 deletions(-) diff --git a/.github/actions/build-plugin/action.yaml b/.github/actions/build-plugin/action.yaml index 127f933..6febfb5 100644 --- a/.github/actions/build-plugin/action.yaml +++ b/.github/actions/build-plugin/action.yaml @@ -69,6 +69,8 @@ runs: if (( ${+RUNNER_DEBUG} )) build_args+=(--debug) .github/scripts/build-linux ${build_args} + env: + ACCELERATION: ${{ inputs.acceleration }} - name: Run Windows Build if: runner.os == 'Windows' diff --git a/.github/workflows/build-project.yaml b/.github/workflows/build-project.yaml index 91cabe1..f1b059c 100644 --- a/.github/workflows/build-project.yaml +++ b/.github/workflows/build-project.yaml @@ -176,6 +176,9 @@ jobs: name: Build for Ubuntu 🐧 runs-on: ubuntu-22.04 needs: check-event + strategy: + matrix: + acceleration: [cpu, vulkan] defaults: run: shell: bash @@ -213,7 +216,8 @@ jobs: with: target: x86_64 config: ${{ needs.check-event.outputs.config }} - + acceleration: ${{ matrix.acceleration }} + - name: Package Plugin 📀 uses: ./.github/actions/package-plugin with: diff --git a/cmake/BuildWhispercpp.cmake b/cmake/BuildWhispercpp.cmake index 67d22b4..292996c 100644 --- a/cmake/BuildWhispercpp.cmake +++ b/cmake/BuildWhispercpp.cmake @@ -1,23 +1,24 @@ include(ExternalProject) include(FetchContent) -set(PREBUILT_WHISPERCPP_VERSION "0.0.7") +set(PREBUILT_WHISPERCPP_VERSION "0.0.8") set(PREBUILT_WHISPERCPP_URL_BASE - "https://github.com/locaal-ai/occ-ai-dep-whispercpp/releases/download/${PREBUILT_WHISPERCPP_VERSION}") + "https://github.com/locaal-ai/occ-ai-dep-whispercpp/releases/download/${PREBUILT_WHISPERCPP_VERSION}") if(APPLE) # check the "MACOS_ARCH" env var to figure out if this is x86 or arm64 if($ENV{MACOS_ARCH} STREQUAL "x86_64") - set(WHISPER_CPP_HASH "dc7fd5ff9c7fbb8623f8e14d9ff2872186cab4cd7a52066fcb2fab790d6092fc") + set(WHISPER_CPP_HASH "ac355e3f858c707897d8e0630ff85b3786ef76b84bbb23841561b3d26629e80a") elseif($ENV{MACOS_ARCH} STREQUAL "arm64") - set(WHISPER_CPP_HASH "ebed595ee431b182261bce41583993b149eed539e15ebf770d98a6bc85d53a92") + set(WHISPER_CPP_HASH "9e1f22a25f19be7eb370fc7264318de1d97e28e9059f115f4c8a7b0ef3e72678") else() message( FATAL_ERROR - "The MACOS_ARCH environment variable is not set to a valid value. Please set it to either `x86_64` or `arm64`") + "The MACOS_ARCH environment variable is not set to a valid value. Please set it to either `x86_64` or `arm64`") endif() + set(WHISPER_CPP_URL - "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-macos-$ENV{MACOS_ARCH}-${PREBUILT_WHISPERCPP_VERSION}.tar.gz") + "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-macos-$ENV{MACOS_ARCH}-${PREBUILT_WHISPERCPP_VERSION}.tar.gz") FetchContent_Declare( whispercpp_fetch @@ -29,21 +30,41 @@ if(APPLE) set_target_properties( Whispercpp::Whisper PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) set_target_properties(Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - ${whispercpp_fetch_SOURCE_DIR}/include) + ${whispercpp_fetch_SOURCE_DIR}/release/include) add_library(Whispercpp::GGML STATIC IMPORTED) set_target_properties( Whispercpp::GGML PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) + add_library(Whispercpp::GGMLBase STATIC IMPORTED) + set_target_properties( + Whispercpp::GGMLBase + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) + add_library(Whispercpp::GGMLCPU STATIC IMPORTED) + set_target_properties( + Whispercpp::GGMLCPU + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) + add_library(Whispercpp::GGMLMetal STATIC IMPORTED) + set_target_properties( + Whispercpp::GGMLMetal + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-metal${CMAKE_STATIC_LIBRARY_SUFFIX}) + add_library(Whispercpp::GGMLBlas STATIC IMPORTED) + set_target_properties( + Whispercpp::GGMLBlas + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-blas${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::CoreML STATIC IMPORTED) set_target_properties( Whispercpp::CoreML PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper.coreml${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper.coreml${CMAKE_STATIC_LIBRARY_SUFFIX}) elseif(WIN32) if(NOT DEFINED ACCELERATION) @@ -52,23 +73,24 @@ elseif(WIN32) set(ARCH_PREFIX ${ACCELERATION}) set(WHISPER_CPP_URL - "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-windows-${ARCH_PREFIX}-${PREBUILT_WHISPERCPP_VERSION}.zip") + "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-windows-${ARCH_PREFIX}-${PREBUILT_WHISPERCPP_VERSION}.zip") + if(${ACCELERATION} STREQUAL "cpu") - set(WHISPER_CPP_HASH "c23862b4aac7d8448cf7de4d339a86498f88ecba6fa7d243bbd7fabdb13d4dd4") + set(WHISPER_CPP_HASH "cb25c675a01f98bc1cd544187945636d9f7fbaffcfc08699d5edbd29be137e0b") add_compile_definitions("LOCALVOCAL_WITH_CPU") elseif(${ACCELERATION} STREQUAL "cuda") - set(WHISPER_CPP_HASH "a0adeaccae76fab0678d016a62b79a19661ed34eb810d8bae3b610345ee9a405") + set(WHISPER_CPP_HASH "672fd34841436261937d5701bf80945ddb8194f033768bb4d7b3becbdf1f66c0") add_compile_definitions("LOCALVOCAL_WITH_CUDA") elseif(${ACCELERATION} STREQUAL "hipblas") - set(WHISPER_CPP_HASH "bbad0b4eec01c5a801d384c03745ef5e97061958f8cf8f7724281d433d7d92a1") + set(WHISPER_CPP_HASH "3f4f16aa6bc9bb6326e86868603136502baef108a339bc4e42bb51654c935120") add_compile_definitions("LOCALVOCAL_WITH_HIPBLAS") elseif(${ACCELERATION} STREQUAL "vulkan") - set(WHISPER_CPP_HASH "12bb34821f9efcd31f04a487569abff2b669221f2706fe0d09c17883635ef58a") + set(WHISPER_CPP_HASH "46bbcf96cc20a92b36e47ebfabd6c9d581480f38bce72cee16c16e78d7e8c557") add_compile_definitions("LOCALVOCAL_WITH_VULKAN") else() message( FATAL_ERROR - "The ACCELERATION environment variable is not set to a valid value. Please set it to either `cpu` or `cuda` or `vulkan` or `hipblas`" + "The ACCELERATION environment variable is not set to a valid value. Please set it to either `cpu` or `cuda` or `vulkan` or `hipblas`" ) endif() @@ -80,82 +102,163 @@ elseif(WIN32) FetchContent_MakeAvailable(whispercpp_fetch) add_library(Whispercpp::Whisper SHARED IMPORTED) + set_target_properties( Whispercpp::Whisper PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}whisper${CMAKE_SHARED_LIBRARY_SUFFIX}) + ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}whisper${CMAKE_SHARED_LIBRARY_SUFFIX}) set_target_properties( Whispercpp::Whisper PROPERTIES IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) + + set_target_properties( + Whispercpp::GGML + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml${CMAKE_SHARED_LIBRARY_SUFFIX}) + set_target_properties( + Whispercpp::GGML + PROPERTIES IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) + + set_target_properties( + Whispercpp::GGMLBase + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-base${CMAKE_SHARED_LIBRARY_SUFFIX}) + set_target_properties( + Whispercpp::GGMLBase + PROPERTIES IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) + + set_target_properties( + Whispercpp::GGMLCPU + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-cpu${CMAKE_SHARED_LIBRARY_SUFFIX}) + set_target_properties( + Whispercpp::GGMLCPU + PROPERTIES IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) + set_target_properties(Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - ${whispercpp_fetch_SOURCE_DIR}/include) + ${whispercpp_fetch_SOURCE_DIR}/include) if(${ACCELERATION} STREQUAL "cpu") # add openblas to the link line add_library(Whispercpp::OpenBLAS STATIC IMPORTED) set_target_properties(Whispercpp::OpenBLAS PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/libopenblas.dll.a) + ${whispercpp_fetch_SOURCE_DIR}/release/lib/libopenblas.dll.a) + endif() + + if(${ACCELERATION} STREQUAL "cuda") + # add cuda to the link line + add_library(Whispercpp::GGMLCUDA SHARED IMPORTED) + set_target_properties( + Whispercpp::GGMLCUDA + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-cuda${CMAKE_SHARED_LIBRARY_SUFFIX}) + set_target_properties( + Whispercpp::GGMLCUDA + PROPERTIES IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cuda${CMAKE_STATIC_LIBRARY_SUFFIX}) + endif() + + if(${ACCELERATION} STREQUAL "vulkan") + # add cuda to the link line + add_library(Whispercpp::GGMLVulkan SHARED IMPORTED) + set_target_properties( + Whispercpp::GGMLVulkan + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-vulkan${CMAKE_SHARED_LIBRARY_SUFFIX}) + set_target_properties( + Whispercpp::GGMLVulkan + PROPERTIES IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-vulkan${CMAKE_STATIC_LIBRARY_SUFFIX}) endif() # glob all dlls in the bin directory and install them file(GLOB WHISPER_DLLS ${whispercpp_fetch_SOURCE_DIR}/bin/*.dll) install(FILES ${WHISPER_DLLS} DESTINATION "obs-plugins/64bit") else() - # Enable ccache if available - find_program(CCACHE_PROGRAM ccache) - if(CCACHE_PROGRAM) - message(STATUS "Found ccache: ${CCACHE_PROGRAM}") - set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM}) - set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM}) + if(NOT DEFINED ACCELERATION) + message(FATAL_ERROR "ACCELERATION is not set. Please set it to either `cpu`, or `vulkan`") endif() - if(${CMAKE_BUILD_TYPE} STREQUAL Release OR ${CMAKE_BUILD_TYPE} STREQUAL RelWithDebInfo) - set(Whispercpp_BUILD_TYPE Release) + set(WHISPER_CPP_URL + "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-linux-x86_64-${ACCELERATION}-Release.tar.gz") + + if(${ACCELERATION} STREQUAL "cpu") + set(WHISPER_CPP_HASH "b6a30f0e995070145ae10e58a656449fee00dd69c53c49ffef4597b07bcb3c2a") + add_compile_definitions("LOCALVOCAL_WITH_CPU") + elseif(${ACCELERATION} STREQUAL "vulkan") + set(WHISPER_CPP_HASH "6c5fe9c6a35b5f7f63a968b4fbbc8e05e888cc887aadbb8d82cf7e39da8ec163") + add_compile_definitions("LOCALVOCAL_WITH_VULKAN") else() - set(Whispercpp_BUILD_TYPE Debug) + message( + FATAL_ERROR + "The ACCELERATION environment variable is not set to a valid value. Please set it to either `cpu` or `vulkan`" + ) endif() - set(Whispercpp_Build_GIT_TAG "v1.6.2") - set(WHISPER_EXTRA_CXX_FLAGS "-fPIC") - set(WHISPER_ADDITIONAL_CMAKE_ARGS -DWHISPER_BLAS=OFF -DWHISPER_CUBLAS=OFF -DWHISPER_OPENBLAS=OFF) - - # On Linux build a static Whisper library - ExternalProject_Add( - Whispercpp_Build - DOWNLOAD_EXTRACT_TIMESTAMP true - GIT_REPOSITORY https://github.com/ggerganov/whisper.cpp.git - GIT_TAG ${Whispercpp_Build_GIT_TAG} - BUILD_COMMAND ${CMAKE_COMMAND} --build --config ${Whispercpp_BUILD_TYPE} - BUILD_BYPRODUCTS /lib/static/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX} - CMAKE_GENERATOR ${CMAKE_GENERATOR} - INSTALL_COMMAND ${CMAKE_COMMAND} --install --config ${Whispercpp_BUILD_TYPE} && ${CMAKE_COMMAND} -E - copy /ggml.h /include - CONFIGURE_COMMAND - ${CMAKE_COMMAND} -E env ${WHISPER_ADDITIONAL_ENV} ${CMAKE_COMMAND} -B -G - ${CMAKE_GENERATOR} -DCMAKE_INSTALL_PREFIX= -DCMAKE_BUILD_TYPE=${Whispercpp_BUILD_TYPE} - -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} -DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 - -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_} -DCMAKE_CXX_FLAGS=${WHISPER_EXTRA_CXX_FLAGS} - -DCMAKE_C_FLAGS=${WHISPER_EXTRA_CXX_FLAGS} -DBUILD_SHARED_LIBS=OFF -DWHISPER_BUILD_TESTS=OFF - -DWHISPER_BUILD_EXAMPLES=OFF ${WHISPER_ADDITIONAL_CMAKE_ARGS}) - - ExternalProject_Get_Property(Whispercpp_Build INSTALL_DIR) + + FetchContent_Declare( + whispercpp_fetch + URL ${WHISPER_CPP_URL} + URL_HASH SHA256=${WHISPER_CPP_HASH} + DOWNLOAD_EXTRACT_TIMESTAMP TRUE) + FetchContent_MakeAvailable(whispercpp_fetch) # add the static Whisper library to the link line add_library(Whispercpp::Whisper STATIC IMPORTED) set_target_properties( Whispercpp::Whisper PROPERTIES IMPORTED_LOCATION - ${INSTALL_DIR}/lib/static/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) set_target_properties(Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) + add_library(Whispercpp::GGML STATIC IMPORTED) + set_target_properties( + Whispercpp::GGML + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) + add_library(Whispercpp::GGMLBase STATIC IMPORTED) + set_target_properties( + Whispercpp::GGMLBase + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) + add_library(Whispercpp::GGMLCPU STATIC IMPORTED) + set_target_properties( + Whispercpp::GGMLCPU + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) + + if(${ACCELERATION} STREQUAL "vulkan") + add_library(Whispercpp::GGMLVulkan STATIC IMPORTED) + set_target_properties( + Whispercpp::GGMLVulkan + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-vulkan${CMAKE_STATIC_LIBRARY_SUFFIX}) + endif() endif() add_library(Whispercpp INTERFACE) add_dependencies(Whispercpp Whispercpp_Build) -target_link_libraries(Whispercpp INTERFACE Whispercpp::Whisper) +target_link_libraries(Whispercpp INTERFACE Whispercpp::Whisper Whispercpp::GGML Whispercpp::GGMLBase Whispercpp::GGMLCPU) + if(WIN32 AND "${ACCELERATION}" STREQUAL "cpu") target_link_libraries(Whispercpp INTERFACE Whispercpp::OpenBLAS) endif() + +if(WIN32 AND "${ACCELERATION}" STREQUAL "vulkan") + target_link_libraries(Whispercpp INTERFACE Whispercpp::GGMLVulkan) +endif() + +if(WIN32 AND "${ACCELERATION}" STREQUAL "cuda") + target_link_libraries(Whispercpp INTERFACE Whispercpp::GGMLCUDA) +endif() + if(APPLE) target_link_libraries(Whispercpp INTERFACE "-framework Accelerate -framework CoreML -framework Metal") - target_link_libraries(Whispercpp INTERFACE Whispercpp::GGML Whispercpp::CoreML) + target_link_libraries(Whispercpp INTERFACE Whispercpp::CoreML) endif(APPLE) + +if(UNIX AND NOT APPLE AND ${ACCELERATION} STREQUAL "vulkan") + target_link_libraries(Whispercpp INTERFACE Whispercpp::GGMLVulkan) +endif() \ No newline at end of file From 08413e4061021e090e1336e41cb6565a6fe1bd3f Mon Sep 17 00:00:00 2001 From: Roy Shilkrot Date: Mon, 3 Feb 2025 09:12:52 -0500 Subject: [PATCH 02/11] Fix string comparison for ACCELERATION variable in CMake configuration --- cmake/BuildWhispercpp.cmake | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/cmake/BuildWhispercpp.cmake b/cmake/BuildWhispercpp.cmake index 292996c..28bc300 100644 --- a/cmake/BuildWhispercpp.cmake +++ b/cmake/BuildWhispercpp.cmake @@ -75,16 +75,16 @@ elseif(WIN32) set(WHISPER_CPP_URL "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-windows-${ARCH_PREFIX}-${PREBUILT_WHISPERCPP_VERSION}.zip") - if(${ACCELERATION} STREQUAL "cpu") + if("${ACCELERATION}" STREQUAL "cpu") set(WHISPER_CPP_HASH "cb25c675a01f98bc1cd544187945636d9f7fbaffcfc08699d5edbd29be137e0b") add_compile_definitions("LOCALVOCAL_WITH_CPU") - elseif(${ACCELERATION} STREQUAL "cuda") + elseif("${ACCELERATION}" STREQUAL "cuda") set(WHISPER_CPP_HASH "672fd34841436261937d5701bf80945ddb8194f033768bb4d7b3becbdf1f66c0") add_compile_definitions("LOCALVOCAL_WITH_CUDA") - elseif(${ACCELERATION} STREQUAL "hipblas") + elseif("${ACCELERATION}" STREQUAL "hipblas") set(WHISPER_CPP_HASH "3f4f16aa6bc9bb6326e86868603136502baef108a339bc4e42bb51654c935120") add_compile_definitions("LOCALVOCAL_WITH_HIPBLAS") - elseif(${ACCELERATION} STREQUAL "vulkan") + elseif("${ACCELERATION}" STREQUAL "vulkan") set(WHISPER_CPP_HASH "46bbcf96cc20a92b36e47ebfabd6c9d581480f38bce72cee16c16e78d7e8c557") add_compile_definitions("LOCALVOCAL_WITH_VULKAN") else() @@ -142,14 +142,14 @@ elseif(WIN32) set_target_properties(Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${whispercpp_fetch_SOURCE_DIR}/include) - if(${ACCELERATION} STREQUAL "cpu") + if("${ACCELERATION}" STREQUAL "cpu") # add openblas to the link line add_library(Whispercpp::OpenBLAS STATIC IMPORTED) set_target_properties(Whispercpp::OpenBLAS PROPERTIES IMPORTED_LOCATION ${whispercpp_fetch_SOURCE_DIR}/release/lib/libopenblas.dll.a) endif() - if(${ACCELERATION} STREQUAL "cuda") + if("${ACCELERATION}" STREQUAL "cuda") # add cuda to the link line add_library(Whispercpp::GGMLCUDA SHARED IMPORTED) set_target_properties( @@ -162,7 +162,7 @@ elseif(WIN32) ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cuda${CMAKE_STATIC_LIBRARY_SUFFIX}) endif() - if(${ACCELERATION} STREQUAL "vulkan") + if("${ACCELERATION}" STREQUAL "vulkan") # add cuda to the link line add_library(Whispercpp::GGMLVulkan SHARED IMPORTED) set_target_properties( @@ -186,10 +186,10 @@ else() set(WHISPER_CPP_URL "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-linux-x86_64-${ACCELERATION}-Release.tar.gz") - if(${ACCELERATION} STREQUAL "cpu") + if("${ACCELERATION}" STREQUAL "cpu") set(WHISPER_CPP_HASH "b6a30f0e995070145ae10e58a656449fee00dd69c53c49ffef4597b07bcb3c2a") add_compile_definitions("LOCALVOCAL_WITH_CPU") - elseif(${ACCELERATION} STREQUAL "vulkan") + elseif("${ACCELERATION}" STREQUAL "vulkan") set(WHISPER_CPP_HASH "6c5fe9c6a35b5f7f63a968b4fbbc8e05e888cc887aadbb8d82cf7e39da8ec163") add_compile_definitions("LOCALVOCAL_WITH_VULKAN") else() @@ -229,7 +229,7 @@ else() PROPERTIES IMPORTED_LOCATION ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) - if(${ACCELERATION} STREQUAL "vulkan") + if("${ACCELERATION}" STREQUAL "vulkan") add_library(Whispercpp::GGMLVulkan STATIC IMPORTED) set_target_properties( Whispercpp::GGMLVulkan @@ -256,9 +256,9 @@ endif() if(APPLE) target_link_libraries(Whispercpp INTERFACE "-framework Accelerate -framework CoreML -framework Metal") - target_link_libraries(Whispercpp INTERFACE Whispercpp::CoreML) + target_link_libraries(Whispercpp INTERFACE Whispercpp::CoreML Whispercpp::GGMLMetal Whispercpp::GGMLBlas) endif(APPLE) -if(UNIX AND NOT APPLE AND ${ACCELERATION} STREQUAL "vulkan") +if(UNIX AND(NOT APPLE) AND "${ACCELERATION}" STREQUAL "vulkan") target_link_libraries(Whispercpp INTERFACE Whispercpp::GGMLVulkan) endif() \ No newline at end of file From 1390aceb986963cc86794ca153d14daecd534dbf Mon Sep 17 00:00:00 2001 From: Roy Shilkrot Date: Mon, 3 Feb 2025 09:22:06 -0500 Subject: [PATCH 03/11] Enhance CMake and GitHub Actions for acceleration options on Windows and Unix --- .github/workflows/build-project.yaml | 10 +- CMakeLists.txt | 5 +- cmake/BuildWhispercpp.cmake | 159 ++++++++++++++++----------- 3 files changed, 104 insertions(+), 70 deletions(-) diff --git a/.github/workflows/build-project.yaml b/.github/workflows/build-project.yaml index f1b059c..3e54143 100644 --- a/.github/workflows/build-project.yaml +++ b/.github/workflows/build-project.yaml @@ -217,7 +217,7 @@ jobs: target: x86_64 config: ${{ needs.check-event.outputs.config }} acceleration: ${{ matrix.acceleration }} - + - name: Package Plugin 📀 uses: ./.github/actions/package-plugin with: @@ -234,15 +234,15 @@ jobs: - name: Upload Artifacts 📡 uses: actions/upload-artifact@v4 with: - name: ${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-ubuntu-22.04-x86_64-${{ needs.check-event.outputs.commitHash }} - path: ${{ github.workspace }}/release/${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-x86_64*.* + name: ${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-ubuntu-22.04-x86_64-${{ matrix.acceleration }}-${{ needs.check-event.outputs.commitHash }} + path: ${{ github.workspace }}/release/${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-x86_64-${{ matrix.acceleration }}*.* - name: Upload debug symbol artifacts 🪲 uses: actions/upload-artifact@v4 if: ${{ fromJSON(needs.check-event.outputs.package) }} with: - name: ${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-ubuntu-22.04-x86_64-${{ needs.check-event.outputs.commitHash }}-dbgsym - path: ${{ github.workspace }}/release/${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-x86_64*-dbgsym.ddeb + name: ${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-ubuntu-22.04-x86_64-${{ matrix.acceleration }}-${{ needs.check-event.outputs.commitHash }}-dbgsym + path: ${{ github.workspace }}/release/${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-x86_64-${{ matrix.acceleration }}*-dbgsym.ddeb windows-build: name: Build for Windows 🪟 diff --git a/CMakeLists.txt b/CMakeLists.txt index 4ccb91d..af431b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,17 +48,19 @@ else() target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE libcurl) endif() -if(WIN32) +if(WIN32 OR (UNIX AND NOT APPLE)) if(DEFINED ENV{ACCELERATION}) set(ACCELERATION $ENV{ACCELERATION} CACHE STRING "Acceleration to use" FORCE) endif() + if(NOT DEFINED ACCELERATION) set(ACCELERATION "cpu" CACHE STRING "Acceleration to use") endif() + set_property(CACHE ACCELERATION PROPERTY STRINGS "cpu" "hipblas" "cuda" "vulkan") endif() @@ -97,6 +99,7 @@ else() endif() include(cmake/BuildICU.cmake) + # Add ICU to the target target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ICU) target_include_directories(${CMAKE_PROJECT_NAME} SYSTEM PUBLIC ${ICU_INCLUDE_DIR}) diff --git a/cmake/BuildWhispercpp.cmake b/cmake/BuildWhispercpp.cmake index 28bc300..80fb9df 100644 --- a/cmake/BuildWhispercpp.cmake +++ b/cmake/BuildWhispercpp.cmake @@ -3,7 +3,7 @@ include(FetchContent) set(PREBUILT_WHISPERCPP_VERSION "0.0.8") set(PREBUILT_WHISPERCPP_URL_BASE - "https://github.com/locaal-ai/occ-ai-dep-whispercpp/releases/download/${PREBUILT_WHISPERCPP_VERSION}") + "https://github.com/locaal-ai/occ-ai-dep-whispercpp/releases/download/${PREBUILT_WHISPERCPP_VERSION}") if(APPLE) # check the "MACOS_ARCH" env var to figure out if this is x86 or arm64 @@ -14,11 +14,11 @@ if(APPLE) else() message( FATAL_ERROR - "The MACOS_ARCH environment variable is not set to a valid value. Please set it to either `x86_64` or `arm64`") + "The MACOS_ARCH environment variable is not set to a valid value. Please set it to either `x86_64` or `arm64`") endif() set(WHISPER_CPP_URL - "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-macos-$ENV{MACOS_ARCH}-${PREBUILT_WHISPERCPP_VERSION}.tar.gz") + "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-macos-$ENV{MACOS_ARCH}-${PREBUILT_WHISPERCPP_VERSION}.tar.gz") FetchContent_Declare( whispercpp_fetch @@ -29,42 +29,48 @@ if(APPLE) add_library(Whispercpp::Whisper STATIC IMPORTED) set_target_properties( Whispercpp::Whisper - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) set_target_properties(Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - ${whispercpp_fetch_SOURCE_DIR}/release/include) + ${whispercpp_fetch_SOURCE_DIR}/release/include) add_library(Whispercpp::GGML STATIC IMPORTED) set_target_properties( Whispercpp::GGML - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLBase STATIC IMPORTED) set_target_properties( Whispercpp::GGMLBase - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLCPU STATIC IMPORTED) set_target_properties( Whispercpp::GGMLCPU - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLMetal STATIC IMPORTED) set_target_properties( Whispercpp::GGMLMetal - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-metal${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-metal${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLBlas STATIC IMPORTED) set_target_properties( Whispercpp::GGMLBlas - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-blas${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-blas${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::CoreML STATIC IMPORTED) set_target_properties( Whispercpp::CoreML PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper.coreml${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper.coreml${CMAKE_STATIC_LIBRARY_SUFFIX}) elseif(WIN32) if(NOT DEFINED ACCELERATION) @@ -73,7 +79,7 @@ elseif(WIN32) set(ARCH_PREFIX ${ACCELERATION}) set(WHISPER_CPP_URL - "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-windows-${ARCH_PREFIX}-${PREBUILT_WHISPERCPP_VERSION}.zip") + "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-windows-${ARCH_PREFIX}-${PREBUILT_WHISPERCPP_VERSION}.zip") if("${ACCELERATION}" STREQUAL "cpu") set(WHISPER_CPP_HASH "cb25c675a01f98bc1cd544187945636d9f7fbaffcfc08699d5edbd29be137e0b") @@ -90,7 +96,7 @@ elseif(WIN32) else() message( FATAL_ERROR - "The ACCELERATION environment variable is not set to a valid value. Please set it to either `cpu` or `cuda` or `vulkan` or `hipblas`" + "The ACCELERATION environment variable is not set to a valid value. Please set it to either `cpu` or `cuda` or `vulkan` or `hipblas`" ) endif() @@ -102,51 +108,61 @@ elseif(WIN32) FetchContent_MakeAvailable(whispercpp_fetch) add_library(Whispercpp::Whisper SHARED IMPORTED) - set_target_properties( Whispercpp::Whisper - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}whisper${CMAKE_SHARED_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}whisper${CMAKE_SHARED_LIBRARY_SUFFIX}) set_target_properties( Whispercpp::Whisper - PROPERTIES IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) + add_library(Whispercpp::GGML SHARED IMPORTED) set_target_properties( Whispercpp::GGML - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml${CMAKE_SHARED_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml${CMAKE_SHARED_LIBRARY_SUFFIX}) set_target_properties( Whispercpp::GGML - PROPERTIES IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) + add_library(Whispercpp::GGMLBase SHARED IMPORTED) set_target_properties( Whispercpp::GGMLBase - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-base${CMAKE_SHARED_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-base${CMAKE_SHARED_LIBRARY_SUFFIX}) set_target_properties( Whispercpp::GGMLBase - PROPERTIES IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) + add_library(Whispercpp::GGMLCPU SHARED IMPORTED) set_target_properties( Whispercpp::GGMLCPU - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-cpu${CMAKE_SHARED_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-cpu${CMAKE_SHARED_LIBRARY_SUFFIX}) set_target_properties( Whispercpp::GGMLCPU - PROPERTIES IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) set_target_properties(Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - ${whispercpp_fetch_SOURCE_DIR}/include) + ${whispercpp_fetch_SOURCE_DIR}/include) if("${ACCELERATION}" STREQUAL "cpu") # add openblas to the link line add_library(Whispercpp::OpenBLAS STATIC IMPORTED) set_target_properties(Whispercpp::OpenBLAS PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/libopenblas.dll.a) + ${whispercpp_fetch_SOURCE_DIR}/release/lib/libopenblas.dll.a) endif() if("${ACCELERATION}" STREQUAL "cuda") @@ -154,12 +170,16 @@ elseif(WIN32) add_library(Whispercpp::GGMLCUDA SHARED IMPORTED) set_target_properties( Whispercpp::GGMLCUDA - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-cuda${CMAKE_SHARED_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-cuda${CMAKE_SHARED_LIBRARY_SUFFIX} + ) set_target_properties( Whispercpp::GGMLCUDA - PROPERTIES IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cuda${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cuda${CMAKE_STATIC_LIBRARY_SUFFIX} + ) endif() if("${ACCELERATION}" STREQUAL "vulkan") @@ -167,12 +187,16 @@ elseif(WIN32) add_library(Whispercpp::GGMLVulkan SHARED IMPORTED) set_target_properties( Whispercpp::GGMLVulkan - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-vulkan${CMAKE_SHARED_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-vulkan${CMAKE_SHARED_LIBRARY_SUFFIX} + ) set_target_properties( Whispercpp::GGMLVulkan - PROPERTIES IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-vulkan${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-vulkan${CMAKE_STATIC_LIBRARY_SUFFIX} + ) endif() # glob all dlls in the bin directory and install them @@ -183,8 +207,7 @@ else() message(FATAL_ERROR "ACCELERATION is not set. Please set it to either `cpu`, or `vulkan`") endif() - set(WHISPER_CPP_URL - "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-linux-x86_64-${ACCELERATION}-Release.tar.gz") + set(WHISPER_CPP_URL "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-linux-x86_64-${ACCELERATION}-Release.tar.gz") if("${ACCELERATION}" STREQUAL "cpu") set(WHISPER_CPP_HASH "b6a30f0e995070145ae10e58a656449fee00dd69c53c49ffef4597b07bcb3c2a") @@ -195,8 +218,7 @@ else() else() message( FATAL_ERROR - "The ACCELERATION environment variable is not set to a valid value. Please set it to either `cpu` or `vulkan`" - ) + "The ACCELERATION environment variable is not set to a valid value. Please set it to either `cpu` or `vulkan`") endif() FetchContent_Declare( @@ -210,37 +232,44 @@ else() add_library(Whispercpp::Whisper STATIC IMPORTED) set_target_properties( Whispercpp::Whisper - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) set_target_properties(Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) add_library(Whispercpp::GGML STATIC IMPORTED) set_target_properties( Whispercpp::GGML - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLBase STATIC IMPORTED) set_target_properties( Whispercpp::GGMLBase - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLCPU STATIC IMPORTED) set_target_properties( Whispercpp::GGMLCPU - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) if("${ACCELERATION}" STREQUAL "vulkan") add_library(Whispercpp::GGMLVulkan STATIC IMPORTED) set_target_properties( Whispercpp::GGMLVulkan - PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-vulkan${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-vulkan${CMAKE_STATIC_LIBRARY_SUFFIX} + ) endif() endif() add_library(Whispercpp INTERFACE) add_dependencies(Whispercpp Whispercpp_Build) -target_link_libraries(Whispercpp INTERFACE Whispercpp::Whisper Whispercpp::GGML Whispercpp::GGMLBase Whispercpp::GGMLCPU) +target_link_libraries(Whispercpp INTERFACE Whispercpp::Whisper Whispercpp::GGML Whispercpp::GGMLBase + Whispercpp::GGMLCPU) if(WIN32 AND "${ACCELERATION}" STREQUAL "cpu") target_link_libraries(Whispercpp INTERFACE Whispercpp::OpenBLAS) @@ -259,6 +288,8 @@ if(APPLE) target_link_libraries(Whispercpp INTERFACE Whispercpp::CoreML Whispercpp::GGMLMetal Whispercpp::GGMLBlas) endif(APPLE) -if(UNIX AND(NOT APPLE) AND "${ACCELERATION}" STREQUAL "vulkan") +if(UNIX + AND (NOT APPLE) + AND "${ACCELERATION}" STREQUAL "vulkan") target_link_libraries(Whispercpp INTERFACE Whispercpp::GGMLVulkan) -endif() \ No newline at end of file +endif() From 647d01a0923f91a60fd0fd3e7553770f41e78db1 Mon Sep 17 00:00:00 2001 From: Roy Shilkrot Date: Mon, 3 Feb 2025 09:33:31 -0500 Subject: [PATCH 04/11] Add status messages for Whispercpp URL and source directory in CMake --- cmake/BuildWhispercpp.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmake/BuildWhispercpp.cmake b/cmake/BuildWhispercpp.cmake index 80fb9df..bf2c2a5 100644 --- a/cmake/BuildWhispercpp.cmake +++ b/cmake/BuildWhispercpp.cmake @@ -228,6 +228,9 @@ else() DOWNLOAD_EXTRACT_TIMESTAMP TRUE) FetchContent_MakeAvailable(whispercpp_fetch) + message(STATUS "Whispercpp URL: ${WHISPER_CPP_URL}") + message(STATUS "Whispercpp source dir: ${whispercpp_fetch_SOURCE_DIR}") + # add the static Whisper library to the link line add_library(Whispercpp::Whisper STATIC IMPORTED) set_target_properties( From 85b44da6659fc79bd76c3157448ae85afc74e3f8 Mon Sep 17 00:00:00 2001 From: Roy Shilkrot Date: Mon, 3 Feb 2025 09:46:27 -0500 Subject: [PATCH 05/11] fix paths --- cmake/BuildWhispercpp.cmake | 120 ++++++++++++++++++------------------ 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/cmake/BuildWhispercpp.cmake b/cmake/BuildWhispercpp.cmake index bf2c2a5..dc854ee 100644 --- a/cmake/BuildWhispercpp.cmake +++ b/cmake/BuildWhispercpp.cmake @@ -3,7 +3,7 @@ include(FetchContent) set(PREBUILT_WHISPERCPP_VERSION "0.0.8") set(PREBUILT_WHISPERCPP_URL_BASE - "https://github.com/locaal-ai/occ-ai-dep-whispercpp/releases/download/${PREBUILT_WHISPERCPP_VERSION}") + "https://github.com/locaal-ai/occ-ai-dep-whispercpps/download/${PREBUILT_WHISPERCPP_VERSION}") if(APPLE) # check the "MACOS_ARCH" env var to figure out if this is x86 or arm64 @@ -14,11 +14,11 @@ if(APPLE) else() message( FATAL_ERROR - "The MACOS_ARCH environment variable is not set to a valid value. Please set it to either `x86_64` or `arm64`") + "The MACOS_ARCH environment variable is not set to a valid value. Please set it to either `x86_64` or `arm64`") endif() set(WHISPER_CPP_URL - "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-macos-$ENV{MACOS_ARCH}-${PREBUILT_WHISPERCPP_VERSION}.tar.gz") + "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-macos-$ENV{MACOS_ARCH}-${PREBUILT_WHISPERCPP_VERSION}.tar.gz") FetchContent_Declare( whispercpp_fetch @@ -30,47 +30,47 @@ if(APPLE) set_target_properties( Whispercpp::Whisper PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) set_target_properties(Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - ${whispercpp_fetch_SOURCE_DIR}/release/include) + ${whispercpp_fetch_SOURCE_DIR}/include) add_library(Whispercpp::GGML STATIC IMPORTED) set_target_properties( Whispercpp::GGML PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLBase STATIC IMPORTED) set_target_properties( Whispercpp::GGMLBase PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLCPU STATIC IMPORTED) set_target_properties( Whispercpp::GGMLCPU PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLMetal STATIC IMPORTED) set_target_properties( Whispercpp::GGMLMetal PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-metal${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-metal${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLBlas STATIC IMPORTED) set_target_properties( Whispercpp::GGMLBlas PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-blas${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-blas${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::CoreML STATIC IMPORTED) set_target_properties( Whispercpp::CoreML PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper.coreml${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper.coreml${CMAKE_STATIC_LIBRARY_SUFFIX}) elseif(WIN32) if(NOT DEFINED ACCELERATION) @@ -79,7 +79,7 @@ elseif(WIN32) set(ARCH_PREFIX ${ACCELERATION}) set(WHISPER_CPP_URL - "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-windows-${ARCH_PREFIX}-${PREBUILT_WHISPERCPP_VERSION}.zip") + "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-windows-${ARCH_PREFIX}-${PREBUILT_WHISPERCPP_VERSION}.zip") if("${ACCELERATION}" STREQUAL "cpu") set(WHISPER_CPP_HASH "cb25c675a01f98bc1cd544187945636d9f7fbaffcfc08699d5edbd29be137e0b") @@ -96,7 +96,7 @@ elseif(WIN32) else() message( FATAL_ERROR - "The ACCELERATION environment variable is not set to a valid value. Please set it to either `cpu` or `cuda` or `vulkan` or `hipblas`" + "The ACCELERATION environment variable is not set to a valid value. Please set it to either `cpu` or `cuda` or `vulkan` or `hipblas`" ) endif() @@ -111,58 +111,58 @@ elseif(WIN32) set_target_properties( Whispercpp::Whisper PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}whisper${CMAKE_SHARED_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}whisper${CMAKE_SHARED_LIBRARY_SUFFIX}) set_target_properties( Whispercpp::Whisper PROPERTIES - IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGML SHARED IMPORTED) set_target_properties( Whispercpp::GGML PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml${CMAKE_SHARED_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml${CMAKE_SHARED_LIBRARY_SUFFIX}) set_target_properties( Whispercpp::GGML PROPERTIES - IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLBase SHARED IMPORTED) set_target_properties( Whispercpp::GGMLBase PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-base${CMAKE_SHARED_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-base${CMAKE_SHARED_LIBRARY_SUFFIX}) set_target_properties( Whispercpp::GGMLBase PROPERTIES - IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLCPU SHARED IMPORTED) set_target_properties( Whispercpp::GGMLCPU PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-cpu${CMAKE_SHARED_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-cpu${CMAKE_SHARED_LIBRARY_SUFFIX}) set_target_properties( Whispercpp::GGMLCPU PROPERTIES - IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) set_target_properties(Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - ${whispercpp_fetch_SOURCE_DIR}/include) + ${whispercpp_fetch_SOURCE_DIR}/include) if("${ACCELERATION}" STREQUAL "cpu") # add openblas to the link line add_library(Whispercpp::OpenBLAS STATIC IMPORTED) set_target_properties(Whispercpp::OpenBLAS PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/libopenblas.dll.a) + ${whispercpp_fetch_SOURCE_DIR}/lib/libopenblas.dll.a) endif() if("${ACCELERATION}" STREQUAL "cuda") @@ -171,14 +171,14 @@ elseif(WIN32) set_target_properties( Whispercpp::GGMLCUDA PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-cuda${CMAKE_SHARED_LIBRARY_SUFFIX} + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-cuda${CMAKE_SHARED_LIBRARY_SUFFIX} ) set_target_properties( Whispercpp::GGMLCUDA PROPERTIES - IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cuda${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cuda${CMAKE_STATIC_LIBRARY_SUFFIX} ) endif() @@ -188,14 +188,14 @@ elseif(WIN32) set_target_properties( Whispercpp::GGMLVulkan PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-vulkan${CMAKE_SHARED_LIBRARY_SUFFIX} + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-vulkan${CMAKE_SHARED_LIBRARY_SUFFIX} ) set_target_properties( Whispercpp::GGMLVulkan PROPERTIES - IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-vulkan${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-vulkan${CMAKE_STATIC_LIBRARY_SUFFIX} ) endif() @@ -218,7 +218,7 @@ else() else() message( FATAL_ERROR - "The ACCELERATION environment variable is not set to a valid value. Please set it to either `cpu` or `vulkan`") + "The ACCELERATION environment variable is not set to a valid value. Please set it to either `cpu` or `vulkan`") endif() FetchContent_Declare( @@ -236,35 +236,35 @@ else() set_target_properties( Whispercpp::Whisper PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) set_target_properties(Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) add_library(Whispercpp::GGML STATIC IMPORTED) set_target_properties( Whispercpp::GGML PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLBase STATIC IMPORTED) set_target_properties( Whispercpp::GGMLBase PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLCPU STATIC IMPORTED) set_target_properties( Whispercpp::GGMLCPU PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) if("${ACCELERATION}" STREQUAL "vulkan") add_library(Whispercpp::GGMLVulkan STATIC IMPORTED) set_target_properties( Whispercpp::GGMLVulkan PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/release/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-vulkan${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-vulkan${CMAKE_STATIC_LIBRARY_SUFFIX} ) endif() endif() @@ -272,7 +272,7 @@ endif() add_library(Whispercpp INTERFACE) add_dependencies(Whispercpp Whispercpp_Build) target_link_libraries(Whispercpp INTERFACE Whispercpp::Whisper Whispercpp::GGML Whispercpp::GGMLBase - Whispercpp::GGMLCPU) + Whispercpp::GGMLCPU) if(WIN32 AND "${ACCELERATION}" STREQUAL "cpu") target_link_libraries(Whispercpp INTERFACE Whispercpp::OpenBLAS) @@ -292,7 +292,7 @@ if(APPLE) endif(APPLE) if(UNIX - AND (NOT APPLE) - AND "${ACCELERATION}" STREQUAL "vulkan") + AND(NOT APPLE) + AND "${ACCELERATION}" STREQUAL "vulkan") target_link_libraries(Whispercpp INTERFACE Whispercpp::GGMLVulkan) endif() From eb001722dcf1727deb7d907de1221622ef2c6fc1 Mon Sep 17 00:00:00 2001 From: Roy Shilkrot Date: Mon, 3 Feb 2025 09:56:13 -0500 Subject: [PATCH 06/11] Update CMake configuration for improved build performance --- cmake/BuildWhispercpp.cmake | 144 +++++++++++++++--------------------- 1 file changed, 61 insertions(+), 83 deletions(-) diff --git a/cmake/BuildWhispercpp.cmake b/cmake/BuildWhispercpp.cmake index dc854ee..10a3a52 100644 --- a/cmake/BuildWhispercpp.cmake +++ b/cmake/BuildWhispercpp.cmake @@ -3,7 +3,7 @@ include(FetchContent) set(PREBUILT_WHISPERCPP_VERSION "0.0.8") set(PREBUILT_WHISPERCPP_URL_BASE - "https://github.com/locaal-ai/occ-ai-dep-whispercpps/download/${PREBUILT_WHISPERCPP_VERSION}") + "https://github.com/locaal-ai/occ-ai-dep-whispercpp/releases/download/${PREBUILT_WHISPERCPP_VERSION}") if(APPLE) # check the "MACOS_ARCH" env var to figure out if this is x86 or arm64 @@ -14,11 +14,11 @@ if(APPLE) else() message( FATAL_ERROR - "The MACOS_ARCH environment variable is not set to a valid value. Please set it to either `x86_64` or `arm64`") + "The MACOS_ARCH environment variable is not set to a valid value. Please set it to either `x86_64` or `arm64`") endif() set(WHISPER_CPP_URL - "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-macos-$ENV{MACOS_ARCH}-${PREBUILT_WHISPERCPP_VERSION}.tar.gz") + "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-macos-$ENV{MACOS_ARCH}-${PREBUILT_WHISPERCPP_VERSION}.tar.gz") FetchContent_Declare( whispercpp_fetch @@ -29,48 +29,43 @@ if(APPLE) add_library(Whispercpp::Whisper STATIC IMPORTED) set_target_properties( Whispercpp::Whisper - PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) set_target_properties(Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - ${whispercpp_fetch_SOURCE_DIR}/include) + ${whispercpp_fetch_SOURCE_DIR}/include) add_library(Whispercpp::GGML STATIC IMPORTED) set_target_properties( Whispercpp::GGML - PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLBase STATIC IMPORTED) set_target_properties( Whispercpp::GGMLBase - PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLCPU STATIC IMPORTED) set_target_properties( Whispercpp::GGMLCPU - PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLMetal STATIC IMPORTED) set_target_properties( Whispercpp::GGMLMetal - PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-metal${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-metal${CMAKE_STATIC_LIBRARY_SUFFIX} + ) add_library(Whispercpp::GGMLBlas STATIC IMPORTED) set_target_properties( Whispercpp::GGMLBlas - PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-blas${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-blas${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::CoreML STATIC IMPORTED) set_target_properties( Whispercpp::CoreML PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper.coreml${CMAKE_STATIC_LIBRARY_SUFFIX}) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper.coreml${CMAKE_STATIC_LIBRARY_SUFFIX}) elseif(WIN32) if(NOT DEFINED ACCELERATION) @@ -79,7 +74,7 @@ elseif(WIN32) set(ARCH_PREFIX ${ACCELERATION}) set(WHISPER_CPP_URL - "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-windows-${ARCH_PREFIX}-${PREBUILT_WHISPERCPP_VERSION}.zip") + "${PREBUILT_WHISPERCPP_URL_BASE}/whispercpp-windows-${ARCH_PREFIX}-${PREBUILT_WHISPERCPP_VERSION}.zip") if("${ACCELERATION}" STREQUAL "cpu") set(WHISPER_CPP_HASH "cb25c675a01f98bc1cd544187945636d9f7fbaffcfc08699d5edbd29be137e0b") @@ -96,7 +91,7 @@ elseif(WIN32) else() message( FATAL_ERROR - "The ACCELERATION environment variable is not set to a valid value. Please set it to either `cpu` or `cuda` or `vulkan` or `hipblas`" + "The ACCELERATION environment variable is not set to a valid value. Please set it to either `cpu` or `cuda` or `vulkan` or `hipblas`" ) endif() @@ -110,59 +105,51 @@ elseif(WIN32) add_library(Whispercpp::Whisper SHARED IMPORTED) set_target_properties( Whispercpp::Whisper - PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}whisper${CMAKE_SHARED_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}whisper${CMAKE_SHARED_LIBRARY_SUFFIX}) set_target_properties( Whispercpp::Whisper - PROPERTIES - IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGML SHARED IMPORTED) set_target_properties( Whispercpp::GGML - PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml${CMAKE_SHARED_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml${CMAKE_SHARED_LIBRARY_SUFFIX}) set_target_properties( Whispercpp::GGML - PROPERTIES - IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLBase SHARED IMPORTED) set_target_properties( Whispercpp::GGMLBase - PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-base${CMAKE_SHARED_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-base${CMAKE_SHARED_LIBRARY_SUFFIX}) set_target_properties( Whispercpp::GGMLBase - PROPERTIES - IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLCPU SHARED IMPORTED) set_target_properties( Whispercpp::GGMLCPU - PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-cpu${CMAKE_SHARED_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-cpu${CMAKE_SHARED_LIBRARY_SUFFIX}) set_target_properties( Whispercpp::GGMLCPU - PROPERTIES - IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) set_target_properties(Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - ${whispercpp_fetch_SOURCE_DIR}/include) + ${whispercpp_fetch_SOURCE_DIR}/include) if("${ACCELERATION}" STREQUAL "cpu") # add openblas to the link line add_library(Whispercpp::OpenBLAS STATIC IMPORTED) set_target_properties(Whispercpp::OpenBLAS PROPERTIES IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/libopenblas.dll.a) + ${whispercpp_fetch_SOURCE_DIR}/lib/libopenblas.dll.a) endif() if("${ACCELERATION}" STREQUAL "cuda") @@ -171,15 +158,13 @@ elseif(WIN32) set_target_properties( Whispercpp::GGMLCUDA PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-cuda${CMAKE_SHARED_LIBRARY_SUFFIX} - ) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-cuda${CMAKE_SHARED_LIBRARY_SUFFIX}) set_target_properties( Whispercpp::GGMLCUDA PROPERTIES - IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cuda${CMAKE_STATIC_LIBRARY_SUFFIX} - ) + IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cuda${CMAKE_STATIC_LIBRARY_SUFFIX}) endif() if("${ACCELERATION}" STREQUAL "vulkan") @@ -188,15 +173,13 @@ elseif(WIN32) set_target_properties( Whispercpp::GGMLVulkan PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-vulkan${CMAKE_SHARED_LIBRARY_SUFFIX} - ) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}ggml-vulkan${CMAKE_SHARED_LIBRARY_SUFFIX}) set_target_properties( Whispercpp::GGMLVulkan PROPERTIES - IMPORTED_IMPLIB - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-vulkan${CMAKE_STATIC_LIBRARY_SUFFIX} - ) + IMPORTED_IMPLIB + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-vulkan${CMAKE_STATIC_LIBRARY_SUFFIX}) endif() # glob all dlls in the bin directory and install them @@ -218,7 +201,7 @@ else() else() message( FATAL_ERROR - "The ACCELERATION environment variable is not set to a valid value. Please set it to either `cpu` or `vulkan`") + "The ACCELERATION environment variable is not set to a valid value. Please set it to either `cpu` or `vulkan`") endif() FetchContent_Declare( @@ -235,44 +218,39 @@ else() add_library(Whispercpp::Whisper STATIC IMPORTED) set_target_properties( Whispercpp::Whisper - PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) set_target_properties(Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) add_library(Whispercpp::GGML STATIC IMPORTED) set_target_properties( Whispercpp::GGML - PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLBase STATIC IMPORTED) set_target_properties( Whispercpp::GGMLBase - PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-base${CMAKE_STATIC_LIBRARY_SUFFIX}) add_library(Whispercpp::GGMLCPU STATIC IMPORTED) set_target_properties( Whispercpp::GGMLCPU - PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) + PROPERTIES IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-cpu${CMAKE_STATIC_LIBRARY_SUFFIX}) if("${ACCELERATION}" STREQUAL "vulkan") add_library(Whispercpp::GGMLVulkan STATIC IMPORTED) set_target_properties( Whispercpp::GGMLVulkan PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-vulkan${CMAKE_STATIC_LIBRARY_SUFFIX} - ) + IMPORTED_LOCATION + ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-vulkan${CMAKE_STATIC_LIBRARY_SUFFIX}) endif() endif() add_library(Whispercpp INTERFACE) add_dependencies(Whispercpp Whispercpp_Build) target_link_libraries(Whispercpp INTERFACE Whispercpp::Whisper Whispercpp::GGML Whispercpp::GGMLBase - Whispercpp::GGMLCPU) + Whispercpp::GGMLCPU) if(WIN32 AND "${ACCELERATION}" STREQUAL "cpu") target_link_libraries(Whispercpp INTERFACE Whispercpp::OpenBLAS) @@ -292,7 +270,7 @@ if(APPLE) endif(APPLE) if(UNIX - AND(NOT APPLE) - AND "${ACCELERATION}" STREQUAL "vulkan") + AND (NOT APPLE) + AND "${ACCELERATION}" STREQUAL "vulkan") target_link_libraries(Whispercpp INTERFACE Whispercpp::GGMLVulkan) endif() From ffd1fc5205f19e80ec9fd523aff53ed7229c7ec2 Mon Sep 17 00:00:00 2001 From: Roy Shilkrot Date: Mon, 3 Feb 2025 10:12:18 -0500 Subject: [PATCH 07/11] Remove suppress_non_speech_tokens parameter from whisper settings and logging --- src/tests/localvocal-offline-test.cpp | 1 - src/whisper-utils/whisper-params.cpp | 6 ------ 2 files changed, 7 deletions(-) diff --git a/src/tests/localvocal-offline-test.cpp b/src/tests/localvocal-offline-test.cpp index c4a9042..b1e1bea 100644 --- a/src/tests/localvocal-offline-test.cpp +++ b/src/tests/localvocal-offline-test.cpp @@ -194,7 +194,6 @@ create_context(int sample_rate, int channels, const std::string &whisper_model_p gf->whisper_params.split_on_word = false; gf->whisper_params.max_tokens = 0; gf->whisper_params.suppress_blank = true; - gf->whisper_params.suppress_non_speech_tokens = true; gf->whisper_params.temperature = 0.0; gf->whisper_params.max_initial_ts = 1.0; gf->whisper_params.length_penalty = -1; diff --git a/src/whisper-utils/whisper-params.cpp b/src/whisper-utils/whisper-params.cpp index 883e2af..9f9f35a 100644 --- a/src/whisper-utils/whisper-params.cpp +++ b/src/whisper-utils/whisper-params.cpp @@ -37,8 +37,6 @@ void whisper_params_pretty_print(whisper_full_params ¶ms) obs_log(LOG_INFO, "language: %s", params.language); obs_log(LOG_INFO, "detect_language: %s", params.detect_language ? "true" : "false"); obs_log(LOG_INFO, "suppress_blank: %s", params.suppress_blank ? "true" : "false"); - obs_log(LOG_INFO, "suppress_non_speech_tokens: %s", - params.suppress_non_speech_tokens ? "true" : "false"); obs_log(LOG_INFO, "temperature: %f", params.temperature); obs_log(LOG_INFO, "max_initial_ts: %f", params.max_initial_ts); obs_log(LOG_INFO, "length_penalty: %f", params.length_penalty); @@ -84,7 +82,6 @@ void apply_whisper_params_defaults_on_settings(obs_data_t *s) // obs_data_set_default_string(s, "language", whisper_params_tmp.language); obs_data_set_default_bool(s, "detect_language", whisper_params_tmp.detect_language); obs_data_set_default_bool(s, "suppress_blank", false); - obs_data_set_default_bool(s, "suppress_non_speech_tokens", false); obs_data_set_default_double(s, "temperature", whisper_params_tmp.temperature); obs_data_set_default_double(s, "max_initial_ts", whisper_params_tmp.max_initial_ts); obs_data_set_default_double(s, "length_penalty", whisper_params_tmp.length_penalty); @@ -129,8 +126,6 @@ void apply_whisper_params_from_settings(whisper_full_params ¶ms, obs_data_t // params.language = obs_data_get_string(settings, "language"); params.detect_language = obs_data_get_bool(settings, "detect_language"); params.suppress_blank = obs_data_get_bool(settings, "suppress_blank"); - params.suppress_non_speech_tokens = - obs_data_get_bool(settings, "suppress_non_speech_tokens"); params.temperature = (float)obs_data_get_double(settings, "temperature"); params.max_initial_ts = (float)obs_data_get_double(settings, "max_initial_ts"); params.length_penalty = (float)obs_data_get_double(settings, "length_penalty"); @@ -177,7 +172,6 @@ void add_whisper_params_group_properties(obs_properties_t *ppts) // obs_properties_add_text(g, "language", MT_("language"), OBS_TEXT_DEFAULT); obs_properties_add_bool(g, "detect_language", MT_("detect_language")); obs_properties_add_bool(g, "suppress_blank", MT_("suppress_blank")); - obs_properties_add_bool(g, "suppress_non_speech_tokens", MT_("suppress_non_speech_tokens")); obs_properties_add_float(g, "temperature", MT_("temperature"), 0, 1, 0.05); obs_properties_add_float(g, "max_initial_ts", MT_("max_initial_ts"), 0, 100, 1); obs_properties_add_float(g, "length_penalty", MT_("length_penalty"), 0, 1, 0.05); From 0002d40708206a864eb1a81351d3873bac1aa1a3 Mon Sep 17 00:00:00 2001 From: Roy Shilkrot Date: Mon, 3 Feb 2025 10:12:52 -0500 Subject: [PATCH 08/11] Revert "Remove suppress_non_speech_tokens parameter from whisper settings and logging" This reverts commit ffd1fc5205f19e80ec9fd523aff53ed7229c7ec2. --- src/tests/localvocal-offline-test.cpp | 1 + src/whisper-utils/whisper-params.cpp | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/src/tests/localvocal-offline-test.cpp b/src/tests/localvocal-offline-test.cpp index b1e1bea..c4a9042 100644 --- a/src/tests/localvocal-offline-test.cpp +++ b/src/tests/localvocal-offline-test.cpp @@ -194,6 +194,7 @@ create_context(int sample_rate, int channels, const std::string &whisper_model_p gf->whisper_params.split_on_word = false; gf->whisper_params.max_tokens = 0; gf->whisper_params.suppress_blank = true; + gf->whisper_params.suppress_non_speech_tokens = true; gf->whisper_params.temperature = 0.0; gf->whisper_params.max_initial_ts = 1.0; gf->whisper_params.length_penalty = -1; diff --git a/src/whisper-utils/whisper-params.cpp b/src/whisper-utils/whisper-params.cpp index 9f9f35a..883e2af 100644 --- a/src/whisper-utils/whisper-params.cpp +++ b/src/whisper-utils/whisper-params.cpp @@ -37,6 +37,8 @@ void whisper_params_pretty_print(whisper_full_params ¶ms) obs_log(LOG_INFO, "language: %s", params.language); obs_log(LOG_INFO, "detect_language: %s", params.detect_language ? "true" : "false"); obs_log(LOG_INFO, "suppress_blank: %s", params.suppress_blank ? "true" : "false"); + obs_log(LOG_INFO, "suppress_non_speech_tokens: %s", + params.suppress_non_speech_tokens ? "true" : "false"); obs_log(LOG_INFO, "temperature: %f", params.temperature); obs_log(LOG_INFO, "max_initial_ts: %f", params.max_initial_ts); obs_log(LOG_INFO, "length_penalty: %f", params.length_penalty); @@ -82,6 +84,7 @@ void apply_whisper_params_defaults_on_settings(obs_data_t *s) // obs_data_set_default_string(s, "language", whisper_params_tmp.language); obs_data_set_default_bool(s, "detect_language", whisper_params_tmp.detect_language); obs_data_set_default_bool(s, "suppress_blank", false); + obs_data_set_default_bool(s, "suppress_non_speech_tokens", false); obs_data_set_default_double(s, "temperature", whisper_params_tmp.temperature); obs_data_set_default_double(s, "max_initial_ts", whisper_params_tmp.max_initial_ts); obs_data_set_default_double(s, "length_penalty", whisper_params_tmp.length_penalty); @@ -126,6 +129,8 @@ void apply_whisper_params_from_settings(whisper_full_params ¶ms, obs_data_t // params.language = obs_data_get_string(settings, "language"); params.detect_language = obs_data_get_bool(settings, "detect_language"); params.suppress_blank = obs_data_get_bool(settings, "suppress_blank"); + params.suppress_non_speech_tokens = + obs_data_get_bool(settings, "suppress_non_speech_tokens"); params.temperature = (float)obs_data_get_double(settings, "temperature"); params.max_initial_ts = (float)obs_data_get_double(settings, "max_initial_ts"); params.length_penalty = (float)obs_data_get_double(settings, "length_penalty"); @@ -172,6 +177,7 @@ void add_whisper_params_group_properties(obs_properties_t *ppts) // obs_properties_add_text(g, "language", MT_("language"), OBS_TEXT_DEFAULT); obs_properties_add_bool(g, "detect_language", MT_("detect_language")); obs_properties_add_bool(g, "suppress_blank", MT_("suppress_blank")); + obs_properties_add_bool(g, "suppress_non_speech_tokens", MT_("suppress_non_speech_tokens")); obs_properties_add_float(g, "temperature", MT_("temperature"), 0, 1, 0.05); obs_properties_add_float(g, "max_initial_ts", MT_("max_initial_ts"), 0, 100, 1); obs_properties_add_float(g, "length_penalty", MT_("length_penalty"), 0, 1, 0.05); From 577e014ed1c0be6a250cf18ca281651a26c429f7 Mon Sep 17 00:00:00 2001 From: Roy Shilkrot Date: Mon, 3 Feb 2025 10:18:03 -0500 Subject: [PATCH 09/11] Rename suppress_non_speech_tokens to suppress_nst in localization files and related code --- data/locale/ar-SA.ini | 2 +- data/locale/de-DE.ini | 2 +- data/locale/en-US.ini | 2 +- data/locale/es-ES.ini | 2 +- data/locale/fr-FR.ini | 2 +- data/locale/hi-IN.ini | 2 +- data/locale/ja-JP.ini | 2 +- data/locale/ko-KR.ini | 2 +- data/locale/pl-PL.ini | 2 +- data/locale/pt-BR.ini | 2 +- data/locale/ru-RU.ini | 2 +- data/locale/zh-CN.ini | 2 +- src/tests/localvocal-offline-test.cpp | 2 +- src/whisper-utils/whisper-params.cpp | 10 ++++------ 14 files changed, 17 insertions(+), 19 deletions(-) diff --git a/data/locale/ar-SA.ini b/data/locale/ar-SA.ini index 357717e..3d04074 100644 --- a/data/locale/ar-SA.ini +++ b/data/locale/ar-SA.ini @@ -31,7 +31,7 @@ max_tokens="الحد الأقصى للرموز" speed_up="تسريع" initial_prompt="المطالبة الأولية" suppress_blank="قمع الفراغ" -suppress_non_speech_tokens="قمع الرموز غير الكلامية" +suppress_nst="قمع الرموز غير الكلامية" temperature="درجة الحرارة" max_initial_ts="أقصى الطوابع الزمنية الأولية" length_penalty="عقوبة الطول" diff --git a/data/locale/de-DE.ini b/data/locale/de-DE.ini index b67a032..356d5d5 100644 --- a/data/locale/de-DE.ini +++ b/data/locale/de-DE.ini @@ -31,7 +31,7 @@ max_tokens="Maximale Tokens" speed_up="Beschleunigen" initial_prompt="Anfangsaufforderung" suppress_blank="Leerzeichen unterdrücken" -suppress_non_speech_tokens="Nicht-Sprach-Tokens unterdrücken" +suppress_nst="Nicht-Sprach-Tokens unterdrücken" temperature="Temperatur" max_initial_ts="Maximale Anfangszeitstempel" length_penalty="Längenstrafe" diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index a2827fd..8e6f5ca 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -105,7 +105,7 @@ initial_prompt="Initial prompt" language="Input Language" detect_language="Detect language" suppress_blank="Suppress blank" -suppress_non_speech_tokens="Suppress non-speech tokens" +suppress_nst="Suppress non-speech tokens" temperature="Temperature" max_initial_ts="Max initial timestamps" length_penalty="Length penalty" diff --git a/data/locale/es-ES.ini b/data/locale/es-ES.ini index 359b81a..3739f2a 100644 --- a/data/locale/es-ES.ini +++ b/data/locale/es-ES.ini @@ -31,7 +31,7 @@ max_tokens="Máximo de tokens" speed_up="Acelerar" initial_prompt="Mensaje inicial" suppress_blank="Suprimir en blanco" -suppress_non_speech_tokens="Suprimir tokens no hablados" +suppress_nst="Suprimir tokens no hablados" temperature="Temperatura" max_initial_ts="Máximas marcas de tiempo iniciales" length_penalty="Penalización por longitud" diff --git a/data/locale/fr-FR.ini b/data/locale/fr-FR.ini index b27d971..b7b8f25 100644 --- a/data/locale/fr-FR.ini +++ b/data/locale/fr-FR.ini @@ -31,7 +31,7 @@ max_tokens="Tokens max" speed_up="Accélérer" initial_prompt="Invite initiale" suppress_blank="Supprimer blanc" -suppress_non_speech_tokens="Supprimer tokens non vocaux" +suppress_nst="Supprimer tokens non vocaux" temperature="Température" max_initial_ts="Horodatages initiaux max" length_penalty="Pénalité de longueur" diff --git a/data/locale/hi-IN.ini b/data/locale/hi-IN.ini index 5eb906f..b4def6c 100644 --- a/data/locale/hi-IN.ini +++ b/data/locale/hi-IN.ini @@ -31,7 +31,7 @@ max_tokens="अधिकतम टोकन" speed_up="गति बढ़ाएं" initial_prompt="प्रारंभिक संकेत" suppress_blank="रिक्त को दबाएं" -suppress_non_speech_tokens="गैर-वाक् टोकन को दबाएं" +suppress_nst="गैर-वाक् टोकन को दबाएं" temperature="तापमान" max_initial_ts="अधिकतम प्रारंभिक टाइमस्टैम्प" length_penalty="लंबाई दंड" diff --git a/data/locale/ja-JP.ini b/data/locale/ja-JP.ini index 0a4a435..bdeba61 100644 --- a/data/locale/ja-JP.ini +++ b/data/locale/ja-JP.ini @@ -31,7 +31,7 @@ max_tokens="最大トークン数" speed_up="スピードアップ" initial_prompt="初期プロンプト" suppress_blank="空白を抑制" -suppress_non_speech_tokens="非音声トークンを抑制" +suppress_nst="非音声トークンを抑制" temperature="温度" max_initial_ts="最大初期タイムスタンプ" length_penalty="長さペナルティ" diff --git a/data/locale/ko-KR.ini b/data/locale/ko-KR.ini index b265d0c..ef76d31 100644 --- a/data/locale/ko-KR.ini +++ b/data/locale/ko-KR.ini @@ -31,7 +31,7 @@ max_tokens="최대 토큰 수" speed_up="속도 증가" initial_prompt="초기 프롬프트" suppress_blank="빈칸 억제" -suppress_non_speech_tokens="비음성 토큰 억제" +suppress_nst="비음성 토큰 억제" temperature="온도" max_initial_ts="최대 초기 타임스탬프" length_penalty="길이 패널티" diff --git a/data/locale/pl-PL.ini b/data/locale/pl-PL.ini index 01bb6c2..af6738a 100644 --- a/data/locale/pl-PL.ini +++ b/data/locale/pl-PL.ini @@ -31,7 +31,7 @@ max_tokens="Maks. tokeny" speed_up="Przyspiesz" initial_prompt="Początkowy prompt" suppress_blank="Tłumienie pustych" -suppress_non_speech_tokens="Tłumienie nie-mowy" +suppress_nst="Tłumienie nie-mowy" temperature="Temperatura" max_initial_ts="Maks. początkowe znaczniki czasu" length_penalty="Kara za długość" diff --git a/data/locale/pt-BR.ini b/data/locale/pt-BR.ini index 866fded..b117dc9 100644 --- a/data/locale/pt-BR.ini +++ b/data/locale/pt-BR.ini @@ -31,7 +31,7 @@ max_tokens="Máx. Tokens" speed_up="Acelerar" initial_prompt="Prompt Inicial" suppress_blank="Suprimir Branco" -suppress_non_speech_tokens="Suprimir Tokens Não-Fala" +suppress_nst="Suprimir Tokens Não-Fala" temperature="Temperatura" max_initial_ts="Máx. Carimbos de Tempo Iniciais" length_penalty="Penalidade de Comprimento" diff --git a/data/locale/ru-RU.ini b/data/locale/ru-RU.ini index fddd042..69afd78 100644 --- a/data/locale/ru-RU.ini +++ b/data/locale/ru-RU.ini @@ -31,7 +31,7 @@ max_tokens="Макс. количество токенов" speed_up="Ускорение" initial_prompt="Начальная подсказка" suppress_blank="Подавление пустых строк" -suppress_non_speech_tokens="Подавление не речевых токенов" +suppress_nst="Подавление не речевых токенов" temperature="Температура" max_initial_ts="Макс. начальные временные метки" length_penalty="Штраф за длину" diff --git a/data/locale/zh-CN.ini b/data/locale/zh-CN.ini index 6a93f12..dba1a2b 100644 --- a/data/locale/zh-CN.ini +++ b/data/locale/zh-CN.ini @@ -31,7 +31,7 @@ max_tokens="最大标记数" speed_up="加速" initial_prompt="初始提示" suppress_blank="抑制空白" -suppress_non_speech_tokens="抑制非语音标记" +suppress_nst="抑制非语音标记" temperature="温度" max_initial_ts="最大初始时间戳" length_penalty="长度惩罚" diff --git a/src/tests/localvocal-offline-test.cpp b/src/tests/localvocal-offline-test.cpp index c4a9042..f41d2d0 100644 --- a/src/tests/localvocal-offline-test.cpp +++ b/src/tests/localvocal-offline-test.cpp @@ -194,7 +194,7 @@ create_context(int sample_rate, int channels, const std::string &whisper_model_p gf->whisper_params.split_on_word = false; gf->whisper_params.max_tokens = 0; gf->whisper_params.suppress_blank = true; - gf->whisper_params.suppress_non_speech_tokens = true; + gf->whisper_params.suppress_nst = true; gf->whisper_params.temperature = 0.0; gf->whisper_params.max_initial_ts = 1.0; gf->whisper_params.length_penalty = -1; diff --git a/src/whisper-utils/whisper-params.cpp b/src/whisper-utils/whisper-params.cpp index 883e2af..9e52112 100644 --- a/src/whisper-utils/whisper-params.cpp +++ b/src/whisper-utils/whisper-params.cpp @@ -37,8 +37,7 @@ void whisper_params_pretty_print(whisper_full_params ¶ms) obs_log(LOG_INFO, "language: %s", params.language); obs_log(LOG_INFO, "detect_language: %s", params.detect_language ? "true" : "false"); obs_log(LOG_INFO, "suppress_blank: %s", params.suppress_blank ? "true" : "false"); - obs_log(LOG_INFO, "suppress_non_speech_tokens: %s", - params.suppress_non_speech_tokens ? "true" : "false"); + obs_log(LOG_INFO, "suppress_nst: %s", params.suppress_nst ? "true" : "false"); obs_log(LOG_INFO, "temperature: %f", params.temperature); obs_log(LOG_INFO, "max_initial_ts: %f", params.max_initial_ts); obs_log(LOG_INFO, "length_penalty: %f", params.length_penalty); @@ -84,7 +83,7 @@ void apply_whisper_params_defaults_on_settings(obs_data_t *s) // obs_data_set_default_string(s, "language", whisper_params_tmp.language); obs_data_set_default_bool(s, "detect_language", whisper_params_tmp.detect_language); obs_data_set_default_bool(s, "suppress_blank", false); - obs_data_set_default_bool(s, "suppress_non_speech_tokens", false); + obs_data_set_default_bool(s, "suppress_nst", false); obs_data_set_default_double(s, "temperature", whisper_params_tmp.temperature); obs_data_set_default_double(s, "max_initial_ts", whisper_params_tmp.max_initial_ts); obs_data_set_default_double(s, "length_penalty", whisper_params_tmp.length_penalty); @@ -129,8 +128,7 @@ void apply_whisper_params_from_settings(whisper_full_params ¶ms, obs_data_t // params.language = obs_data_get_string(settings, "language"); params.detect_language = obs_data_get_bool(settings, "detect_language"); params.suppress_blank = obs_data_get_bool(settings, "suppress_blank"); - params.suppress_non_speech_tokens = - obs_data_get_bool(settings, "suppress_non_speech_tokens"); + params.suppress_nst = obs_data_get_bool(settings, "suppress_nst"); params.temperature = (float)obs_data_get_double(settings, "temperature"); params.max_initial_ts = (float)obs_data_get_double(settings, "max_initial_ts"); params.length_penalty = (float)obs_data_get_double(settings, "length_penalty"); @@ -177,7 +175,7 @@ void add_whisper_params_group_properties(obs_properties_t *ppts) // obs_properties_add_text(g, "language", MT_("language"), OBS_TEXT_DEFAULT); obs_properties_add_bool(g, "detect_language", MT_("detect_language")); obs_properties_add_bool(g, "suppress_blank", MT_("suppress_blank")); - obs_properties_add_bool(g, "suppress_non_speech_tokens", MT_("suppress_non_speech_tokens")); + obs_properties_add_bool(g, "suppress_nst", MT_("suppress_nst")); obs_properties_add_float(g, "temperature", MT_("temperature"), 0, 1, 0.05); obs_properties_add_float(g, "max_initial_ts", MT_("max_initial_ts"), 0, 100, 1); obs_properties_add_float(g, "length_penalty", MT_("length_penalty"), 0, 1, 0.05); From 325f99d0a9db51ae00c6eff4cb4908dbf8bdfadc Mon Sep 17 00:00:00 2001 From: Roy Shilkrot Date: Mon, 3 Feb 2025 10:32:39 -0500 Subject: [PATCH 10/11] Update include directory for Whispercpp target in CMake configuration --- cmake/BuildWhispercpp.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/BuildWhispercpp.cmake b/cmake/BuildWhispercpp.cmake index 10a3a52..5b3bebb 100644 --- a/cmake/BuildWhispercpp.cmake +++ b/cmake/BuildWhispercpp.cmake @@ -220,7 +220,8 @@ else() Whispercpp::Whisper PROPERTIES IMPORTED_LOCATION ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) - set_target_properties(Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) + set_target_properties(Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES + ${whispercpp_fetch_SOURCE_DIR}/include) add_library(Whispercpp::GGML STATIC IMPORTED) set_target_properties( Whispercpp::GGML From 97c2f674e88ab24c2463e0f3fc771731492bba78 Mon Sep 17 00:00:00 2001 From: Roy Shilkrot Date: Mon, 3 Feb 2025 10:47:41 -0500 Subject: [PATCH 11/11] Remove CoreML library from Whispercpp target linking in CMake configuration --- cmake/BuildWhispercpp.cmake | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/cmake/BuildWhispercpp.cmake b/cmake/BuildWhispercpp.cmake index 5b3bebb..239f30e 100644 --- a/cmake/BuildWhispercpp.cmake +++ b/cmake/BuildWhispercpp.cmake @@ -60,13 +60,6 @@ if(APPLE) PROPERTIES IMPORTED_LOCATION ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}ggml-blas${CMAKE_STATIC_LIBRARY_SUFFIX}) - add_library(Whispercpp::CoreML STATIC IMPORTED) - set_target_properties( - Whispercpp::CoreML - PROPERTIES - IMPORTED_LOCATION - ${whispercpp_fetch_SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper.coreml${CMAKE_STATIC_LIBRARY_SUFFIX}) - elseif(WIN32) if(NOT DEFINED ACCELERATION) message(FATAL_ERROR "ACCELERATION is not set. Please set it to either `cpu`, `cuda`, `vulkan` or `hipblas`") @@ -267,7 +260,7 @@ endif() if(APPLE) target_link_libraries(Whispercpp INTERFACE "-framework Accelerate -framework CoreML -framework Metal") - target_link_libraries(Whispercpp INTERFACE Whispercpp::CoreML Whispercpp::GGMLMetal Whispercpp::GGMLBlas) + target_link_libraries(Whispercpp INTERFACE Whispercpp::GGMLMetal Whispercpp::GGMLBlas) endif(APPLE) if(UNIX