Repository navigation
Releases: arbazsiddiqui/voxlock
Release list
1.1.2
- A voice sample of any length from 3 seconds up works: a longer sample gives its loudest 3 seconds in the first 30.
stream(),isolate(sample=)and the Pipecat filter'svoice_sample=used to fail on anything but exactly 3 seconds. isolate()returns a call shorter than 3 seconds unchanged, with a warning, instead of failing. A sample under 3 seconds, orlive(sec=)under 3, is refused with a clear error.
1.1.1: live() locks on continuous speech
live()and the Pipecat filter no longer stall when the caller talks without pausing.- Digital silence at the start of a call no longer puts line noise into the voice sample.
VoxLock models for sherpa-onnx
VoxLock 1.1.1 ONNX models with meta data for sherpa-onnx's speech denoisers.
These are the ONNX files from huggingface.co/arbazsiddiqui/voxlock (revision a50f4e1d), with meta data added by scripts/voxlock/add_meta_data.py. The graphs and weights are unchanged: each model's graph is byte-identical to the original and its outputs are bit-identical.
enroll runs once on exactly 3 seconds of the caller's voice (the chunk model accepts only the enroll outputs of a 3-second sample). chunk runs on each chunk of the call and carries the LSTM state.
| File | Role | Precision | Size | sha256 |
|---|---|---|---|---|
voxlock_enroll.onnx |
enroll | fp32 (used with fp32, int8 and int8-full) | 12.5 MB | 5d06048c156bb8cd422d29848e6d38fb26a7b39f6f7fd92eccf2a6ed1ce003c6 |
voxlock_chunk_int8.onnx |
chunk | int8, LSTMs in 8-bit (default) | 66.6 MB | df61a9d0062b0adbcf1182302b1eb8b815f15ac47ea4923e8e164c1aff64121d |
voxlock_chunk.onnx |
chunk | fp32 | 87.4 MB | f02a548fcbdc921b8ff22760bc2e69a86eb098e70016e0d77a49f99defc25571 |
voxlock_chunk_int8_full.onnx |
chunk | int8-full, LSTMs and matrix multiplies in 8-bit | 57.7 MB | 28648542825b778123f33fef91e76d27ec31f744651e6413d2297d47db53bc9e |
voxlock_enroll_fp16.onnx |
enroll | fp16 weights | 6.3 MB | 89a9949df98cb7ef7f133a19de828077dafbec4ab072d1f1d5f20134b904a79b |
voxlock_chunk_fp16.onnx |
chunk | fp16 weights | 44.3 MB | ccbac121e74e2c4a52fdbff67e1af4b4594e1dd94ee1608ecfa3d0eb8e59c723 |
voxlock_test_call.wav |
test input | 16 kHz, 16-bit, 14 s | 448 KB | 16342ff0b5cefb64cc012a3185c641f8762a78803fa0d9f4966b288669b132b4 |
voxlock_test_voice_sample.wav |
voice sample of the caller in the test input | 16 kHz, 16-bit, 3 s | 96 KB | a3cd4eba63f33ae1001a73144286e877802c141f8189c84ea1461b332817255f |
Pairs: int8 = voxlock_enroll.onnx + voxlock_chunk_int8.onnx; int8-full = voxlock_enroll.onnx + voxlock_chunk_int8_full.onnx; fp16 = voxlock_enroll_fp16.onnx + voxlock_chunk_fp16.onnx; fp32 = voxlock_enroll.onnx + voxlock_chunk.onnx.
Meta data in both files: model_type=voxlock, model_role (enroll or chunk), version=1, model_version=1.1.1, precision, sample_rate=16000, n_fft=512, hop_length=128, window_length=512, window_type=hann, num_freq_bins=257, context_dim=512, voice_sample_seconds=3, model_url, hf_revision, code_url, license=Apache-2.0, comment. Chunk only: state_shape=6,32,256 (LSTM states h and c), frames_per_chunk=100, output_gain=-0.5.
VoxLock's weights are released under Apache-2.0.
The test call is a simulated room mixture of two LibriSpeech test-clean speakers (CC BY 4.0), from the VoxLock demo. The voice sample is the loudest 3 seconds of VoxLock's fp32 output on it.
1.1.0: 8-bit models, live(), Pipecat filter
- 8-bit models:
VoxLock(precision=...)withint8(the new default),int8-full,fp16andfp32;voxlock --precision.
int8scores 5.11% word error rate on the Krisp benchmark against 4.95% forfp32, and streams in real time on fewer CPU threads. VoxLock.live(): a stream that takes the first 3 seconds of speech as the voice sample, passing the audio through until then.- Pipecat audio filter,
pip install "voxlock[pipecat]":voxlock.pipecat.VoxLockFilter. Tested with Pipecat 1.12.0. - Output is at the input's level. 1.0.0 returned the caller at twice the level, so the command line could clip loud words.
VoxLock 1.0.0
The best performing voice isolator there is: 4.95% word error rate and 0.11 background words leaked per minute on the Krisp Voice Isolation Benchmark.
pip install voxlock
voxlock call.wav -o caller.wavModel: https://huggingface.co/arbazsiddiqui/voxlock · Demo: https://arbazsiddiqui.me/voxlock