blob: 273c654cb2a84235f7e3bd62e8ea3743302a3f80 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
# Maintainer: Daniel Bermond <dbermond@archlinux.org>
pkgbase=vosk-api-git
pkgname=('vosk-api-git' 'python-vosk-git')
pkgver=0.3.50.r5.g1b308a3
pkgrel=2
_model_small_ver=0.15
_model_spk_ver=0.4
pkgdesc='Offline speech recognition toolkit (git version)'
arch=('x86_64')
url='https://alphacephei.com/vosk/'
license=('Apache-2.0')
makedepends=('git' 'cmake' 'gradle' 'python' 'python-build' 'python-cffi' 'python-installer'
'python-requests' 'python-setuptools' 'python-srt' 'python-tqdm' 'python-websockets'
'python-wheel' 'java-environment=17')
checkdepends=('ffmpeg' 'python-numpy')
source=('git+https://github.com/alphacep/vosk-api.git'
'git+https://github.com/xianyi/OpenBLAS.git'
"git+https://github.com/alphacep/clapack.git"
'git+https://github.com/alphacep/openfst.git'
'git+https://github.com/alphacep/kaldi.git#branch=vosk'
# models are for running tests in the check() function
"https://alphacephei.com/kaldi/models/vosk-model-small-en-us-${_model_small_ver}.zip"
"https://alphacephei.com/vosk/models/vosk-model-spk-${_model_spk_ver}.zip")
noextract=("vosk-model-small-en-us-${_model_small_ver}.zip")
sha256sums=('SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'30f26242c4eb449f948e42cb302dd7a686cb29a3423a8367f99ff41780942498'
'a74d8f51144484813e16af689bb0f916b7a111e2347f467c4933c1166097b5a7')
prepare() {
local _curl='curl -sqgb "" -fLC - --retry 3 --retry-delay 3'
local _url='https://raw.githubusercontent.com/alphacep/vosk-api/master/travis/Dockerfile.manylinux'
git -C OpenBLAS config --local advice.detachedHead false
git -C clapack config --local advice.detachedHead false
git -C OpenBLAS checkout --quiet "$(awk '/xianyi\/OpenBLAS/ { print $5 }' <($_curl "$_url"))"
git -C clapack checkout --quiet "$(awk '/alphacep\/clapack/ { print $5 }' <($_curl "$_url"))"
mkdir -p models
bsdtar -x -f "vosk-model-small-en-us-${_model_small_ver}.zip" -C models
ln -sf "../../../vosk-model-spk-${_model_spk_ver}" vosk-api/python/example/model-spk
ln -sf ../../OpenBLAS kaldi/tools/OpenBLAS
ln -sf ../../clapack kaldi/tools/clapack
ln -sf ../../openfst kaldi/tools/openfst
autoreconf -fi openfst
}
pkgver() {
git -C vosk-api describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/go\///;s/^v//'
}
build() {
local _file
export CFLAGS+=' -ffat-lto-objects'
export CXXFLAGS+=' -ffat-lto-objects'
# openblas
CFLAGS+=' -Wno-implicit-function-declaration' \
make -C OpenBLAS ONLY_CBLAS='1' DYNAMIC_ARCH='1' TARGET='NEHALEM' USE_LOCKING='1' USE_THREAD='0' all
make -C OpenBLAS PREFIX="${srcdir}/OpenBLAS/install" install
# clapack
CFLAGS+=' -Wno-error=format-security -fcommon -Wno-implicit-function-declaration' \
cmake -B build-clapack -S clapack -Wno-dev
cmake --build build-clapack
while read -r -d '' _file
do
cp -af "$_file" "${srcdir}/OpenBLAS/install/lib"
done < <(find build-clapack -type f -name 'lib*.a' -print0)
# openfst
cd openfst
CFLAGS="${CFLAGS/-O2/-O3}" \
CXXFLAGS="${CXXFLAGS/-O2/-O3}" \
./configure \
--prefix="${srcdir}/kaldi/tools/openfst" \
--enable-static \
--enable-shared \
--enable-far \
--enable-ngram-fsts \
--enable-lookahead-fsts \
--with-pic \
--disable-bin
make
make install
# kaldi
cd "${srcdir}/kaldi/src"
CXXFLAGS="${CXXFLAGS/-O2/-O3}" ./configure --mathlib='OPENBLAS_CLAPACK' --shared --use-cuda='no'
sed -i 's/[[:space:]]-O1[[:space:]]/ -O3 /g' kaldi.mk
make online2 rnnlm
while read -r -d '' _file
do
rm "$_file"
done < <(find "${srcdir}/kaldi" -type f -name '*.o' -print0)
# vosk-api
export CFLAGS="${CFLAGS/ -ffat-lto-objects/}"
export CXXFLAGS="${CXXFLAGS/ -ffat-lto-objects/}"
make -C "${srcdir}/vosk-api/src" \
EXTRA_CFLAGS="${CXXFLAGS/-O2/-O3}" \
EXTRA_LDFLAGS="$LDFLAGS" \
KALDI_ROOT="${srcdir}/kaldi" \
OPENFST_ROOT="${srcdir}/kaldi/tools/openfst" \
OPENBLAS_ROOT="${srcdir}/kaldi/tools/OpenBLAS/install"
# java bindings
gradle -p "${srcdir}/vosk-api/java/lib" clean assemble
# python module
cd "${srcdir}/vosk-api/python"
python ./vosk_builder.py
python -m build --wheel --no-isolation
}
check() {
local _test
cd vosk-api/python/example
# https://github.com/alphacep/vosk-api/issues/1220
for _test in alternatives empty ffmpeg nlsml simple speaker srt text words #reset
do
printf '%s\n' "Running test_${_test}..."
PYTHONPATH="${PWD}/../build/lib" VOSK_MODEL_PATH="${srcdir}/models" python "./test_${_test}.py" test.wav
done
}
package_vosk-api-git() {
depends=('gcc-libs')
optdepends=('java-runtime: for java bindings')
provides=('vosk-api')
conflicts=('vosk-api')
install -d -m755 "${pkgdir}/usr/lib"
install -D -m644 vosk-api/src/vosk_api.h -t "${pkgdir}/usr/include"
cp -dr --no-preserve='ownership' vosk-api/src/*.so* "${pkgdir}/usr/lib"
local _ver
_ver="$(awk "/^version[[:space:]]=/ { gsub(/'/, \"\", \$3); print \$3 }" vosk-api/java/lib/build.gradle)"
install -D -m644 "vosk-api/java/lib/build/libs/vosk-${_ver}.jar" "${pkgdir}/usr/share/java/vosk.jar"
}
package_python-vosk-git() {
pkgdesc='Python module for vosk-api (git version)'
depends=('python' 'python-cffi' 'python-requests' 'python-srt' 'python-tqdm' 'python-websockets'
"vosk-api-git=${pkgver}")
provides=('python-vosk')
conflicts=('python-vosk')
local _site_pkgs
_site_pkgs="$(python -c 'import site; print(site.getsitepackages()[0])')"
python -m installer --destdir="$pkgdir" vosk-api/python/dist/*.whl
rm "${pkgdir}${_site_pkgs}/vosk/libvosk.so"
ln -s ../../../libvosk.so "${pkgdir}${_site_pkgs}/vosk/libvosk.so"
}
|