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
| engine | noise removed in pauses | where it runs |
|---|---|---|
| Neural (Studio) | 37–40 dB on hiss, fan, clicks and traffic at 0–10 dB SNR; 21 dB on background voices | on the device, its own thread |
| Neural 0 ms (Live) | 8–28 dB, with less damage to the voice than the classic Live engines | on the device |
| Classic spectral (Studio) | 1.5–10 dB | on 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.
"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.

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 50 | classic, setting 80 | neural |
|---|---|---|---|
| hiss | 10.8 / 2.7 | 11.0 / 2.8 | 16.9 / 11.3 |
| fan + hum | 14.0 / 5.1 | 14.7 / 5.7 | 19.2 / 15.6 |
| clicks | 9.2 / 2.1 | 9.2 / 2.0 | 19.0 / 15.6 |
| traffic | 15.4 / 4.5 | 15.7 / 5.0 | 20.7 / 20.7 |
| babble | 10.2 / 2.8 | 10.4 / 2.9 | 12.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):
| rate | Studio latency | Studio voice / gaps | Live latency | Live voice / gaps |
|---|---|---|---|---|
| 44.1 kHz | 62.6 ms | −1.4 / −17.9 dB | 1.4 ms | −1.1 / −15.9 dB |
| 48 kHz | 61.6 ms | −1.4 / −17.9 dB | 1.3 ms | −1.1 / −15.9 dB |
| 96 kHz | 62.4 ms | −1.3 / −17.7 dB | 1.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.