{ pkgs ? import { }, }: pkgs.python3Packages.buildPythonPackage rec { pname = "whisperx"; version = "3.2.0"; # pypi doesn't have the requirements.txt file, and it's required src = pkgs.fetchFromGitHub { owner = "m-bain"; repo = "whisperX"; rev = "v${version}"; # git doesn't have tags hash = "sha256-JQvyR9JW8OiSRI0eywTyWB4VMXmu6cTpBekBWonoJa4="; }; pyproject = true; dependencies = [ pkgs.python3Packages.torch pkgs.python3Packages.torchaudio (pkgs.python3Packages.faster-whisper.overrideAttrs (old: { # 1.0.2 is actually breaking APIs (requires hotwords argument) src = pkgs.fetchFromGitHub { owner = "SYSTRAN"; repo = "faster-whisper"; rev = "v1.0.0"; hash = "sha256-0fE8X1d6CgDrrHtRudksN/tIGRtBKMvoNwkSVyFNda4="; }; })) pkgs.python3Packages.transformers pkgs.python3Packages.pyannote-audio # Not in the requirements.txt for some reason pkgs.python3Packages.pandas pkgs.python3Packages.nltk ]; pythonRelaxDeps = true; # torchaudio: 2.5.1a0 is >=2, despite dependency check saying otherwise # ctranslate2: was pinned to 4.4.0 to fix some nvidia pinning issue or whatnot # pyannote-audio: not sure what pins this to 3.1.1, but 3.3.1 works fine # For some reason pyannote-audio doesn't get relaxed when listed in a pythonRelaxDeps array, # hence why using true build-system = [ pkgs.python3Packages.setuptools ]; pythonImportsCheck = [ "whisperx" ]; }