Akiki
Akiki is a lightweight Python package for streaming voice activity detection. It identifies speech in audio and returns a speech probability, a speech/silence decision, and timestamps for each 16 ms frame.
The model is included in the package. Processing runs locally, without a model download, network connection, or external service.
Install
Requires Python 3.10 or later.
pip install akiki
Or add it to a uv project:
uv add akiki
Python usage
Akiki accepts mono audio sampled at 16,000 Hz.
import soundfile as sf
from akiki import VAD
audio, sample_rate = sf.read("recording.wav", dtype="float32")
with VAD() as vad:
for frame in vad.push(audio, sample_rate=sample_rate):
print(frame.start_seconds, frame.end_seconds,
frame.probability, frame.speech)
For live audio, call vad.push() repeatedly with successive audio buffers.
Buffers can have any length; incomplete frames are retained for the next call.
Call vad.reset() before starting a new recording. A final incomplete frame is
not padded or scored.
Use VAD(threshold=0.6) to set the speech decision threshold. Every frame still
includes its probability, regardless of the threshold.
Command line
akiki recording.wav
akiki recording.wav --threshold 0.6
The command prints one JSON object per complete frame, containing its timestamps, speech probability, and speech decision.
Inference engines
Linux x86_64 wheels include the compiled Rust engine for systems with glibc 2.34 or later. Pip and uv select the compatible wheel automatically; no Rust toolchain is needed to install it.
Akiki selects the Rust engine when a compatible native library is available, then falls back to ONNX Runtime or PyTorch. ONNX Runtime is included as a dependency. PyTorch is optional:
pip install 'akiki[pytorch]'
Choose an engine with VAD(engine="rust"), VAD(engine="onnx"), or
VAD(engine="pytorch"). The command-line equivalent is --engine rust,
--engine onnx, or --engine pytorch. An explicitly selected engine raises
an error if it is unavailable. Check vad.engine to see the active engine.
All engines use the same bundled model and streaming API.
License
The package and bundled Akiki model weights are licensed under Apache-2.0.
Metadata
Release files for akiki 0.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| akiki-0.0.3.tar.gz | 2.9 MB | Without provenance | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| akiki-0.0.3-py3-none-manylinux_2_34_x86_64.whl | Python 3 | none | Linux glibc 2.34+ x86-64 | Details |
| akiki-0.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 9.5 MB
Release files / akiki-0.0.3.tar.gz
| Download URL | akiki-0.0.3.tar.gz |
|---|---|
| Size | 2.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
43089deab010178a2c4d1c0d0226e36e765cb672d3bd59a4e4b262dc4e172d9e
|
|
BLAKE2b-256 checksum How to use checksums |
3c4d70ad751c5110a93c0b2edaa159e80bd3da8fdb11ae59e7e407b4f5d1490f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / akiki-0.0.3-py3-none-manylinux_2_34_x86_64.whl
| Download URL | akiki-0.0.3-py3-none-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | Linux glibc 2.34+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
3519d97d70fecb1dbe8c09c6ae891fad6cdf52036b2393f3bf7605aa1abad295
|
|
BLAKE2b-256 checksum How to use checksums |
0916de376b7e36fb6faae2653c49278e9da19c87e7e9f40f25f345bd91ab1b41
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / akiki-0.0.3-py3-none-any.whl
| Download URL | akiki-0.0.3-py3-none-any.whl |
|---|---|
| Size | 2.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
744fe641e7611af9d4595ca4351934539be6283519ce6c119a2c3072087320ef
|
|
BLAKE2b-256 checksum How to use checksums |
568ad57f315482ff750c8041fbe675c6e0d77356b907e9c88760403944c3763d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for akiki 0.0.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.