smartnet-v54-psa · audio demo

Keyboard clicks: before and after denoising

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.

12 seconds, 54 marked onset windows

0:00 / 0:12

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

Measurements on this fixture

These numbers describe this mixture only. Another room, microphone, speaker or keyboard can give different results.

Peak-residual suppression in dB, over marked onset windows. Higher is more suppression.
CaseMedian10th percentile
Keyboard in pauses48.319.2
Keyboard over speech10.40.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.

How it works

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.

Two spectral grids

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.

Measured delay

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.

CPU and startup

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.

Limits

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.

Questions

Does this page process my microphone?

No. This page plays three prerecorded WAV files. The open-source recorder example can process a chosen recording or your microphone locally.

What does the live denoiser do with audio?

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.

Is the code open?

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.

Try your own recording

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.