Inspiration
The challenged proposed by the Industry Masons Team inspired us to tackle this challenge.
What it does
Cleans the background noise for elephant noises.
How we built it
We began with deliberating ideas on how to approach cleaning the data. First we discussed possible ideas for isolating data using CNNs and customs Neural Networks but ultimately ended up choosing a more simple solution that involved Short Time Fourier Transform and spectral subtraction. We decided on frameworks to show our results for the project. After deliberation a python framework that used libraries to clean the data. This made up the majority of data processing and visualization. Then connecting this data to a python frontend called Streamlit. We first faced the challenge of structuring our filesystem using AI models to help us plan the structure of the codebase. We then planned how we would create a pipeline to clean the data, map the audio wav files to spectrogram images, estimate the noise, use spectral subtraction and then compare the new spectral image to the original. Splitting these task up we used GitHub to manage files between both of us, then we merged our branches and iterated many times. Added vertical line boundaries that noted call start and call end. The main problem was the subtraction spectrogram logic. We then change the subtraction was applied over time not just tweaking parameter values, adjusting the rate.
Challenges we ran into
One of the biggest challenges we was separating elephant rumbles from mechanical background noise without removing parts of the elephant call itself. Because both the noise and the rumble can occupy overlapping low-frequency bands, simple spectral subtraction often became too aggressive and wiped out useful signal along with the noise. We also had to figure out how to align annotations, raw audio files, and reference spectrograms into one clean pipeline before we could even start tuning the denoising.
Another challenge was choosing how to estimate the noise profile. We tested pre-call, post-call, and combined noise windows, and found that different choices produced noticeably different results. SO\o me modes reduced noise more, but also created over-suppression artifacts or removed too much of the rumble structure.
Accomplishments that we're proud of
We were able to reduce the static and background noise without training large models.
What we learned
We learned that good audio cleaning is a balance between noise reduction and signal preservation, not just making the spectrogram darker. Through iterative testing, we found that preserving the low-frequency rumble harmonics was just as important as suppressing higher-frequency background noise, which led us to add frequency-aware subtraction and compare different noise-estimation strategies.
We also learned the importance of visualization in debugging signal-processing systems. By comparing before/after spectrograms, plotting noise profiles, and testing multiple denoising, we were able to see exactly where the algorithms was over over-suppressing and make more informed improvements instead of guessing.
What's next for Elephant Voices Matter
After seeing how our cleaning method was effective we would like to iterate on the project making the noise of the elephants more smooth.
Built With
- codex
- copilot
- python
- streamlit
Log in or sign up for Devpost to join the conversation.