From b12809df40c7bbb464a7bc0f61379ae8609f4e92 Mon Sep 17 00:00:00 2001 From: David Knaack Date: Sun, 23 Jun 2024 12:35:52 +0200 Subject: [PATCH] openai-whisper-cpp: 1.5.4 -> 1.6.2 --- .../audio/openai-whisper-cpp/default.nix | 14 ++---- .../openai-whisper-cpp/download-models.patch | 48 ++++++++++--------- 2 files changed, 28 insertions(+), 34 deletions(-) diff --git a/pkgs/tools/audio/openai-whisper-cpp/default.nix b/pkgs/tools/audio/openai-whisper-cpp/default.nix index ab1cbb77e97b..218872ed1e31 100644 --- a/pkgs/tools/audio/openai-whisper-cpp/default.nix +++ b/pkgs/tools/audio/openai-whisper-cpp/default.nix @@ -25,13 +25,13 @@ let in effectiveStdenv.mkDerivation (finalAttrs: { pname = "whisper-cpp"; - version = "1.5.4"; + version = "1.6.2"; src = fetchFromGitHub { owner = "ggerganov"; repo = "whisper.cpp"; rev = "refs/tags/v${finalAttrs.version}" ; - hash = "sha256-9H2Mlua5zx2WNXbz2C5foxIteuBgeCNALdq5bWyhQCk="; + hash = "sha256-hIEIu7feOZWqxRskf6Ej7l653/9KW8B3cnpPLoCRBAc="; }; # The upstream download script tries to download the models to the @@ -80,6 +80,7 @@ effectiveStdenv.mkDerivation (finalAttrs: { env = lib.optionalAttrs stdenv.isDarwin { WHISPER_COREML = "1"; WHISPER_COREML_ALLOW_FALLBACK = "1"; + WHISPER_METAL_EMBED_LIBRARY = "1"; } // lib.optionalAttrs cudaSupport { WHISPER_CUBLAS = "1"; }; @@ -99,15 +100,6 @@ effectiveStdenv.mkDerivation (finalAttrs: { wrapProgram $out/bin/whisper-cpp-download-ggml-model \ --prefix PATH : ${lib.makeBinPath [wget]} - ${lib.optionalString stdenv.isDarwin '' - install -Dt $out/share/whisper-cpp ggml-metal.metal - - for bin in whisper-cpp whisper-cpp-stream whisper-cpp-command; do - wrapProgram $out/bin/$bin \ - --set-default GGML_METAL_PATH_RESOURCES $out/share/whisper-cpp - done - ''} - runHook postInstall ''; diff --git a/pkgs/tools/audio/openai-whisper-cpp/download-models.patch b/pkgs/tools/audio/openai-whisper-cpp/download-models.patch index 7183c38b5166..7589c2ef36f8 100644 --- a/pkgs/tools/audio/openai-whisper-cpp/download-models.patch +++ b/pkgs/tools/audio/openai-whisper-cpp/download-models.patch @@ -1,51 +1,53 @@ +diff --git a/models/download-ggml-model.sh b/models/download-ggml-model.sh +index 1f1075b..7476c8e 100755 --- a/models/download-ggml-model.sh +++ b/models/download-ggml-model.sh -@@ -9,18 +9,6 @@ - src="https://huggingface.co/ggerganov/whisper.cpp" - pfx="resolve/main/ggml" +@@ -12,18 +12,6 @@ pfx="resolve/main/ggml" + BOLD="\033[1m" + RESET='\033[0m' -# get the path of this script --function get_script_path() { +-get_script_path() { - if [ -x "$(command -v realpath)" ]; then -- echo "$(dirname "$(realpath "$0")")" +- dirname "$(realpath "$0")" - else -- local ret="$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)" -- echo "$ret" +- _ret="$(cd -- "$(dirname "$0")" >/dev/null 2>&1 || exit ; pwd -P)" +- echo "$_ret" - fi -} - -models_path="${2:-$(get_script_path)}" - # Whisper models - models=( - "tiny.en" -@@ -56,8 +44,8 @@ function list_models { + models="tiny + tiny.en +@@ -64,8 +52,8 @@ list_models() { printf "\n\n" } -if [ "$#" -lt 1 ] || [ "$#" -gt 2 ]; then -- printf "Usage: $0 [models_path]\n" +- printf "Usage: %s [models_path]\n" "$0" +if [ "$#" -ne 1 ]; then -+ printf "Usage: $0 \n" ++ printf "Usage: %s \n" "$0" list_models + printf "___________________________________________________________\n" + printf "${BOLD}.en${RESET} = english-only ${BOLD}-q5_[01]${RESET} = quantized ${BOLD}-tdrz${RESET} = tinydiarize\n" +@@ -94,8 +82,6 @@ echo "$model" | grep -q '^"tdrz"*$' - exit 1 -@@ -82,8 +70,6 @@ fi + printf "Downloading ggml model %s from '%s' ...\n" "$model" "$src" - printf "Downloading ggml model $model from '$src' ...\n" - --cd "$models_path" +-cd "$models_path" || exit - if [ -f "ggml-$model.bin" ]; then - printf "Model $model already exists. Skipping download.\n" + printf "Model %s already exists. Skipping download.\n" "$model" exit 0 -@@ -105,7 +91,7 @@ if [ $? -ne 0 ]; then +@@ -116,7 +102,7 @@ if [ $? -ne 0 ]; then exit 1 fi --printf "Done! Model '$model' saved in '$models_path/ggml-$model.bin'\n" -+printf "Done! Model '$model' saved in 'ggml-$model.bin'\n" +-printf "Done! Model '%s' saved in '%s/ggml-%s.bin'\n" "$model" "$models_path" "$model" ++printf "Done! Model '%s' saved in 'ggml-%s.bin'\n" "$model" "$model" printf "You can now use it like this:\n\n" --printf " $ ./main -m $models_path/ggml-$model.bin -f samples/jfk.wav\n" -+printf " $ whisper-cpp -m ggml-$model.bin -f samples/jfk.wav\n" +-printf " $ ./main -m %s/ggml-%s.bin -f samples/jfk.wav\n" "$models_path" "$model" ++printf " $ whisper-cpp -m ggml-%s.bin -f samples/jfk.wav\n" "$model" printf "\n"