Digital Signal Processing Project
Title: Implementation of Finite Impulse Response Filter (FIR) for Noise Reduction in Audio Signals
To reduce unwanted noise such as fan hum and white noise from .wav audio recordings using:
- A Band-pass FIR (Finite Impulse Response) Filter
- An Adaptive Wiener Filter
project-root/
├── resource/ # Contains input and output WAV files
├── main.py # Implements FIR filter using SciPy
├── we.py # Applies Wiener filter
└── README.md # This file
Audio was recorded in a noisy indoor environment and stored in .wav format for processing.
from scipy.io import wavfile
fs, audio = wavfile.read("resource/output.wav")A band-pass FIR filter was created using scipy.signal.firwin to pass frequencies between 1000 Hz and 5000 Hz:
from scipy.signal import firwin
fir_coeff = firwin(numtaps=301, cutoff=[1000, 5000], pass_zero=False)- Cutoff Frequencies: 1000 Hz – 5000 Hz
- Filter Length: 301 taps (longer filter = sharper cutoff)
The filter was applied using digital convolution (lfilter) to suppress low and high-frequency noise:
from scipy.signal import lfilter
filtered_audio = lfilter(fir_coeff, 1.0, audio)An adaptive Wiener filter was used to further reduce remaining white noise:
from scipy.signal import wiener
filtered_audio = wiener(filtered_audio, mysize=20)- Window size (
mysize): 20 (balance between noise smoothing and signal detail)
- Fan hum (low-frequency noise) and white noise (high-frequency hiss) were significantly reduced.
- Sharp band-pass between 1000–5000 Hz.
- Reduced low-frequency rumble and high-frequency noise outside the speech range.
- Adaptively smoothed the residual noise.
- Enhanced clarity by reducing hiss while preserving important signal features.
This project successfully demonstrated the practical use of classical DSP techniques — FIR filtering and Wiener filtering — for audio noise reduction using Python.
The combined filtering approach significantly improved audio clarity, making it useful for applications like speech enhancement, telecommunication preprocessing, and audio restoration.
- Oppenheim & Schafer — Discrete-Time Signal Processing
- R.G. Lyons — Understanding Digital Signal Processing
- SciPy Documentation:
scipy.signal.firwin - Stanford EE264 Lecture on Wiener Filtering
- MIT OCW — Signals, Systems and Inference (Chapter on Wiener Filtering)