Questo repository implementa un sistema di denoising audio musicale tramite Deep Learning, seguendo la metodologia Noise2Noise: l’addestramento avviene esclusivamente con segnali rumorosi, senza la necessità di dati puliti come target.
L’obiettivo è dimostrare che è possibile addestrare una rete neurale profonda (Deep Complex U-Net a 20 livelli) direttamente su dati musicali rumorosi per la riduzione del rumore, superando i limiti dei metodi basati su speech o dati puliti, e di validarne le prestazioni e la pipeline di ricerca.
- Creare un ambiente Python ≥ 3.8 (si consiglia l’uso di
venvoconda). - Installare i pacchetti richiesti:
pip install -r requirements.txt
- Dataset utilizzati: UrbanSound8k, musdb18
- Dataset generati
python merger.py --path-songs <dir_canzoni> --path-noises <dir_rumori> --iter-songs <num_canzoni> --iter-noise <num_rumori_per_canzone> --use-cuda --input-dir <dir_output_input> --target-dir <dir_output_target>
--path-songs: Directory delle canzoni in formato MP4.--path-noises: Directory contenente file di rumore WAV, suddivisi in sottocartellefold1, ..., fold10.--iter-songs: Numero massimo di canzoni da processare.--iter-noise: Numero massimo di coppie di rumori da sovrapporre per ogni canzone.--use-cuda: Flag opzionale per usare la GPU CUDA, se disponibile.--input-dir: Directory dove salvare i file audio di input (canzone + rumore1).--target-dir: Directory dove salvare i file target (canzone + rumore2 o canzone pulita).
python merger_class.py --class-num <numero_categoria> --path-canzoni <dir_canzoni> --path-rumori <dir_rumori> --iter-songs <num_canzoni> --iter-noise <num_rumori_per_canzone> --use-cuda --input-dir <dir_output_input> --target-dir <dir_output_target>
--class-num: Numero intero della categoria rumore (0–9) da includere.--path-songs: Directory delle canzoni musdb18.--path-noises: Directory dei rumori UrbanSound8K.--iter-songs: Numero massimo di canzoni da usare.--iter-noise: Numero massimo di rumori da sovrapporre per canzone.--use-cuda: Usa GPU CUDA se disponibile.--input-dir: Directory output per i file INPUT.--target-dir: Directory output per i file TARGET.
python merger_mixed_white.py --path-songs <dir_canzoni> --path-noises <dir_rumori> --iter-songs <num_canzoni> --iter-noise <num_rumori_per_canzone> --use-cuda --input-dir <dir_output_input> --target-dir <dir_output_target>
--path-songs: Directory delle canzoni.--path-noises: Directory contenente file di rumore WAV (UrbanSound8K).--iter-songs: Numero di canzoni da elaborare.--iter-noise: Numero di coppie di rumori per canzone.--use-cuda: Usa GPU CUDA se disponibile.--input-dir: Directory output per file INPUT.--target-dir: Directory output per file TARGET.
python merger_white.py --path-songs <dir_canzoni> --iter-songs <num_canzoni> --iter-white-noise <num_rumori_bianchi_per_canzone> --use-cuda --input-dir <dir_output_input> --target-dir <dir_output_target>
--path-songs: Directory delle canzoni (MP4).--iter-songs: Numero di canzoni da elaborare.--iter-white-noise: Numero di coppie di rumore bianco per canzone.--use-cuda: Usa GPU CUDA se disponibile.--input-dir: Directory per i file INPUT.--target-dir: Directory per i file TARGET.
python correlation.py <path_audio1> <path_audio2> <output_file>
<path_audio1>: Prima directory contenente file audio WAV.<path_audio2>: Seconda directory contenente file audio WAV.<output_file>: File di output con i risultati dell’analisi.
Per allenare un modello è disponibile il notebook NoiseRemover.ipynb.
È necessario generare prima un dataset (singola classe, rumore bianco o mixed) e segmentarlo con il notebook generate_best_segments.ipynb. Questo notebook prende tutti i brani del dataset e salva in una cartella i segmenti che ottimizzano correlazione e diversità spettrale, così da poterli usare come nuovo dataset.
- Windows: impostare
soundfilecome backend Torchaudio. - Linux: impostare
soxcome backend Torchaudio.
Vengono salvati nella directory Weights i pesi (.pth) relativi all'epoca con miglioramento ottimale del SNR.
Abbiamo addestrato il modello per tutte le 10 classi di UrbanSound8K (0–9) e per il rumore bianco gaussiano.
Tutti i pesi sono disponibili in pretrained_weights.
Nel notebook NoiseRemover.ipynb, selezionare il file .pth da utilizzare.
Verranno calcolate metriche di qualità audio e i risultati saranno salvati nella directory Samples.
Utilizzare il notebook denoising_entire_song.ipynb, modificando le costanti iniziali:
MODEL_PATH→ percorso ai pesi del modello da usareINPUT_AUDIO_PATH→ audio in ingressoOUTPUT_AUDIO_PATH→ audio in uscita
Sample 10 ![]() |
sample_010_clean.mp4 |
sample_010_noisy.mp4 |
|
sample_010_denoised.mp4 |
Sample 348 ![]() |
sample_348_clean.mp4 |
sample_348_noisy.mp4 |
|
sample_348_denoised.mp4 |
Sample 1000 ![]() |
sample_1000_clean.mp4 |
sample_1000_noisy.mp4 |
|
sample_1000_denoised.mp4 |
Sample 10 ![]() |
sample_010_clean.mp4 |
sample_010_noisy.mp4 |
|
sample_010_denoised.mp4 |
Sample 348 ![]() |
sample_348_clean.mp4 |
sample_348_noisy.mp4 |
|
sample_348_denoised.mp4 |
Sample 1000 ![]() |
sample_1000_clean.mp4 |
sample_1000_noisy.mp4 |
|
sample_1000_denoised.mp4 |
- J. Allen. Short term spectral analysis, synthesis, and modification by discrete Fourier transform. IEEE Transactions on Acoustics, Speech, and Signal Processing, 25(3):235–238, 1977.
- H.-S. Choi, J.-H. Kim, J. Huh, A. Kim, J.-W. Ha, and K. Lee. Phase-aware speech enhancement with deep complex U-Net, 2019.
- X. Glorot and Y. Bengio. Understanding the difficulty of training deep feedforward neural networks. AISTATS, 2010.
- M. M. Kashyap et al. Speech denoising without clean training data: A Noise2Noise approach. Interspeech 2021. https://github.com/madhavmk/Noise2Noise-audio_denoising_without_clean_training_data
- Z. Lai et al. Rethinking skip connections in encoder-decoder networks for monocular depth estimation, 2022.
- Y. LeCun, Y. Bengio, G. Hinton. Deep learning. Nature, 2015.
- J. Lehtinen et al. Noise2Noise: Learning image restoration without clean data, 2018.
- Z. Rafii et al. The MUSDB18 corpus for music separation, 2017. https://sigsep.github.io/datasets/musdb.html
- O. Ronneberger, P. Fischer, T. Brox. U-Net: Convolutional networks for biomedical image segmentation, 2015.
- J. Salamon et al. A dataset and taxonomy for urban sound research. ACM Multimedia, 2014. https://urbansounddataset.weebly.com/urbansound8k.html
- C. Trabelsi et al. Deep complex networks, 2018.









