Loading nixos/modules/services/home-automation/wyoming/faster-whisper.nix +262 −222 Original line number Diff line number Diff line Loading @@ -18,10 +18,6 @@ let types ; inherit (builtins) toString ; inherit (utils) escapeSystemdExecArgs ; Loading @@ -36,26 +32,62 @@ in description = '' Attribute set of wyoming-faster-whisper instances to spawn. ''; type = attrsOf (submodule { type = attrsOf ( submodule ( { name, ... }: { options = { enable = mkEnableOption "Wyoming faster-whisper server"; zeroconf = { enable = mkEnableOption "zeroconf discovery" // { default = true; }; name = mkOption { type = str; default = "faster-whisper-${name}"; description = '' The advertised name for zeroconf discovery. ''; }; }; sttLibrary = mkOption { type = enum [ "auto" "faster-whisper" "onnx-asr" "sherpa" "transformers" ]; default = "auto"; example = "sherpa"; description = '' Library used for speech-to-text process. When set to `auto` picks a default based on the {option}`language`. ''; }; model = mkOption { type = str; default = "tiny-int8"; example = "Systran/faster-distil-whisper-small.en"; default = "auto"; example = "sherpa-onnx-nemo-parakeet-tdt-0.6b-v3-int8"; # https://github.com/home-assistant/addons/blob/master/whisper/DOCS.md#option-model description = '' Name of the voice model to use. Can also be a HuggingFace model ID or a path to a custom model directory. With {option}`useTranformers` enabled, a HuggingFace transformers Whisper model ID from HuggingFace like `openai/whisper-tiny.en` must be used. When set to `auto` picks a default based on the {option}`language`, With {option}`sttLibrary` set to `transformers`, a HuggingFace transformers Whisper model ID from HuggingFace like `openai/whisper-tiny` or `openai/whisper-base` must be used. Compressed models (`int8`) are slightly less accurate, but smaller and faster. Distilled models are uncompressed and faster and smaller than non-distilled models. Available models: Available models for faster-whisper: - `tiny-int8` (compressed) - `tiny` - `tiny.en` (English only) Loading @@ -80,14 +112,6 @@ in ''; }; useTransformers = mkOption { type = bool; default = false; description = '' Whether to provide the dependencies to allow using transformer models. ''; }; uri = mkOption { type = strMatching "^(tcp|unix)://.*$"; example = "tcp://0.0.0.0:10300"; Loading Loading @@ -236,7 +260,7 @@ in "prompt-engineer" a context for transcription, e.g. custom vocabularies or proper nouns to make it more likely to predict those word correctly. Not supported when the {option}`customModelType` is `transformers`. Only supported when the {option}`sttLibrary` is `faster-whisper`. ''; }; Loading @@ -246,7 +270,8 @@ in example = 5; description = '' The number of beams to use in beam search. Use `0` to automatically select a value based on the CPU. The default (`0`) will use 1 beam on ARM systems (assumes an ARM SBC) and 5 everywhere else. ''; apply = toString; }; Loading @@ -259,7 +284,9 @@ in ''; }; }; }); } ) ); }; }; Loading @@ -273,8 +300,8 @@ in in mkIf (cfg.servers != { }) { assertions = mapAttrsToList (server: options: { assertion = options.useTransformers -> options.initialPrompt == null; message = "wyoming-faster-whisper/${server}: Transformer models (`useTransformers`) do not currently support an `initialPrompt`."; assertion = options.sttLibrary != "faster-whisper" -> options.initialPrompt == null; message = "wyoming-faster-whisper/${server}: Initial prompt is only supported when using `faster-whisper` as `sttLibrary`."; }) cfg.servers; systemd.services = mapAttrs' ( Loading @@ -283,8 +310,14 @@ in finalPackage = cfg.package.overridePythonAttrs (oldAttrs: { dependencies = oldAttrs.dependencies # for transformer model support ++ optionals options.useTransformers oldAttrs.optional-dependencies.transformers; ++ optionals options.zeroconf.enable oldAttrs.optional-dependencies.zeroconf ++ optionals ( options.sttLibrary == "onnx-asr" || options.sttLibrary == "auto" && options.language == "ru" ) oldAttrs.optional-dependencies.onnx_asr ++ optionals ( options.sttLibrary == "sherpa-onnx" || options.sttLibrary == "auto" && options.language == "en" ) oldAttrs.optional-dependencies.sherpa ++ optionals (options.sttLibrary == "transformers") oldAttrs.optional-dependencies.transformers; }); in nameValuePair "wyoming-faster-whisper-${server}" { Loading Loading @@ -316,6 +349,8 @@ in options.uri "--device" options.device "--stt-library" options.sttLibrary "--model" options.model "--language" Loading @@ -323,8 +358,9 @@ in "--beam-size" options.beamSize ] ++ lib.optionals options.useTransformers [ "--use-transformers" ++ lib.optionals options.zeroconf.enable [ "--zeroconf" options.zeroconf.name ] ++ lib.optionals (options.initialPrompt != null) [ "--initial-prompt" Loading Loading @@ -366,6 +402,10 @@ in "AF_INET" "AF_INET6" "AF_UNIX" ] ++ lib.optionals options.zeroconf.enable [ # Zeroconf support require network interface enumeration "AF_NETLINK" ]; RestrictNamespaces = true; RestrictRealtime = true; Loading nixos/modules/services/home-automation/wyoming/piper.nix +6 −3 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ in ''; type = types.attrsOf ( types.submodule ( { ... }: { name, ... }: { options = { enable = mkEnableOption "Wyoming Piper server"; Loading @@ -49,7 +49,7 @@ in name = mkOption { type = str; default = "piper"; default = "piper-${name}"; description = '' The advertised name for zeroconf discovery. ''; Loading Loading @@ -205,8 +205,11 @@ in RestrictAddressFamilies = [ "AF_INET" "AF_INET6" "AF_NETLINK" "AF_UNIX" ] ++ lib.optionals options.zeroconf.enable [ # Zeroconf support require network interface enumeration "AF_NETLINK" ]; RestrictNamespaces = true; RestrictRealtime = true; Loading pkgs/by-name/wy/wyoming-faster-whisper/package.nix +24 −9 Original line number Diff line number Diff line Loading @@ -6,14 +6,14 @@ python3Packages.buildPythonApplication (finalAttrs: { pname = "wyoming-faster-whisper"; version = "2.5.0"; version = "3.1.0"; pyproject = true; src = fetchFromGitHub { owner = "rhasspy"; repo = "wyoming-faster-whisper"; tag = "v${finalAttrs.version}"; hash = "sha256-MKB6gZdGdAYoNK8SRiDHG8xtMZ5mXdaSn+bH4T6o/K4="; hash = "sha256-p1FCyj/D7ndKJD1/V5YzhT0xlkg61DSx2m3DCELmPO8="; }; build-system = with python3Packages; [ Loading @@ -25,18 +25,33 @@ python3Packages.buildPythonApplication (finalAttrs: { "wyoming" ]; pythonRemoveDeps = [ # https://github.com/rhasspy/wyoming-faster-whisper/pull/81 "requests" ]; dependencies = with python3Packages; [ faster-whisper wyoming ]; optional-dependencies = { transformers = with python3Packages; [ optional-dependencies = with python3Packages; { transformers = [ transformers ] ++ transformers.optional-dependencies.torch; sherpa = [ sherpa-onnx ]; onnx_asr = [ onnx-asr ] ++ onnx-asr.optional-dependencies.cpu ++ onnx-asr.optional-dependencies.hub; zeroconf = [ wyoming ] ++ wyoming.optional-dependencies.zeroconf; }; pythonImportsCheck = [ Loading Loading
nixos/modules/services/home-automation/wyoming/faster-whisper.nix +262 −222 Original line number Diff line number Diff line Loading @@ -18,10 +18,6 @@ let types ; inherit (builtins) toString ; inherit (utils) escapeSystemdExecArgs ; Loading @@ -36,26 +32,62 @@ in description = '' Attribute set of wyoming-faster-whisper instances to spawn. ''; type = attrsOf (submodule { type = attrsOf ( submodule ( { name, ... }: { options = { enable = mkEnableOption "Wyoming faster-whisper server"; zeroconf = { enable = mkEnableOption "zeroconf discovery" // { default = true; }; name = mkOption { type = str; default = "faster-whisper-${name}"; description = '' The advertised name for zeroconf discovery. ''; }; }; sttLibrary = mkOption { type = enum [ "auto" "faster-whisper" "onnx-asr" "sherpa" "transformers" ]; default = "auto"; example = "sherpa"; description = '' Library used for speech-to-text process. When set to `auto` picks a default based on the {option}`language`. ''; }; model = mkOption { type = str; default = "tiny-int8"; example = "Systran/faster-distil-whisper-small.en"; default = "auto"; example = "sherpa-onnx-nemo-parakeet-tdt-0.6b-v3-int8"; # https://github.com/home-assistant/addons/blob/master/whisper/DOCS.md#option-model description = '' Name of the voice model to use. Can also be a HuggingFace model ID or a path to a custom model directory. With {option}`useTranformers` enabled, a HuggingFace transformers Whisper model ID from HuggingFace like `openai/whisper-tiny.en` must be used. When set to `auto` picks a default based on the {option}`language`, With {option}`sttLibrary` set to `transformers`, a HuggingFace transformers Whisper model ID from HuggingFace like `openai/whisper-tiny` or `openai/whisper-base` must be used. Compressed models (`int8`) are slightly less accurate, but smaller and faster. Distilled models are uncompressed and faster and smaller than non-distilled models. Available models: Available models for faster-whisper: - `tiny-int8` (compressed) - `tiny` - `tiny.en` (English only) Loading @@ -80,14 +112,6 @@ in ''; }; useTransformers = mkOption { type = bool; default = false; description = '' Whether to provide the dependencies to allow using transformer models. ''; }; uri = mkOption { type = strMatching "^(tcp|unix)://.*$"; example = "tcp://0.0.0.0:10300"; Loading Loading @@ -236,7 +260,7 @@ in "prompt-engineer" a context for transcription, e.g. custom vocabularies or proper nouns to make it more likely to predict those word correctly. Not supported when the {option}`customModelType` is `transformers`. Only supported when the {option}`sttLibrary` is `faster-whisper`. ''; }; Loading @@ -246,7 +270,8 @@ in example = 5; description = '' The number of beams to use in beam search. Use `0` to automatically select a value based on the CPU. The default (`0`) will use 1 beam on ARM systems (assumes an ARM SBC) and 5 everywhere else. ''; apply = toString; }; Loading @@ -259,7 +284,9 @@ in ''; }; }; }); } ) ); }; }; Loading @@ -273,8 +300,8 @@ in in mkIf (cfg.servers != { }) { assertions = mapAttrsToList (server: options: { assertion = options.useTransformers -> options.initialPrompt == null; message = "wyoming-faster-whisper/${server}: Transformer models (`useTransformers`) do not currently support an `initialPrompt`."; assertion = options.sttLibrary != "faster-whisper" -> options.initialPrompt == null; message = "wyoming-faster-whisper/${server}: Initial prompt is only supported when using `faster-whisper` as `sttLibrary`."; }) cfg.servers; systemd.services = mapAttrs' ( Loading @@ -283,8 +310,14 @@ in finalPackage = cfg.package.overridePythonAttrs (oldAttrs: { dependencies = oldAttrs.dependencies # for transformer model support ++ optionals options.useTransformers oldAttrs.optional-dependencies.transformers; ++ optionals options.zeroconf.enable oldAttrs.optional-dependencies.zeroconf ++ optionals ( options.sttLibrary == "onnx-asr" || options.sttLibrary == "auto" && options.language == "ru" ) oldAttrs.optional-dependencies.onnx_asr ++ optionals ( options.sttLibrary == "sherpa-onnx" || options.sttLibrary == "auto" && options.language == "en" ) oldAttrs.optional-dependencies.sherpa ++ optionals (options.sttLibrary == "transformers") oldAttrs.optional-dependencies.transformers; }); in nameValuePair "wyoming-faster-whisper-${server}" { Loading Loading @@ -316,6 +349,8 @@ in options.uri "--device" options.device "--stt-library" options.sttLibrary "--model" options.model "--language" Loading @@ -323,8 +358,9 @@ in "--beam-size" options.beamSize ] ++ lib.optionals options.useTransformers [ "--use-transformers" ++ lib.optionals options.zeroconf.enable [ "--zeroconf" options.zeroconf.name ] ++ lib.optionals (options.initialPrompt != null) [ "--initial-prompt" Loading Loading @@ -366,6 +402,10 @@ in "AF_INET" "AF_INET6" "AF_UNIX" ] ++ lib.optionals options.zeroconf.enable [ # Zeroconf support require network interface enumeration "AF_NETLINK" ]; RestrictNamespaces = true; RestrictRealtime = true; Loading
nixos/modules/services/home-automation/wyoming/piper.nix +6 −3 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ in ''; type = types.attrsOf ( types.submodule ( { ... }: { name, ... }: { options = { enable = mkEnableOption "Wyoming Piper server"; Loading @@ -49,7 +49,7 @@ in name = mkOption { type = str; default = "piper"; default = "piper-${name}"; description = '' The advertised name for zeroconf discovery. ''; Loading Loading @@ -205,8 +205,11 @@ in RestrictAddressFamilies = [ "AF_INET" "AF_INET6" "AF_NETLINK" "AF_UNIX" ] ++ lib.optionals options.zeroconf.enable [ # Zeroconf support require network interface enumeration "AF_NETLINK" ]; RestrictNamespaces = true; RestrictRealtime = true; Loading
pkgs/by-name/wy/wyoming-faster-whisper/package.nix +24 −9 Original line number Diff line number Diff line Loading @@ -6,14 +6,14 @@ python3Packages.buildPythonApplication (finalAttrs: { pname = "wyoming-faster-whisper"; version = "2.5.0"; version = "3.1.0"; pyproject = true; src = fetchFromGitHub { owner = "rhasspy"; repo = "wyoming-faster-whisper"; tag = "v${finalAttrs.version}"; hash = "sha256-MKB6gZdGdAYoNK8SRiDHG8xtMZ5mXdaSn+bH4T6o/K4="; hash = "sha256-p1FCyj/D7ndKJD1/V5YzhT0xlkg61DSx2m3DCELmPO8="; }; build-system = with python3Packages; [ Loading @@ -25,18 +25,33 @@ python3Packages.buildPythonApplication (finalAttrs: { "wyoming" ]; pythonRemoveDeps = [ # https://github.com/rhasspy/wyoming-faster-whisper/pull/81 "requests" ]; dependencies = with python3Packages; [ faster-whisper wyoming ]; optional-dependencies = { transformers = with python3Packages; [ optional-dependencies = with python3Packages; { transformers = [ transformers ] ++ transformers.optional-dependencies.torch; sherpa = [ sherpa-onnx ]; onnx_asr = [ onnx-asr ] ++ onnx-asr.optional-dependencies.cpu ++ onnx-asr.optional-dependencies.hub; zeroconf = [ wyoming ] ++ wyoming.optional-dependencies.zeroconf; }; pythonImportsCheck = [ Loading