Skip to content

PaxonicYT/audio-denoising-matlab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Audio Denoising

Ein MATLAB-Projekt zur Rauschunterdrückung in Audiosignalen mit verschiedenen Filterverfahren.

Übersicht

Dieses Projekt implementiert verschiedene Algorithmen zur Rauschunterdrückung in Audiosignalen:

  • Fourier-Filter: Frequenzbereichsfilterung mit verschiedenen Strategien
  • Wavelet-Filter: Multiskalenanalyse mit Schwellwertverfahren
  • Wiener-Filter: Statistisches Optimalfilter basierend auf Rauschcharakteristiken

Projektstruktur

audio-denoising/
├── src/
│   ├── main_denoising.m          # Hauptskript
│   ├── fourier_filter.m          # Fourier-basierte Filter
│   ├── wavelet_filter.m          # Wavelet-basierte Filter
│   ├── wiener_filter.m           # Wiener-Filter
│   ├── noise_generator.m         # Rauschgenerator
│   └── audio_utils.m             # Hilfsfunktionen
├── README.md
└── LICENSE

Funktionen

1. Fourier-Filter (fourier_filter.m)

  • Tiefpassfilter: Entfernt hochfrequente Störungen
  • Spektrale Subtraktion: Reduziert Rauschen basierend auf Rauschspektrum
  • Adaptive Filterung: Anpassung an lokale Signaleigenschaften

2. Wavelet-Filter (wavelet_filter.m)

  • Soft/Hard Thresholding: Verschiedene Schwellwertverfahren
  • Multiskalenanalyse: Filterung auf verschiedenen Auflösungsebenen
  • Wavelet-Auswahl: Verschiedene Wavelets (Daubechies, Biorthogonal, etc.)

3. Wiener-Filter (wiener_filter.m)

  • Klassisches Wiener-Filter: Statistisch optimale Filterung
  • Adaptives Wiener-Filter: Anpassung an lokale Statistiken
  • Rauschschätzung: Automatische Rauschparameterbestimmung

Installation und Verwendung

Voraussetzungen

  • MATLAB R2018b oder neuer
  • Signal Processing Toolbox
  • Wavelet Toolbox (für Wavelet-Filter)

Schnellstart

  1. Projekt herunterladen:

    git clone https://github.com/PaxonicYT/audio-denoising-matlab.git
    cd audio-denoising-matlab
  2. MATLAB starten und zum Projektordner navigieren

  3. Hauptskript ausführen:

    cd src
    main_denoising

Beispiele

Sprachreinigung:

cd examples
demo_speech

Musikreinigung:

cd examples
demo_music

Verwendung der Filter

Fourier-Filter

% Beispiel: Tiefpassfilter
filtered_signal = fourier_filter(noisy_signal, fs, 'lowpass', 4000);

% Beispiel: Spektrale Subtraktion
filtered_signal = fourier_filter(noisy_signal, fs, 'spectral_subtraction', noise_estimate);

Wavelet-Filter

% Beispiel: Soft Thresholding mit Daubechies Wavelet
filtered_signal = wavelet_filter(noisy_signal, 'db4', 'soft', 0.1);

% Beispiel: Adaptive Schwellwertbestimmung
filtered_signal = wavelet_filter(noisy_signal, 'db8', 'adaptive');

Wiener-Filter

% Beispiel: Klassisches Wiener-Filter
filtered_signal = wiener_filter(noisy_signal, noise_power, signal_power);

% Beispiel: Adaptives Wiener-Filter
filtered_signal = wiener_filter(noisy_signal, 'adaptive', 'frame_length', 1024);

Parameter und Konfiguration

Allgemeine Parameter

  • fs: Sampling-Frequenz
  • frame_length: Rahmenlänge für blockweise Verarbeitung
  • overlap: Überlappung zwischen Rahmen

Fourier-Filter Parameter

  • cutoff_freq: Grenzfrequenz für Tiefpassfilter
  • alpha: Subtraktionsfaktor für spektrale Subtraktion
  • beta: Übersubtraktionsfaktor

Wavelet-Filter Parameter

  • wavelet: Wavelet-Typ ('db4', 'db8', 'bior4.4', etc.)
  • threshold_method: 'soft', 'hard', oder 'adaptive'
  • threshold_value: Schwellwert (falls nicht adaptiv)
  • levels: Anzahl der Decomposition-Level

Wiener-Filter Parameter

  • noise_power: Rauschleistung (falls bekannt)
  • signal_power: Signalleistung (falls bekannt)
  • estimation_method: 'manual', 'adaptive', oder 'vad'

Bewertungsmetriken

Das Projekt berechnet automatisch folgende Qualitätsmetriken:

  • SNR (Signal-to-Noise Ratio): Verhältnis von Signal zu Rauschen
  • PESQ: Perceptual Evaluation of Speech Quality
  • STOI: Short-Time Objective Intelligibility
  • Spektrale Distanz: Frequenzbereichs-Ähnlichkeit

Beispiel-Output

=== Audio Denoising Results ===
Original SNR: 5.2 dB
Fourier Filter SNR: 12.8 dB (Improvement: 7.6 dB)
Wavelet Filter SNR: 14.1 dB (Improvement: 8.9 dB)
Wiener Filter SNR: 15.3 dB (Improvement: 10.1 dB)

Processing time: 2.3 seconds

Erweiterte Funktionen

Batch-Verarbeitung

% Verarbeitung mehrerer Dateien
batch_process('input_folder/', 'output_folder/', 'wiener');

Echtzeitverarbeitung

% Streaming-Verarbeitung
realtime_denoising('input_device', 'output_device', 'wavelet');

Visualisierung

  • Spektrogramm-Vergleiche
  • Wavelet-Koeffizienten-Darstellung
  • Filter-Frequenzgänge
  • SNR-Verlauf über Zeit

Tipps zur Optimierung

  1. Rauschtyp bestimmen: Verschiedene Filter funktionieren besser für verschiedene Rauschtypen
  2. Parameter anpassen: Experimentieren Sie mit verschiedenen Parametern für Ihre spezifischen Audiosignale
  3. Kombinierte Ansätze: Versuchen Sie, verschiedene Filter in Kaskade zu schalten
  4. Preprocessing: Normalisierung und Vorfilterung können die Ergebnisse verbessern

Troubleshooting

Häufige Probleme

  • Überfilterung: Zu aggressive Parameter können das Signal verzerren
  • Artefakte: Blockweise Verarbeitung kann zu Discontinuitäten führen
  • Performance: Große Dateien benötigen mehr Speicher und Rechenzeit

Lösungsansätze

  • Verwenden Sie Overlap-Add-Methoden für blockweise Verarbeitung
  • Experimentieren Sie mit verschiedenen Fensterfunktionen
  • Implementieren Sie progressive Verarbeitung für große Dateien

Beiträge und Entwicklung

Beiträge sind willkommen! Bitte beachten Sie:

  1. Code-Dokumentation auf Deutsch oder Englisch
  2. Einheitliche Codierungsstandards
  3. Testen Sie neue Features mit verschiedenen Audiotypen
  4. Aktualisieren Sie die Dokumentation entsprechend

Lizenz

MIT License - siehe LICENSE-Datei für Details.

Kontakt

Bei Fragen oder Problemen erstellen Sie bitte ein Issue auf GitHub.


Hinweis: Dieses Projekt ist für Bildungszwecke und Forschung gedacht. Für kommerzielle Anwendungen beachten Sie bitte die entsprechenden Lizenzbestimmungen der verwendeten Algorithmen.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages