Riduzione del rumore da audio molto rumoroso


8

Sto cercando di scrivere un algoritmo che segmenterebbe automaticamente un pezzo di audio con le registrazioni delle chiamate degli uccelli. I miei dati di input sono file wave di 1 minuto e sull'output vorrei ricevere chiamate separate per ulteriori analisi. Il problema è che il rapporto segnale-rumore è piuttosto terribile a causa delle condizioni ambientali e della scarsa qualità di un microfono (campionamento mono, 8 kHz).

Sarei molto grato per qualsiasi consiglio su come procedere ulteriormente con la riduzione del rumore.

Ecco un esempio del mio input, un minuto di registrazione audio in formato wave: http://goo.gl/16fG8P

Ecco come appare il segnale:

Il mio segnale di ingresso (8 kHz).  Le aree contrassegnate indicano le chiamate degli uccelli

Il filtro passa-banda, in cui mantengo solo qualsiasi cosa tra 1500 e 2500 Hz, migliora la situazione, ma è ancora lontano dalle aspettative. In questo spettro è ancora presente molto rumore.

spettrogramma

Ho anche tracciato un'energia media a lungo termine (oltre 32 campioni) e rimosso alcuni clic da essa. Ecco il risultato:

Energia media a lungo termine

Con tutto il rumore rimanente devo impostare una soglia molto bassa per l'algoritmo di rilevazione dell'insorgenza per selezionare gli ultimi 10 secondi di chiamate degli uccelli. Il problema è che se lo modifico in modo tale che nella prossima registrazione riesco a caricare carichi di falsi positivi.

Il filtro della media mobile aiuta un po 'con il rumore del vento. Altre idee? Stavo pensando a "Sottrazione spettrale", ma qui mi sembra di avere una sorta di problema con le galline e le uova: per trovare un'area solo rumorosa devo segmentare l'audio e segmentare l'audio che devo rimuovere. Conosci delle librerie che hanno questo algoritmo o alcune implementazioni in pseudo-codice? Pensa che Audacity utilizza un tale metodo per rimuovere il rumore. È molto efficace, ma è lasciato all'utente per contrassegnare l'area solo rumore.

Sto scrivendo in Python ed è un progetto open source gratuito.

Grazie per aver letto!


Benvenuti in DSP.SE. Questa è una domanda fantastica! Spero che tu possa ottenere qualche buon vantaggio qui.
Phonon,

@Lukasz Tracewski Rispetto signore: Anche se è troppo tardi, ma sto lavorando allo stesso progetto, quindi sto avendo problemi come come posso fare lo spettrogramma da file wav. Puoi risparmiare il mio ulteriore tempo mentre sto cercando di risolvere questo problema negli ultimi 2 mesi. Grazie in anticipo. Qualsiasi hel sarebbe molto apprezzato
Mubeen Khan,

@MubeenKhan Vuoi dire aiuto con la produzione di spettrogramma da un file audio? Ci sono dozzine di strumenti e librerie adatti allo scopo, hai bisogno di qualche consiglio? Oppure stai chiedendo di ridurre il rumore?
Lukasz Tracewski,

Risposte:


4

Alla fine, quella che si è rivelata la migliore soluzione è stata la rilevazione di insorgenza basata sull'alta frequenza o sul contenuto energetico. Prima che potesse funzionare dovevo usare il filtro passa-alto per eliminare i primi 1 kHz, poiché conteneva troppo rumore.

Una volta che avevo un'area di solo rumore ho potuto usare il suo profilo per ridurre il rumore dal resto del campione.

Una biblioteca che ho trovato particolarmente utile era Aubio . Ha una buona serie di esempi e fornisce molti algoritmi tra cui scegliere per il rilevamento dell'insorgenza.


0

Non so molto della riduzione del rumore audio ma dopo una sottrazione del rumore veloce e sporca dalla banda passante filtrata (circa 1500-3000 hz) ottengo questo:

https://dl.dropboxusercontent.com/u/98395391/signal_denoised.wav

Penso che suoni un po 'meglio dei segnali filtrati e originali.

Con un semplice filtro Wiener ottengo risultati molto simili.


A meno che non ti abbia frainteso, sembra che ti stia riferendo a qualcosa che ho già fatto nel secondo paragrafo della mia domanda (appena sotto il primo grafico). Con il metodo descritto nella mia risposta sono stato in grado di trovare tutti gli insiemi e quindi applicare la sottrazione spettrale, che dà risultati ancora migliori. Purtroppo produce anche i cosiddetti "toni musicali", che ora sono la mia preoccupazione principale. Grazie comunque!
Lukasz Tracewski,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.