From b9445d0b76dfc05dc64e2b72427f43da65869595 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 13 Mar 2019 19:30:19 +0100 Subject: gnu: Add kaldi. * gnu/packages/machine-learning.scm (kaldi): New variable. --- gnu/packages/machine-learning.scm | 103 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 1db5f4a256..4067b4b1ea 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -40,14 +40,19 @@ #:use-module (guix git-download) #:use-module (gnu packages) #:use-module (gnu packages algebra) + #:use-module (gnu packages audio) #:use-module (gnu packages autotools) + #:use-module (gnu packages base) #:use-module (gnu packages boost) #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages cran) #:use-module (gnu packages dejagnu) #:use-module (gnu packages gcc) + #:use-module (gnu packages glib) + #:use-module (gnu packages gstreamer) #:use-module (gnu packages image) + #:use-module (gnu packages linux) #:use-module (gnu packages maths) #:use-module (gnu packages mpi) #:use-module (gnu packages ocaml) @@ -924,3 +929,101 @@ interactive learning.") Models, is a program for performing both single-SNP and SNP-set genome-wide association studies (GWAS) on extremely large data sets.") (license license:asl2.0))) + +;; There have been no proper releases yet. +(define-public kaldi + (let ((commit "2f95609f0bb085bd3a1dc5eb0a39f3edea59e606") + (revision "1")) + (package + (name "kaldi") + (version (git-version "0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kaldi-asr/kaldi.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "082qh3pfi7hvncylp4xsmkfahbd7gb0whdfa4rwrx7fxk9rdh3kz")))) + (build-system gnu-build-system) + (arguments + `(#:test-target "test" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ (chdir "src") #t)) + (replace 'configure + (lambda* (#:key build system inputs outputs #:allow-other-keys) + (when (not (or (string-prefix? "x86_64" system) + (string-prefix? "i686" system))) + (substitute* "makefiles/linux_openblas.mk" + (("-msse -msse2") ""))) + (substitute* "makefiles/default_rules.mk" + (("/bin/bash") (which "bash"))) + (substitute* "Makefile" + (("ext_depend: check_portaudio") + "ext_depend:")) + (substitute* '("online/Makefile" + "onlinebin/Makefile" + "gst-plugin/Makefile") + (("../../tools/portaudio/install") + (assoc-ref inputs "portaudio"))) + + ;; This `configure' script doesn't support variables passed as + ;; arguments, nor does it support "prefix". + (let ((out (assoc-ref outputs "out")) + (openblas (assoc-ref inputs "openblas")) + (openfst (assoc-ref inputs "openfst"))) + (substitute* "configure" + (("check_for_slow_expf;") "") + ;; This affects the RPATH and also serves as the installation + ;; directory. + (("KALDILIBDIR=`pwd`/lib") + (string-append "KALDILIBDIR=" out "/lib"))) + (mkdir-p out) ; must exist + (setenv "CONFIG_SHELL" (which "bash")) + (setenv "OPENFST_VER" ,(package-version openfst)) + (invoke "./configure" + "--use-cuda=no" + "--shared" + (string-append "--openblas-root=" openblas) + (string-append "--fst-root=" openfst))))) + (add-after 'build 'build-ext-and-gstreamer-plugin + (lambda _ + (invoke "make" "-C" "online" "depend") + (invoke "make" "-C" "online") + (invoke "make" "-C" "onlinebin" "depend") + (invoke "make" "-C" "onlinebin") + (invoke "make" "-C" "gst-plugin" "depend") + (invoke "make" "-C" "gst-plugin") + #t)) + ;; TODO: also install the executables. + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + (mkdir-p lib) + (install-file "gst-plugin/libgstonlinegmmdecodefaster.so" lib) + #t)))))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("gfortran" ,gfortran "lib") + ("glib" ,glib) + ("gstreamer" ,gstreamer) + ("jack" ,jack-1) + ("openblas" ,openblas) + ("openfst" ,openfst) + ("portaudio" ,portaudio) + ("python" ,python))) + (native-inputs + `(("glib" ,glib "bin") ; glib-genmarshal + ("grep" ,grep) + ("sed" ,sed) + ("pkg-config" ,pkg-config) + ("which" ,which))) + (home-page "https://kaldi-asr.org/") + (synopsis "Speech recognition toolkit") + (description "Kaldi is an extensible toolkit for speech recognition +written in C++.") + (license license:asl2.0)))) -- cgit v1.2.3