Neural vs classic noise reduction on singing

OneMove Vocal Console's Clean module started as a classic spectral noise suppressor. We wanted to know whether a small neural network, small enough to run in real time on an iPad, would do better on singing. It did, by a wide margin, so it became Clean's Studio engine. This note shows how we tested it and where it still falls short.

The short answer

enginenoise removed in pauseswhere it runs
Neural (Studio)37–40 dB on hiss, fan, clicks and traffic at 0–10 dB SNR; 21 dB on background voiceson the device, its own thread
Neural 0 ms (Live)8–28 dB, with less damage to the voice than the classic Live engineson the device
Classic spectral (Studio)1.5–10 dBon the device

On a gated, compressed rap vocal, our attack protection cut the number of chopped onsets from 48 to 20.

Hear it

Clean: fan noise

We added a room fan and a few clicks to a demo vocal. Clean removes them on the device and keeps the voice intact (neural engine, Studio mode, Laptop Mic preset). Before and after are set to the same loudness, so you hear the change, not a level jump.

0:00
Before
After

"Lost_Pella" by queeniemusic (ccmixter.org/files/queeniemusic/65508), licensed CC BY 3.0 (creativecommons.org/licenses/by/3.0). Excerpt, processed by OneMove Vocal Console. Generated fan noise added for this demo.

Clean Expert panel on iPad
Clean's panel: pick the engine, set one knob, watch the attenuation meter.

The model

The neural engine is based on RNNoise by Jean-Marc Valin and Xiph.Org, released under the BSD-3 licence. It is a small recurrent network that predicts a gain for each frequency band every 10 ms, from the noisy voice itself. There is no learning phase, so it follows noise that changes, like traffic or a fan speeding up. It runs entirely on the device; no audio leaves your iPad or iPhone.

How we measured

Material. 90 s of two real vocal takes as the clean reference, mixed with five noises at 10 dB and 0 dB signal-to-noise ratio: hiss; a fan with mains hum; keyboard-like clicks; traffic rumble with swells; and "babble", a crowd of six quiet voices.

Measures. Each output is aligned to the clean voice, then:

  • noise removed in pauses: how much quieter the output is than the input where the voice is silent;
  • voice damage: log-spectral distance to the clean voice in third-octave bands while singing (lower is better);
  • output SNR: signal-to-noise ratio of the whole output.

Results: Studio

Output SNR in dB, higher is better. The noisy input is 8.5 dB at the 10 dB setting and 2.1 dB at the 0 dB setting.

noise (10 dB / 0 dB input)classic, setting 50classic, setting 80neural
hiss10.8 / 2.711.0 / 2.816.9 / 11.3
fan + hum14.0 / 5.114.7 / 5.719.2 / 15.6
clicks9.2 / 2.19.2 / 2.019.0 / 15.6
traffic15.4 / 4.515.7 / 5.020.7 / 20.7
babble10.2 / 2.810.4 / 2.912.6 / 4.9

The neural engine also did less damage to the voice in 8 of 10 conditions. The exceptions: loud clicks at 0 dB, where it thinned the voice, and hiss at 0 dB, where the engines were close. The gap was largest on changing noise (traffic, clicks, fan), where a learned noise floor can't keep up.

Through the full plug-in with traffic at 0 dB SNR, the neural engine removed 39.9 dB in pauses.

Attack protection

Neural noise reduction has one weakness on vocals: it can open a frame late on a hard attack out of silence, and cut a plosive for a frame. On gated or heavily compressed vocals that is heard as a click. Because Clean's Studio engine already waits for the model, it can see 20 ms past the frame it plays, so it lets two kinds of sound through untouched:

  • a sound that starts: a frame that rises sharply and stays loud (not a click, not a slow swell);
  • a consonant next to singing: a frame close to voiced singing and well above the noise floor.

On a gated phonk vocal this cut the chopped onsets from 48 to 20. On the noise test everything else was unchanged.

Live mode: Neural 0 ms

A neural model needs whole frames of audio, which costs time a singer would hear. For Live mode we run the model on a side copy of the voice and let it steer a zero-latency filter bank instead:

  • the audio passes through a 24-band filter bank that adds no delay;
  • the model listens on its own thread and sets the band gains;
  • a pitch detector cuts everything below the voice's fundamental while you sing, which removes low rumble.

It removes 8–28 dB in pauses and damages the voice less than the classic Live engines, at a plug-in latency of 1.3 ms for the whole chain. It removes less than the Studio engine, because the filter bank is coarser than the model's own processing and the gains arrive a frame late.

Every session rate

The model runs at 48 kHz. At other rates Studio resamples the voice to 48 kHz, through the model and back; Live resamples only the copy the model listens to. On a real vocal (the Brad Sucks demo take, setting 100):

rateStudio latencyStudio voice / gapsLive latencyLive voice / gaps
44.1 kHz62.6 ms−1.4 / −17.9 dB1.4 ms−1.1 / −15.9 dB
48 kHz61.6 ms−1.4 / −17.9 dB1.3 ms−1.1 / −15.9 dB
96 kHz62.4 ms−1.3 / −17.7 dB1.3 ms−1.1 / −15.6 dB

Cost

The model runs on its own thread, so the host's audio thread, which is what DSP meters show, carries only the filtering. On an iPad Air M3 the whole plug-in with only Clean on uses 1.2 % of one core on the audio thread and 6.2 % in total. See CPU on iPad.

Limits

  • The model was trained on speech. Our singing tests passed, but they were dry, close-miked pop vocals. Long reverb tails and very breathy singing deserve more testing.
  • A plain synthetic tone with no real voice in it is treated as noise. Test with real vocals.
  • We have not yet run a side-by-side against desktop repair suites, and we don't claim one.

RNNoise is © Jean-Marc Valin, Xiph.Org Foundation, Mozilla and Amazon, under the BSD-3 licence; the full notice is on our credits page. Measured 7–8 November 2026.