48 kHz mono audio
The model consumes 480-sample blocks every 10 ms. In the live package, an AudioWorklet handles framing and a separate Worker runs inference.
smartnet-v54-psa · audio demo
This demo mixes a studio speech recording with separately recorded keyboard clicks. It was rendered offline with smartnet-v54-psa, the model in the open tarnveil-denoise package. Switch tracks during playback to compare the same syllable.
Speech: M-AILABS ru_RU, hajdurova / strashnaya_minuta. Keyboard: a separate desk-microphone recording, mixed at −14.2 dB relative to the speech peak. Processing uses the package DSP and ONNX Runtime Node 1.29.0, without a transient suppressor or trusted key events. This is an offline rendering, not live browser inference or a recorded call. All tracks have the same gain; 544 samples of model delay were removed for comparison.
Audio files, hashes and scores · Benchmark method and source
These numbers describe this mixture only. Another room, microphone, speaker or keyboard can give different results.
| Case | Median | 10th percentile |
|---|---|---|
| Keyboard in pauses | 48.3 | 19.2 |
| Keyboard over speech | 10.4 | 0.0 |
Residual: model(speech + clicks) − model(speech), compared to the original click peak. The 10th percentile shows that some clicks over speech are barely suppressed. Nonlinear changes in speech can enter this residual. A separate clean-speech pass changed the overall level by −0.03 dB, with waveform error −19.9 dB relative to the original; similar volume does not mean unchanged voice.
The model consumes 480-sample blocks every 10 ms. In the live package, an AudioWorklet handles framing and a separate Worker runs inference.
The v54 model uses a 1024-point FFT with 10 ms hops and a finer 512-point grid with 5 ms hops. A short mask lookahead is included.
Model/DSP delay is 544 samples = 11.33 ms. The live AudioWorklet also starts with a 20 ms buffer; hardware, browser queues and the call add further delay.
The weights are 32.6 MiB. Loading takes time; inference must keep up with 10 ms input hops. Current cross-device browser CPU performance is not established.
Clicks overlapping speech remain the difficult case. Speech can change, and this fixture is not a guarantee for your microphone. The package requires 48 kHz, does not separate speakers or cancel echo, and has no mobile performance certification. Browser echo cancellation is a separate capture setting.
No. This page plays three prerecorded WAV files. The open-source recorder example can process a chosen recording or your microphone locally.
The model runs locally in a browser Worker. The package does not upload audio; the host application controls whether the processed stream is sent to a call.
The denoiser inference code and model weights are Apache-2.0. ONNX Runtime is MIT. Training code is not published. TarnVeil's messenger source remains closed.
The GitHub repository includes a local microphone/file recorder. Install the compiled package with npm install tarnveil-denoise. No TarnVeil account is needed for that example.