Signalverarbeitung Fallstudie: Das Entfernen der Bad, halten das Gute

Simulieren Optionen a, b, und c durch eine Sprachdatei von einer männlichen Stimme Lesung Phrasen. Die Datei gibt die Simulation als WAV-Datei:

bild0.jpg
Im [685]: Fs, s = ssd.from_wav ( 'OSR_us_000_0030_8k.wav')

Sie können die Kombination SOI + SNOI erzeugen, indem Sie eine benutzerdefinierte Funktion, die r die s Spracheingabe gegeben zurück, das Signal-zu-Interferenz-Verhältnis (SIR) in dB - # 956- = 0,005 10log10(SIR) - die Anzahl der Abtastungen zu verarbeiten, wird ein Array von Störfrequenzen, und die Abtastrate.

r = soi_snoi_gen (s, SIR_dB, N, fi, fs = 8000)

In diesem Fall wird SIR bei -10 dB festgelegt, was bedeutet, dass die Leistung in der SNOI 10mal die Leistung des SOI! Sinusoide bei 1.000 und 600 Hz werden in die Ohren schreien, wenn Sie versuchen, jemanden zu hören, wie angenehm zu Sie- reden ist das?

Das FIR und IIR-Filter-Prozess r an der IPython Befehlszeile durch die SciPy Funktion signal.lfilter (b, a, r). Sie können dann mithilfe der folgenden benutzerdefinierten Funktion das adaptive Filter implementieren:

n, r, r_hat, e,ao,F,Ao = Lms_ic (r, M,mu,delta = 1)

Diese Funktion gibt eine große Anzahl von ndarrays:

  • e, das Fehlersignal, e[n] ist auch

    image1.jpg
  • Das Array ao ist der letzte Satz von Filterkoeffizienten.

  • F ein Frequenzfeld wird verwendet, um die Filterfrequenzgang Betrag in dB zu zeichnen, fand in Ao.

Sie können eine Kombination im Frequenzbereich und Zeitbereich-Ansicht über die bekommen Spektogramm. Die Spektrogramm zeichnet die kurzfristig spektraler Schätzung des Signals vertikal über der Zeit. Helle Farben zeigen spektrale Intensität oder Höhe über dem Hintergrund.

Die Figur besteht aus drei Handlungsstränge: s[n] Überlagert mit r[n] Bei -10 dB SIR (Abbildung a),

image2.jpg

das Ausgangssignal des Kerb cascade IIR durch Verwendung r = 0,95 für beide Abschnitte (Abbildung b) und Spektrogramm Plots der IIR Kerbe Kaskadenausgang (Abbildung c).

Die SNOI ist mächtig, wenn in der Zeitdomäne (Abbildung a) betrachtet. Abbildung b zeigt, dass die Kaskade von IIR Notch-Filter führt eine saubere Exzision der beiden SNOI Töne. Das Spektrogramm (Abbildung c) bestätigt, was im Frequenzbereich passiert. Die IIR Kerbe entfernt nur eine sehr schmale Schneise der Frequenzen, wodurch die SOI verlassen weitgehend intakt.

Sie können die Simulationsausgabe von Python als WAV-Dateien exportieren, indem Sie ssd.to_wav ( 'test_FIR_IIR.wav', fs, s_hat). Ein Hörtest ist viel besser als das, was ich mit Grafiken in diesem Buch zu tun, so einige Experimente auf eigene Faust versuchen.

Die folgende Abbildung stellt sowohl Zeit- und Frequenzbereichs-Ergebnisse für das adaptive Filter, die als ein formal bekannt ist adaptive Interferenzlöscher(AIC). Die Parzellen für (a) und (c) zeigen die bemerkenswerte Fähigkeit der AIC-Koeffizienten zu schnell konvergieren zu filtern, die die SNOI der 1.000- und 600-Hz-Töne zu entfernen.

der Parameter # 956- wurde auf 0,001 reduziert den Konvergenzprozess zu verlangsamen und es in der Handlung der Figur eine sichtbar zu machen. Das Spektrogramm Diagramms von c zeigt die kurze Blip von SNOI Töne dann Konvergenz und Ton Exzision.

Hören ist der endgültige Beweis. Der Python-Code ist in dem Modul ssd.py. Die Sprachdatei OSR_us_000_0030_8k.wav ist ebenfalls verfügbar. Finden beide online.

Menü