diff --git a/testing/vosk-api/APKBUILD b/testing/vosk-api/APKBUILD
index 0a7066524d95f6f93c3c759b2fd22e2f7aadaa39..01c2ddc5e8f6cf550e57d1af21d59fa7f017590a 100644
--- a/testing/vosk-api/APKBUILD
+++ b/testing/vosk-api/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: John Gebbie <me@johngebbie.com>
 pkgname=vosk-api
 pkgver=0.3.45
-pkgrel=2
+pkgrel=3
 _kaldi=93ef0019b847272a239fbb485ef97f29feb1d587
 pkgdesc="Offline speech recognition toolkit"
 url="https://alphacephei.com/vosk"
@@ -14,9 +14,13 @@ makedepends="
 	libgfortran
 	openblas-dev
 	openfst-dev
+	py3-cffi
+	py3-gpep517
+	py3-setuptools
+	py3-wheel
 	"
 checkdepends="vosk-model-small-en-us"
-subpackages="$pkgname-dev"
+subpackages="$pkgname-dev py3-$pkgname:_py3:noarch"
 source="https://github.com/alphacep/vosk-api/archive/v$pkgver/vosk-api-$pkgver.tar.gz
 	kaldi-$_kaldi.tar.gz::https://github.com/alphacep/kaldi/archive/$_kaldi.tar.gz
 	kaldi-to-openblas-0.3.21.patch.noauto
@@ -59,11 +63,21 @@ build() {
 		USE_SHARED_MATH=1 \
 		HAVE_OPENBLAS=1 \
 		HAVE_OPENBLAS_CLAPACK=0
+
+	cd "$builddir/python"
+	gpep517 build-wheel \
+		--wheel-dir .dist \
+		--output-fd 3 3>&1 >&2
+	python3 vosk_builder.py
 }
 
 package() {
 	install -Dm644 src/vosk_api.h -t "$pkgdir"/usr/include
 	install -Dm644 src/libvosk.so -t "$pkgdir"/usr/lib
+
+	cd "$builddir/python"
+	python3 -m installer -d "$pkgdir" \
+		.dist/*.whl
 }
 
 check() {
@@ -74,6 +88,20 @@ check() {
 	./test_vosk | grep -q '"text" : "zero one eight zero three"'
 }
 
+_py3() {
+	depends="$pkgname
+		py3-requests
+		py3-srt
+		py3-tqdm
+		py3-webvtt
+		"
+	amove usr/lib/python3.11
+	mv "$builddir"/python/vosk/vosk_cffi.py "$subpkgdir"/usr/lib/python3.11/site-packages/vosk/
+
+	rm "$subpkgdir"/usr/lib/python3.11/site-packages/vosk/libvosk.so
+	ln -s /usr/lib/libvosk.so "$subpkgdir"/usr/lib/python3.11/site-packages/vosk/libvosk.so
+}
+
 
 sha512sums="
 cf55ddb4abf078c1a16a5ae149d3ac141da9fd88ccd9bed018df5f5c0fd489517ffe0a1dc9b20b4f5b07738cfac771f9c08637c9e92e8d494727124b76772eb1  vosk-api-0.3.45.tar.gz