Skip to main content

VoxLock

The best performing voice isolator there is. VoxLock is an open-source voice isolation model: it keeps the caller's voice and removes the other voices in the room before speech-to-text hears them. Made for voice agents and phone calls: one input, the call audio, and it picks out the caller by itself. It streams on a CPU with 24 ms of algorithmic latency.

Live demo · Model on Hugging Face

PyPI Hugging Face Krisp benchmark WER 4.95% License: Apache-2.0

The same 6.5 seconds of a call with VoxLock off and on: off, speech-to-text transcribes the other person; on, it transcribes the caller

Results

VoxLock has the lowest word error rate and leaks the fewest background words on the Krisp Voice Isolation Benchmark
Model Access Word error rate % Background words leaked / min
VoxLock open 4.95 0.11
Krisp VI 2.5 Default paid 5.30 1.52
Krisp VI 2.5 Balanced paid 5.32 2.02
Krisp VI 2.5 HD paid 5.79 2.74
Krisp VI 2.5 Lite paid 6.21 4.52
ai-coustics Voice Focus 2.2 L paid 6.84 0.66
ai-coustics Voice Focus 2.2 S paid 6.91 1.00
Sanas Voice Isolation SE 1.0 paid 9.38 13.76
REAL-TSE causal (VoxLock's starting checkpoint) open 9.81 13.73
Hush open 12.09 19.58
DeepFilterNet3 open 13.30 22.77
TIGER open 14.72 37.24
No processing 23.21 66.48
SAM-Audio small (Meta) open 33.77 21.15

265 real recordings from the Krisp Voice Isolation Benchmark, transcribed with Parakeet TDT 0.6B v2 and scored with the benchmark's published method. Background words leaked counts words transcribed while only the background was talking, per minute of that audio.

On real AMI meetings not used in training, with the headset wearer as the caller:

Model Access Word error rate % Background words leaked / min
VoxLock open 10.12 2.12
ai-coustics Voice Focus 2.2 S paid 11.85 1.06
ai-coustics Voice Focus 2.2 L paid 12.13 1.72
Sanas Voice Isolation SE 1.0 paid 13.30 5.30
TIGER open 22.84 36.85
DeepFilterNet3 open 26.78 38.84
Hush open 33.00 68.93
No processing 33.03 78.34

Caller words missed, deletions, insertions and 95% intervals: bench/results.

Use

pip install voxlock
voxlock call.wav -o caller.wav

Any sample rate, mono or stereo. The model, 50 MB, downloads from Hugging Face on first use.

import voxlock

vl = voxlock.VoxLock()
call = voxlock.load_audio("call.wav")      # 16 kHz mono float32
caller = vl.isolate(call)                  # same length as the input

VoxLock keeps the voice in a 3-second sample of the caller. isolate takes the loudest 3 seconds in the first 15 seconds of the call, which is how it was benchmarked. Pass sample= to choose it yourself.

Live calls

stream = vl.stream(sample)                 # about 3 s of the caller, 16 kHz mono
for chunk in call_audio:                   # 16 kHz float32 chunks of any size
    send(stream.push(chunk))               # the isolated audio, about 24 ms behind
send(stream.flush())                       # at the end of the call

The stream needs the sample before it starts. In a voice agent, take the first 3 seconds the caller speaks, or a sample saved from an earlier call, and pass the audio through until then. Streaming gives the same output as isolate. With 4 CPU threads on an Apple M2 Pro it runs in real time from 40 ms chunks (VoxLock(threads=4)).

PyTorch

git clone https://github.com/arbazsiddiqui/voxlock && cd voxlock
pip install -r requirements.txt
huggingface-cli download arbazsiddiqui/voxlock model.safetensors config.yaml --local-dir ckpt
python isolate.py --ckpt ckpt --in call.wav --out caller.wav

Training

A 27M causal band-split RNN target-speaker extractor, fine-tuned from the REAL-TSE challenge baseline on a single NVIDIA L4:

REAL-TSE tfmap_context_causal_100
  -> simulated calls        4,000 steps   LibriSpeech callers + background talkers in simulated rooms
  -> real AMI crosstalk     4,000 steps   headset recordings from 40 meetings
  -> long calls (30 s)        800 steps   callers who talk throughout
  -> rooms and distances     400 steps   callers near or far from the mic, background voices dry or in the room, room noise

Repository

Path
voxlock/ the pip install voxlock package: whole files, streaming, command line
isolate.py PyTorch inference
export_onnx.py ONNX export
demo/ the browser demo (python demo/serve.py)
bench/ benchmark harness, vendor runners, per-file results
train/ training scripts and data preparation

Acknowledgements

Built on the REAL-TSE challenge baseline and WeSep by Shuai Wang, Ke Zhang and co-authors, with WeSpeaker's ECAPA model. Trained on LibriSpeech and the AMI Meeting Corpus.

License

Apache-2.0.

Metadata

Release files for voxlock 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for voxlock 1.0.0
File Size Uploaded
voxlock-1.0.0.tar.gz 13.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for voxlock 1.0.0
File Interpreter ABI Platform
voxlock-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 26.0 kB

Release files / voxlock-1.0.0.tar.gz

Download URL voxlock-1.0.0.tar.gz
Size 13.8 kB
Tags Source
SHA-256 checksum
How to use checksums
0a1dbde773b4cbbb20d3602be844503b2f76e901eab7f9ba803fa34829023500
BLAKE2b-256 checksum
How to use checksums
7a048753738c60679187b384bd4cd04eedbd1ca2be1a1551007baf9ae0ad93b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.9

Release files / voxlock-1.0.0-py3-none-any.whl

Download URL voxlock-1.0.0-py3-none-any.whl
Size 12.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5b2f3a17067886e6fd8aa0163cfdbc737a6d2caa1decf7c58660b9a152f181f1
BLAKE2b-256 checksum
How to use checksums
b3122681401b9753586dda301a49027ea0bd7e674b1dbb9458a2cbc3c598e2b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.9

Release history Release notifications | RSS feed

1.1.0

2 release files

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page