A web-based application that reduces background noise from audio files using spectral noise reduction techniques. The application provides a user-friendly interface for uploading audio files, adjusting noise reduction parameters, and downloading the processed results.
- Upload audio files in multiple formats (WAV, MP3, OGG, FLAC, M4A)
- Adjustable noise reduction strength (0.1 - 6.0)
- Real-time processing progress indication
- Audio preview player with playback controls
- Multiple output format options (WAV, MP3, OGG, FLAC)
- Download processed audio files
- Python 3.7+
- FFmpeg installed on the system
- Web browser with HTML5 audio support
- Clone the repository:
git clone [https://github.com/arvind-git-code/noise_remover-webapp.git](https://github.com/arvind-git-code/noise_remover-webapp.git)
cd audio-noise-reducer
- Create and activate a virtual environment (recommended):
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- Install the required Python packages:
pip install -r requirements.txt
- Install FFmpeg:
- Ubuntu/Debian:
sudo apt-get update sudo apt-get install ffmpeg
- Windows: Download from FFmpeg website
- macOS:
brew install ffmpeg
- Create an
uploads
directory in the project root:
mkdir uploads
- (Optional) Adjust the following settings in
app.py
:
MAX_CONTENT_LENGTH
: Maximum upload file size (default: 500MB)SECRET_KEY
: Flask application secret key- Server host and port in
app.run()
- Start the Flask server:
python app.py
- Open a web browser and navigate to:
http://localhost:5000
- Using the application:
- Click "Choose File" to select an audio file
- Adjust the noise reduction strength slider (higher values = stronger reduction)
- Select desired output format
- Click "Process Audio" to start noise reduction
- Wait for processing to complete
- Preview the processed audio using the built-in player
- Click "Download" to save the processed file
The application uses the Short-Time Fourier Transform (STFT) for spectral noise reduction:
- Converts audio to frequency domain using STFT
- Estimates noise profile from the first few frames
- Creates and applies a spectral subtraction mask
- Smooths the mask using median filtering
- Converts back to time domain using inverse STFT
- Input files are automatically converted to WAV format for processing
- Supports mono and stereo audio (stereo is converted to mono)
- Audio is normalized before processing
- Processed files are converted to the selected output format using FFmpeg
GET /
: Main application interfacePOST /upload
: Upload and process audio fileGET /status/<task_id>
: Get processing statusGET /download/<task_id>
: Download processed file
- Invalid file types are rejected
- Processing errors are displayed in the UI
- Failed tasks are automatically cleaned up
- Temporary files are removed after processing
- Secure filename handling
- File type validation
- Maximum file size limit
- CORS support for API access
Tested and supported on:
- Chrome 80+
- Firefox 75+
- Safari 13+
- Edge 80+
- Large files may take significant time to process
- Processing is CPU-intensive
- Memory usage scales with file size
- Browser audio preview may not support all formats
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
- Name: Arvind Kumar
- LinkedIn: LinkedIn Profile URL
- Email: Email
Feel free to use anywhere
- FFmpeg for audio format conversion
- SciPy for signal processing
- Flask for web framework