Earshot
Ridiculously fast & accurate streaming voice activity detection, written in pure Rust and also available for Python.
Earshot achieves an RTF of 0.0003 (3,600x real time): 40x faster than Silero VAD v6 & TEN VAD - and more accurate, too!
Earshot operates on 16 millisecond frames of mono audio sampled at 16000 Hz & supports streaming. Earshot detects voice in any language and is resilient to most kinds of environmental noise with an SNR ≥ 3dB.
If you find Earshot useful, please consider sponsoring pyke.io.
Usage
- Python:
pip install earshot
Rust
use Detector;
// Create a new VAD detector using the default NN.
let mut detector = default;
let mut frame_receiver = ...
while let Some = frame_receiver.recv
Binary & memory size
Earshot is very embedded-friendly: each instance of Detector uses ~8 KiB of memory to store the audio buffer & neural network state. Binary footprint is ~95 KiB; the neural network is 40 KiB of that.
In contrast, Silero's model is 2 MiB, TEN's is 310 KiB, but both require ONNX Runtime, which adds an additional 8 MB to your binary (+ a whole lot more memory).
#![no_std]
Earshot supports #![no_std], but it does require the libm crate. The std feature is enabled by default, so add default-features = false and features = [ "libm" ] to enable #![no_std]:
[]
= { = "1", = false, = [ "libm" ] }