Apprendimento profondo con spettrogrammi per il riconoscimento sonoro


12

Stavo esaminando la possibilità di classificare il suono (ad esempio i suoni degli animali) usando gli spettrogrammi. L'idea è quella di utilizzare una profonda rete neurale convoluzionale per riconoscere segmenti nello spettrogramma e produrre una (o molte) etichette di classe. Questa non è una nuova idea (vedi ad esempio la classificazione del suono delle balene o il riconoscimento dello stile musicale ).

Il problema che sto affrontando è che ho file audio di diversa lunghezza e quindi spettrogrammi di dimensioni diverse. Finora, ogni approccio che ho visto utilizza un campione audio di dimensioni fisse, ma non posso farlo perché il mio file audio potrebbe essere lungo 10 secondi o 2 minuti.

Con, ad esempio, un suono di uccello all'inizio e un suono di rana alla fine (l'output dovrebbe essere "Bird, Frog"). La mia attuale soluzione sarebbe quella di aggiungere un componente temporale alla rete neurale (creando più di una rete neurale ricorrente) ma per il momento vorrei mantenerlo semplice. Qualche idea, link, tutorial, ...?


1
Il modo più semplice è utilizzare un FFT a lunghezza fissa anziché uno STFT (spettrogramma). Ciò eliminerà il tuo problema di lunghezza variabile. Perché non applichi semplicemente una rete neurale ricorrente? Hai solo bisogno di un esempio funzionante? In tal caso, sei flessibile su quale software utilizzare?
Emre,

1
Penso che perderei molte informazioni con una FFT a lunghezza fissa. Se lo facessi, penso che dovrei prima fare una segmentazione, dove cerco parti "interessanti". Potrei farlo o andare alle reti neurali ricorrenti (un esempio è bello ma non super necessario, volevo usare Lasagne). Il motivo per cui ho cercato di evitarlo è che l'output di una rete neurale ricorrente è più difficile da gestire (ad ogni passaggio ma ho solo le etichette per l'intero file). Quindi volevo iniziare con il modello più semplice e gradualmente renderlo più complesso.
user667804

potresti per favore dire cosa hai finito usando e il miglior approccio che hai trovato? @ user667804
nia,

Dai un'occhiata a questo documento per una soluzione: ceur-ws.org/Vol-1609/16090547.pdf Usare una CNN su blocchi di dimensioni fisse dello spettrogramma e quindi fare la media degli output per generare una previsione finale (la media degli output individuali sembra funzionare migliore).
user667804,

Risposte:


4

Per il riconoscimento vocale automatico (ASR), le caratteristiche del banco di filtri funzionano come la CNN sugli spettrogrammi Tabella 1 . È possibile addestrare un sistema DBN-DNN su fbank per classificare i suoni degli animali.

In pratica le espressioni vocali più lunghe sono divise in espressioni più brevi poiché la decodifica di Viterbi non funziona bene per espressioni più lunghe. Potresti fare lo stesso.

Puoi dividere le espressioni più lunghe in espressioni più piccole di lunghezza fissa. Dividere le espressioni più lunghe in più piccole è facile. Il problema sorge nell'aumentare la lunghezza delle espressioni più piccole per raggiungere la lunghezza fissa.

È possibile deformare l'asse di frequenza dello spettrogramma per aumentare le espressioni più piccole. È stato dimostrato che questo aumento dei dati migliora l'ottimizzazione dei dati sulle prestazioni ASR .

Per una frase più lunga con più suoni, puoi usare gli algoritmi di segmentazione della musica per dividerla in più frasi. Queste espressioni possono essere fatte di lunghezza fissa o per divisione o aumento.


4

Le RNN non stavano producendo risultati abbastanza buoni e sono anche difficili da addestrare, quindi sono andato con le CNN.

Poiché un suono animale specifico dura solo pochi secondi, possiamo dividere lo spettrogramma in pezzi. Ho usato una durata di 3 secondi. Quindi eseguiamo la classificazione su ogni blocco e calcoliamo la media degli output per creare una singola previsione per file audio. Funziona davvero bene ed è anche semplice da implementare.

Una spiegazione più approfondita è disponibile qui: http://ceur-ws.org/Vol-1609/16090547.pdf

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.