gnu: Add python-vosk.

* gnu/packages/machine-learning.scm (python-vosk): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Nicolas Graves 2022-09-29 11:00:20 +02:00 committed by Ludovic Courtès
parent fadfeeede5
commit a3e20f35f5
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -3562,3 +3562,43 @@ (define-public vosk-api
vocabulary for better accuracy, and supports speaker identification beside
simple speech recognition.")
(license license:asl2.0))))
(define-public python-vosk
(package
(inherit vosk-api)
(name "python-vosk")
(build-system python-build-system)
(propagated-inputs
(list python-cffi python-requests python-tqdm python-srt python-websockets))
(inputs (list vosk-api))
(arguments
(list
#:tests? #f ;; TODO There are tests but not run through Makefile.
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'config
(lambda _
(chdir "python")
(setenv "VOSK_SOURCE" #$vosk-api)))
(add-before 'build 'from-abi-to-api
(lambda _
(substitute* "vosk_builder.py"
(("ffibuilder\\.set_source\\(\"vosk.vosk_cffi\", None\\)")
(string-append
"ffibuilder.set_source(\"vosk.vosk_cffi\", "
"r\"\"\"\n#include<vosk_api.h>\n#include<Python.h>\"\"\",\n\t"
"library_dirs=["
"'" #$vosk-api "/lib'"
"],\n\t"
"libraries=['vosk', 'python3.9'],\n\t"
"include_dirs=["
"'" #$vosk-api "/src'" "])")))
(substitute* "vosk/__init__.py"
(("_c = open_dll\\(\\)")
"")
(("_ffi")
"ffi")
(("from \\.vosk_cffi import ffi as ffi")
"from .vosk_cffi import ffi, lib")
(("_c\\.")
"lib.")))))))))