Skip to content

vosk: Add version 0.3.45 - #2166

Merged
luhenry merged 3 commits into
mainfrom
vosk
Sep 21, 2026
Merged

luhenry merged 3 commits into
mainfrom
vosk

Conversation

@luhenry

@luhenry luhenry commented Sep 21, 2026 •

Copy link
Copy Markdown
Member

Compiles libvosk.so — the Vosk speech recognition engine over the alphacep Kaldi fork, OpenFST and OpenBLAS/CLAPACK — and ships it inside the interpreter-agnostic vosk wheel. Upstream publishes no riscv64 wheel.

Mirrors upstream's travis/Dockerfile.dockcross-manylinux and travis/build-wheels-dockcross.sh, whose CROSS_TRIPLE case already names riscv64; Kaldi's configure already selects makefiles/linux_openblas_riscv64.mk.

Differs from upstream

  • Builds natively in the manylinux riscv64 image - dockcross publishes no riscv64 image.
  • TARGET=RISCV64_GENERIC for OpenBLAS - the only riscv64 target of 0.3.20 with plain C kernels.
  • COMMON_OPT=-Wno-error=implicit-function-declaration - GCC 14 rejects OpenBLAS's generated prototype-less linktest.c.
  • Kaldi, OpenFST and CLAPACK pinned to commits - upstream clones three branch heads.
  • CMAKE_POLICY_VERSION_MINIMUM=3.5 for CLAPACK - the image's CMake 4 refuses its 2.6 minimum.
  • Stages the four bundled projects' licences - upstream's wheels carry no licence text at all.

Matrix: one py3-none wheel and no interpreter matrix - the payload is a libvosk.so opened by cffi in ABI mode, with no extension module.

Testing

  • Upstream ships no test suite; the wheel decodes upstream's python/example/test.wav with vosk-model-small-en-us-0.15, on each of cp312, cp313, cp314 and cp314t.

License: Wheel bundles Kaldi and OpenFST (Apache-2.0) and OpenBLAS and CLAPACK (BSD-3-Clause); upstream ships no licence text for them, so the build adds it.

Built in 1h58m; all four interpreters decoded the sample identically to the x86_64 reference.

@github-actions

github-actions Bot commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-09-21 14:52 UTC

OpenBLAS 0.3.20's exports/gensymbol generates a linktest.c that calls every
exported symbol with no prototype in scope. GCC 14 diagnoses an implicit
function declaration as an error by default, and the rule's own -w only
inhibits warnings, so the shared-library target fails:

  linktest.c:169:1: error: implicit declaration of function 'cblas_ztrmv'
  make[1]: *** [Makefile:190: ../libopenblas_riscv64_generic-r0.3.20.so] Error 1

Kaldi's configure requires libopenblas.so to exist for --mathlib=OPENBLAS_CLAPACK,
so the shared target cannot simply be skipped. COMMON_OPT is the supported knob
that Makefile.system folds into CFLAGS; -O2 restores the default it replaces.
ONLY_CBLAS=1 implies NO_LAPACKE, and Makefile.install gates the lapacke.h copy
behind 'ifndef NO_LAPACKE'. Passing it to the install step as well as to the
build left the install prefix without lapacke.h, and matrix/kaldi-blas.h
includes it unconditionally on the HAVE_OPENBLAS path:

  ../matrix/kaldi-blas.h:100:12: fatal error: lapacke.h: No such file or directory
  make: *** [Makefile:164: matrix] Error 2

Upstream's Dockerfile.manylinux and Dockerfile.dockcross-manylinux both pass
ONLY_CBLAS=1 to 'all' only and omit it from 'install'; that asymmetry is what
puts the header in place, so mirror it.
luhenry added a commit that referenced this pull request Sep 21, 2026
@luhenry
luhenry marked this pull request as ready for review September 21, 2026 14:43
@luhenry
luhenry merged commit 613e245 into main Sep 21, 2026
9 checks passed
@luhenry
luhenry deleted the vosk branch September 21, 2026 14:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant