earshot

Library Featured

Ridiculously fast & accurate voice activity detection in pure Rust

Checked · Sources

Downloads
164,695
Dependents
14
Stars
242
Forks
10
Contributors
2
Commits
36
Latest release
1.2.2 ·

About

From the project README ·

Ridiculously fast & accurate streaming voice activity detection, written in pure Rust and also available for Python & C/C++.

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/stereo 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.

Earshot, in black, performs markedly better than Silero VAD v6 and TEN VAD in blue and red.

Usage

Rust

cargo add earshot

Read the full README
// Get per-frame probabilities from a real-time audio stream:
let mut detector = earshot::Detector::default();
let mut frame_receiver = ...
while let Some(frame) = frame_receiver.recv() {
	// `frame` is Vec<i16> with length 256.
	// Each frame passed to the detector must be exactly 256 samples (16ms) @ 16 KHz sample rate.
	// f32 [-1, 1] slices/vecs are also supported here.
	let score = detector.predict(&frame);
	if score.is_voice() {
		println!("Voice detected! Score: {:.1}%", score.raw * 100.);
	}

	// If the frame is interleaved stereo, use the Stereo wrapper:
	let score = detector.predict(earshot::Stereo(&frame));
}

// Get segments from a full audio buffer:
for segment in earshot::segments(audio, &earshot::SegmenterOptions::default()) {
	println!(
		"Voice detected from {:.2}s - {:.2}s ({:.2}s)",
		segment.start_secs(),
		segment.end_secs(),
		segment.duration_secs()
	);
}

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]:

[dependencies]
earshot = { version = "1", default-features = false, features = [ "libm" ] }
Runs on
GPU support unknown
What shows it
  • no dependency or feature matches a backend row
Native code
None found
  • No native code found
Python bindings
No Python binding crate found
License
Apache-2.0 OR MIT

Compare with similar projects

Order: strongest tier first, then most downloads, then name, with unmeasured values last. A library counts downloads over 30 days. An app counts binary downloads per release. An app with none counts its crate downloads over 30 days. ML Rust runs this catalogue, so its closest project always gets a row.

earshot beside the projects that share a topic with it
ProjectDownloadsDependentsStarsLatest releaseRuns on (GPU)Native codeLicense
earshot This page Featured

Ridiculously fast & accurate voice activity detection in pure Rust

164,695 downloads over 30 days 14 242 1.2.2 GPU support unknown No native code found Apache-2.0 OR MIT
webrtc-vad Listed Dormant

Rust interface for the WebRTC Voice-Activity-Detction Module

60,022 downloads over 30 days 7 31 0.4.0 GPU support unknown Build uses a native toolchain: cc MIT

Voice Activity Detector using the Silero VAD model.

36,149 downloads over 30 days 11 64 0.2.1 GPU support unknown Binds native code: ort-sys MIT

Pure Rust implementation of Qwen3 ASR (Automatic Speech Recognition) with libtorch and MLX backends

21 downloads over 30 days 0 254 0.2.0 CUDA Binds native code: torch-sys (feature tch-backend). Build uses a native toolchain: cmake Apache-2.0
voxr New

Audio and speech on boostr: compressed-audio decode, resampling, DSP and grapheme to phoneme, with speech synthesis (Kokoro, VITS), voice cloning (VoxCPM2), transcription with word timings (Whisper), voice activity (Silero) and audio-text scoring (CLAP), on CPU or CUDA.

642 downloads over 30 days 2 2 0.9.1 CUDA No native code found Apache-2.0

Self-hosted native-Rust real-time voice-agent runtime — one binary, no Python or softswitch: transports, serializers, codec, and a speech-to-speech (Gemini Live) pipeline.

46 downloads over 30 days 0 127 0.1.0 GPU support unknown Binds native code: audiopus_sys (feature local), ort-sys (feature vad-ort), whisper-rs-sys (feature stt-whisper-local) Apache-2.0
Why FeaturedIt passes every Featured gate.

What it meets

  • It has 12 active dependents and 11 new dependents in 365 days. Featured needs 11 active dependents or 9 new dependents in 365 days.
  • Active dependents are at 100% of their peak. Featured needs at least 50%.
  • Docs are present. The release commit or a manifest ties the crate to the repository.
  • No vulnerability advisory stays unpatched past the grace window. At least one version is neither a prerelease nor 0.0.x.
  • The last activity is on 30 Aug 2026, 71 days ago. The rules expect an update within 1200 days. Dormancy rule

Exact rules: Featured library. The check on applied thresholds version 9.

Every rule outcome, as the check records it
  • expected-interval: version 1.2.2 base 300, doubled for 164695 downloads per month, doubled for 12 active users: E = 1200 days
  • dormancy: last activity 2026-08-30, 71 days ago, E = 1200: active
  • featured: featured: active_users 12, new_adopters 11, former_glory 1

Measurements and sources

Each signal row shows the raw value, its source and the fetch date. The Sources list gathers every distinct source on this page. Movement needs more history.

Sources6 sources
Adoption12 active dependents, 11 new dependents in 365 days1 not measured
Adoption measurements
SignalValueSourceFetchedCounts
Active dependents12crates.io database dumpYes
New dependents (365 days)11crates.io database dumpYes
Peak active dependents11.5crates.io database dumpYes
Active dependents as a share of the peak1crates.io database dumpYes
Binary downloads per releaseNot measuredYes
MaintenanceLatest human commit: 2 months ago3 not measured
Maintenance measurements
SignalValueSourceFetchedCounts
Latest human commit2026-08-30GitHub repositoryYes
Latest release2026-08-19crates.io database dumpYes
First release2024-09-29crates.io database dumpYes
Latest version1.2.2crates.io database dumpYes
Days the oldest outside issue waits for a reply130GitHub repositoryYes
Maintainer replies over 365 days0GitHub repositoryYes
Repository archivedfalseGitHub repositoryYes
Repository gonefalseGitHub repositoryYes
Release commit or manifest in the repotruecrates.io packageYes
Published docstruecrates.io database dumpYes
Latest release fails cargo checkNot measuredYes
Build check dateNot measuredYes
Build check toolchainNot measuredYes
SecurityUnpatched vulnerabilities: none
Security measurements
SignalValueSourceFetchedCounts
Unpatched vulnerabilities past the grace windownoneRustSec advisory databaseYes
RustSec unmaintained advisorynoneRustSec advisory databaseYes
Deprecation noticenonecrates.io database dumpYes
Deprecated requirementnonecrates.io database dumpYes
Distribution6 releases, 164,695 downloads over 30 days5 not measured
Distribution measurements
SignalValueSourceFetchedCounts
Releases6crates.io database dumpYes
Downloads over 30 days164695crates.io database dumpYes
Binary downloads over the last 3 releasesNot measuredYes
Homebrew installs on request over 365 daysNot measuredYes
Repology repository familiesNot measuredYes
Docker pull growth over 90 daysNot measuredYes
Docker pulls at the growth baselineNot measuredYes
Every version a prereleasefalsecrates.io database dumpYes
Every version 0.0.xfalsecrates.io database dumpYes
Every version yankedfalsecrates.io database dumpYes
Crate deleted from crates.iofalsecrates.io database dumpYes
Repository242 stars, 10 forks, 2 contributors, 36 commits. Stars alone never qualify a project.
Repository measurements
SignalValueSourceFetchedCounts
GitHub stars242GitHub repositoryYes — one part of the repository route
GitHub forks10GitHub repositoryYes — one part of the repository route
Contributors with a GitHub account2GitHub contributorsYes — one part of the repository route
Commits on the default branch36GitHub repositoryNo
Repository's main crate left out of the entrynonecrates.io database dumpYes
Facts that never count
Facts that never count measurements
SignalValueSourceFetchedCounts
LicenseApache-2.0 OR MITcrates.io database dumpNo
Runs on, from listed crates and their direct dependenciesGPU support unknowncrates.io database dumpNo
What shows each backendno dependency or feature matches a backend rowcrates.io database dumpNo
Native code, from listed crates and their dependenciesNo native code foundcrates.io database dumpNo
Python bindings, from direct dependencies of listed cratesNo Python binding crate foundcrates.io database dumpNo
Crates that depend on a listed crate directly14crates.io database dumpNo

Corrections and review history

Report a correction

No correction applies to this entry.

Judgments

A judgment enters only through an approved issue and a merged pull request.

No judgment applies to this entry.