https://github.com/digisoch/noise_remover-webapp
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.
https://github.com/digisoch/noise_remover-webapp
audio-processing ffmpeg-libraries noise-cancellation noisereduction noiseremoval python3
Last synced: 3 months ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/digisoch/noise_remover-webapp
- Owner: DigiSoch
- Created: 2024-12-18T08:31:57.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2025-01-24T07:04:29.000Z (4 months ago)
- Last Synced: 2025-02-17T20:39:38.584Z (3 months ago)
- Topics: audio-processing, ffmpeg-libraries, noise-cancellation, noisereduction, noiseremoval, python3
- Language: HTML
- Homepage:
- Size: 9.77 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Audio Noise Reducer
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.
## Features
- 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## Prerequisites
- Python 3.7+
- FFmpeg installed on the system
- Web browser with HTML5 audio support## Installation
1. 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
```2. Create and activate a virtual environment (recommended):
```bash
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
```3. Install the required Python packages:
```bash
pip install -r requirements.txt
```4. Install FFmpeg:
- **Ubuntu/Debian**:
```bash
sudo apt-get update
sudo apt-get install ffmpeg
```
- **Windows**: Download from [FFmpeg website](https://ffmpeg.org/download.html)
- **macOS**:
```bash
brew install ffmpeg
```## Configuration
1. Create an `uploads` directory in the project root:
```bash
mkdir uploads
```2. (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()`## Usage
1. Start the Flask server:
```bash
python app.py
```2. Open a web browser and navigate to:
```
http://localhost:5000
```3. 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## Technical Details
### Noise Reduction Algorithm
The application uses the Short-Time Fourier Transform (STFT) for spectral noise reduction:
1. Converts audio to frequency domain using STFT
2. Estimates noise profile from the first few frames
3. Creates and applies a spectral subtraction mask
4. Smooths the mask using median filtering
5. Converts back to time domain using inverse STFT### File Processing
- 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## API Endpoints
- `GET /`: Main application interface
- `POST /upload`: Upload and process audio file
- `GET /status/`: Get processing status
- `GET /download/`: Download processed file## Error Handling
- Invalid file types are rejected
- Processing errors are displayed in the UI
- Failed tasks are automatically cleaned up
- Temporary files are removed after processing## Security Features
- Secure filename handling
- File type validation
- Maximum file size limit
- CORS support for API access## Browser Compatibility
Tested and supported on:
- Chrome 80+
- Firefox 75+
- Safari 13+
- Edge 80+## Known Limitations
- 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## Contributing
1. Fork the repository
2. Create a feature branch
3. Commit your changes
4. Push to the branch
5. Create a Pull Request## Connect with me
- **Name:** Arvind Kumar
- **LinkedIn:** [LinkedIn Profile URL](https://www.linkedin.com/in/arvind-kumar-a8b591221/)
- **Email:** [Email](mailto:[email protected])## License
Feel free to use anywhere
## Acknowledgments
- FFmpeg for audio format conversion
- SciPy for signal processing
- Flask for web framework