Smart India Hackathon 2026 PS SIH26052

Adaptive Noise Cancellation

Real-time AI noise cancellation for defence radio. Gunfire, engines and rotor wash are stripped from the channel on a Raspberry Pi 5, so an order is heard the first time.

Prototype running Last updated 13 Oct 2026 Source code on GitHub ↗
Noisy channel inClean speech out

Watch it work

Press play for sound

Recorded on the prototype: a noisy channel going in, the cleaned speech coming out.

Rather listen? The same recording, audio only.

From the video

Noisy input

Spectrogram of the noisy input: broadband noise covers every frequency for the whole eight seconds, with bright vertical streaks from impulsive bangs.
0:00 / 0:08
From the video

Enhanced output

Spectrogram of the enhanced output on the same colour scale: the background noise is gone, leaving the stacked horizontal harmonics of the voice and dark gaps where no one is speaking.
0:00 / 0:08

In each spectrogram, brightness is loudness at each pitch over time, low pitches at the bottom. Both use one shared scale, so darker really means quieter. Noise fills the whole Noisy input picture; after the model, what is left is the voice (the stacked horizontal lines are its harmonics), with the pauses gone dark. The black strip along the top edge of both is the phone's audio compression, not the model.

Hear the difference

Held-out test clip
Before

Noisy radio channel

0:00 / 0:09
After

Enhanced by our model

0:00 / 0:09

Three held-out test recordings joined end to end, so the noise switches from a helicopter louder than the speech itself, to an engine, to rifle fire. None of it was used in training. On this clip PESQ rises from 1.19 to 2.06, one of the best of our eight demo clips; across all eight the gain runs from +0.39 to +0.87.

How it works

Swipe through each flow

How the model is trained, and how that same trained model runs live on a Raspberry Pi. Every picture is a real spectrogram from this project: time runs left to right, pitch bottom to top, brighter is louder.

Swipe, or use the arrow keys

Training example: an English training clip with an assault-rifle clip mixed in at 5 dB, run through the shipped model (run 0036). On the Pi: the recording from the demo video.

Where the numbers stand

125 held-out mixtures
STOI · intelligibility 0.866
target 0.85Met
PESQ · quality 1.990
target 2.5 of 4.5Closing
SI-SNR · separation 13.95dB
target 15 dBClosing
Pi 5 · per chunk 69.7ms
budget 100 msInside

Prototype figures, not final ones. The ceiling above them is already measured at PESQ 3.389. Ahead of DeepFilterNet v0.5.6 on the same held-out set, on all three metrics.

From the bench

2 items

Progress notes

Newest first
  1. Result

    Ahead of DeepFilterNet v0.5.6 on our own 125-clip held-out set, on PESQ, STOI and SI-SNR at once.

  2. Hardware

    The two-stage model runs on a Raspberry Pi 5 at 69.7 ms per 100 ms chunk, int8, no GPU.

  3. Training

    36 logged training runs. Two changes moved quality: a perceptual loss, and an additive second stage that restores what a mask removes.

  4. Next

    DCCRN, toward the PESQ 3.389 ceiling our ideal-mask test measured.

Source code

The model, training and evaluation code, every training run's record, and the Raspberry Pi deployment kit. Audio datasets are not included.

github.com/lochan28/Audiophiles_Repo ↗