From 5c9a9fed37700c071cd14c64430f761ff201ea35 Mon Sep 17 00:00:00 2001 From: jopejoe1 Date: Wed, 14 Aug 2024 23:46:15 +0200 Subject: [PATCH 1/4] flac: set meta.mainProgramm --- pkgs/applications/audio/flac/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/applications/audio/flac/default.nix b/pkgs/applications/audio/flac/default.nix index cadf0c829d44..09ce3341aa54 100644 --- a/pkgs/applications/audio/flac/default.nix +++ b/pkgs/applications/audio/flac/default.nix @@ -44,6 +44,7 @@ stdenv.mkDerivation rec { homepage = "https://xiph.org/flac/"; description = "Library and tools for encoding and decoding the FLAC lossless audio file format"; changelog = "https://xiph.org/flac/changelog.html"; + mainProgram = "flac"; platforms = platforms.all; license = licenses.bsd3; maintainers = with maintainers; [ ruuda ]; From adc03577327067ebd028ce75a5826d4707c9bd9f Mon Sep 17 00:00:00 2001 From: jopejoe1 Date: Wed, 14 Aug 2024 22:11:44 +0200 Subject: [PATCH 2/4] pocketsphinx: init at 5.0.3 --- pkgs/by-name/po/pocketsphinx/package.nix | 66 +++++++++++++++++++ .../python-modules/pocketsphinx/default.nix | 57 ++++++++++++++++ pkgs/top-level/python-packages.nix | 4 ++ 3 files changed, 127 insertions(+) create mode 100644 pkgs/by-name/po/pocketsphinx/package.nix create mode 100644 pkgs/development/python-modules/pocketsphinx/default.nix diff --git a/pkgs/by-name/po/pocketsphinx/package.nix b/pkgs/by-name/po/pocketsphinx/package.nix new file mode 100644 index 000000000000..0e37da28a939 --- /dev/null +++ b/pkgs/by-name/po/pocketsphinx/package.nix @@ -0,0 +1,66 @@ +{ + lib, + stdenv, + cmake, + doxygen, + fetchFromGitHub, + gitUpdater, + graphviz, + gst_all_1, + pkg-config, + testers, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "pocketsphinx"; + version = "5.0.3"; + + src = fetchFromGitHub { + owner = "cmusphinx"; + repo = "pocketsphinx"; + rev = "refs/tags/v${finalAttrs.version}"; + hash = "sha256-aCQpRmGHX08rA8UIt6Xf37XM34HysEzvcucLhL355k8="; + }; + + nativeBuildInputs = [ + cmake + doxygen + graphviz + pkg-config + ]; + + buildInputs = [ gst_all_1.gstreamer ]; + + cmakeFlags = [ + (lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic)) + (lib.cmakeBool "BUILD_GSTREAMER" true) + (lib.cmakeFeature "CMAKE_INSTALL_DATADIR" "${placeholder "data"}/share") + ]; + + outputs = [ + "out" + "data" + "dev" + "lib" + "man" + ]; + + passthru = { + updateScript = gitUpdater { rev-prefix = "v"; }; + tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + }; + + meta = with lib; { + description = "Small speech recognizer"; + homepage = "https://github.com/cmusphinx/pocketsphinx"; + changelog = "https://github.com/cmusphinx/pocketsphinx/blob/v${finalAttrs.version}/NEWS"; + license = with licenses; [ + bsd2 + bsd3 + mit + ]; + pkgConfigModules = [ "pocketsphinx" ]; + mainProgram = "pocketsphinx"; + maintainers = with maintainers; [ jopejoe1 ]; + }; +}) diff --git a/pkgs/development/python-modules/pocketsphinx/default.nix b/pkgs/development/python-modules/pocketsphinx/default.nix new file mode 100644 index 000000000000..16a173efc62d --- /dev/null +++ b/pkgs/development/python-modules/pocketsphinx/default.nix @@ -0,0 +1,57 @@ +{ + lib, + stdenv, + buildPythonPackage, + cmake, + cython, + fetchFromGitHub, + memory-profiler, + ninja, + pathspec, + pocketsphinx, + pytestCheckHook, + scikit-build, + scikit-build-core, + sounddevice, +}: + +buildPythonPackage rec { + inherit (pocketsphinx) version src; + pname = "pocketsphinx"; + pyproject = true; + + dontUseCmakeConfigure = true; + + env.CMAKE_ARGS = lib.cmakeBool "USE_INSTALLED_POCKETSPHINX" true; + + buildInputs = [ pocketsphinx ]; + + build-system = [ + cmake + cython + ninja + pathspec + scikit-build-core + ]; + + dependencies = [ sounddevice ]; + + nativeCheckInputs = [ + memory-profiler + pytestCheckHook + ]; + + pythonImportsCheck = [ "pocketsphinx" ]; + + meta = with lib; { + description = "Small speech recognizer"; + homepage = "https://github.com/cmusphinx/pocketsphinx"; + changelog = "https://github.com/cmusphinx/pocketsphinx/blob/v${version}/NEWS"; + license = with licenses; [ + bsd2 + bsd3 + mit + ]; + maintainers = with maintainers; [ jopejoe1 ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 9abd47731678..0440baf355b7 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -10601,6 +10601,10 @@ self: super: with self; { pocket = callPackage ../development/python-modules/pocket { }; + pocketsphinx = callPackage ../development/python-modules/pocketsphinx { + inherit (pkgs) pocketsphinx; + }; + podcastparser = callPackage ../development/python-modules/podcastparser { }; podcats = callPackage ../development/python-modules/podcats { }; From 9eea49356ed20f9efbe27b21540a0c95ffa640da Mon Sep 17 00:00:00 2001 From: jopejoe1 Date: Wed, 14 Aug 2024 22:15:10 +0200 Subject: [PATCH 3/4] python3Packages.speechrecognition: devendor dependencies --- .../python-modules/speechrecognition/default.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkgs/development/python-modules/speechrecognition/default.nix b/pkgs/development/python-modules/speechrecognition/default.nix index 8629af8a075f..9bceb8083e10 100644 --- a/pkgs/development/python-modules/speechrecognition/default.nix +++ b/pkgs/development/python-modules/speechrecognition/default.nix @@ -10,6 +10,7 @@ setuptools, soundfile, typing-extensions, + flac, }: buildPythonPackage rec { @@ -26,6 +27,15 @@ buildPythonPackage rec { hash = "sha256-icXZUg2lVLo8Z5t9ptDj67BjQLnEgrG8geYZ/lZeJt4="; }; + postPatch = '' + # Remove Bundled binaries + rm speech_recognition/flac-* + rm -r third-party + + substituteInPlace speech_recognition/audio.py \ + --replace-fail 'shutil_which("flac")' '"${lib.getExe flac}"' + ''; + build-system = [ setuptools ]; dependencies = [ From 07544dd438dab566adaa5d60bc3de20be126e156 Mon Sep 17 00:00:00 2001 From: jopejoe1 Date: Wed, 14 Aug 2024 22:15:40 +0200 Subject: [PATCH 4/4] python3Packages.speechrecognition: add optional dependencies --- .../speechrecognition/default.nix | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/pkgs/development/python-modules/speechrecognition/default.nix b/pkgs/development/python-modules/speechrecognition/default.nix index 9bceb8083e10..ee20791679c0 100644 --- a/pkgs/development/python-modules/speechrecognition/default.nix +++ b/pkgs/development/python-modules/speechrecognition/default.nix @@ -2,15 +2,17 @@ lib, buildPythonPackage, fetchFromGitHub, - numpy, + flac, + openai, + openai-whisper, + pocketsphinx, + pyaudio, pytestCheckHook, pythonOlder, - torch, requests, setuptools, soundfile, typing-extensions, - flac, }: buildPythonPackage rec { @@ -39,26 +41,29 @@ buildPythonPackage rec { build-system = [ setuptools ]; dependencies = [ + pyaudio requests typing-extensions ]; + optional-dependencies = { + whisper-api = [ openai ]; + whisper-local = [ + openai-whisper + soundfile + ]; + }; + nativeCheckInputs = [ - numpy pytestCheckHook - torch - soundfile - ]; + pocketsphinx + ] ++ optional-dependencies.whisper-local ++ optional-dependencies.whisper-api; pythonImportsCheck = [ "speech_recognition" ]; disabledTests = [ - # Test files are missing in source - "test_flac" - # Attribute error - "test_whisper" - # PocketSphinx is not available in Nixpkgs - "test_sphinx" + # Parsed string does not match expected + "test_sphinx_keywords" ]; meta = with lib; {