Non riesco a separare i segnali audio di FastICA sulla registrazione del mondo reale


12

Ho scritto un programma per eseguire FastICA su un file WAV stereo usando il codice sull'esempio FastICA di Python MDP

Con gli esempi audio ottengo ottimi risultati.

Quindi provo a registrare il mondo reale usando due microfoni mono per computer collegati al microfono stereo del mio PC collegando il microfono 1 al canale L e il microfono 2 al canale R. Provo suonando un po 'di musica in sottofondo mentre parlo in una stanza tranquilla.

Tuttavia, l'esecuzione di FastICA non separa affatto i segnali. È possibile che la qualità dei microfoni sia troppo scarsa? Devo fare qualcosa per il file WAV registrato (16 bit, firmato PCM, 44100Hz) prima di eseguire FastICA?

Puoi scaricare la registrazione qui .

Risposte:


11

L'ICA in forma grezza è adatta solo per l'uso con miscele di osservazione sincronizzate di fase. L'uso dei microfoni come descritto introduce un ritardo di fase, come sottolineato da altri poster. Tuttavia, questo ritardo di fase può essere utilizzato con grande successo. L'algoritmo più noto che si occupa della separazione stereo in presenza di ritardi è DUET. I collegamenti sono interrotti ma i riferimenti che stai cercando sono qui> http://eleceng.ucd.ie/~srickard/bss.html.

Questo è il documento che dovresti cercare>
A. Jourjine, S. Rickard e O. Yilmaz, Blind Separation of Disjoint Orthogonal Signals: Demixing N Sources from 2 Mixes, IEEE Conference on Acoustics, Speech and and Signal Processing (ICASSP2000), Volume 5, pagine 2985-2988, Istanbul, Turchia, giugno 2000


2
Una domanda: se i mix provengono da più di un microfono spazialmente separato ... allora come possiamo mai avere sincronicità di fase? ... In tutti i testi che vedo questo esempio di microfoni multipli viene usato in modo onnipresente, ma se la sincronicità di fase è un tale problema perché non è menzionato? Sto solo cercando di capire qui, sono nuovo nella scena ICA.
Spacey,

@Mohammad: sospetto che la sincronicità di fase sia presente in altre applicazioni e usano solo applicazioni audio per renderla più familiare ai lettori.
endolith il

1
@Mohammad è possibile con i microfoni spaziati avere la sincronicità di fase per una fonte. Immagina che una sorgente venga catturata con 2 microfoni posizionati equidistanti su entrambi i lati della sorgente. La lunghezza del percorso dalla sorgente al microfono è la stessa in ogni caso e i segnali saranno ricevuti in una fase su entrambi i microfoni, ma solo per quella sorgente. Puoi aggiungere più microfoni equidistanti lungo diverse dimensioni spaziali per rifiutare ulteriormente i segnali indesiderati. Alcune tecniche di analisi EEG ne approfittano. Dovresti anche notare che il ritardo di fase tra ciascun microfono sarà una funzione della frequenza (a causa della lunghezza d'onda)
Dan Barry,

@ DanBarry Grazie Dan - punto interessante sull'EEG. Vorrei solo chiarire - ovviamente ovviamente so che se i sensori sono equidistanti da una fonte otteniamo lo stesso ritardo ... :-) Quello che stavo cercando di ottenere era per applicazioni in cui tali cose non possono essere controllate (altoparlanti in un spazio con un numero di sensori), si dice che l'ICA funzioni in questi casi - ma il 99% delle volte non avremo sincronicità di fase - se viene propagandato come algoritmo funzionante in questo caso - ma è sensibile a quei problemi di fasi - allora cosa ci manca qui? ... Grazie!
Spacey,

1
@endolith sì, è stata una bella soluzione e funziona! Ho anche pensato a una soluzione simile nel 2003 e sono rimasto deluso nel trovare qualcosa di simile, ma la mia era sufficientemente diversa da riuscire a brevettarla. Per fortuna sono stato in grado di essere il primo a sviluppare un algoritmo di separazione delle fonti in tempo reale nel 2004. Demo dell'originale qui> audioresearchgroup.com/main.php?page=Demos e il nuovo migliorato possono essere visti in azione nella demo video qui> riffstation.com
Dan Barry,

6

Come dico più in basso nella pagina:

si scopre che ICA in realtà non funziona bene quando i segnali si verificano con ritardi diversi nei diversi canali del sensore; presuppone il missaggio istantaneo (che i segnali siano perfettamente sincronizzati tra loro in tutte le diverse registrazioni). Il ritardo si verificherebbe in una situazione di vita reale con esecutori e microfoni, poiché ogni sorgente si trova a una distanza diversa da ciascun microfono.

Immagino che questo ritardo tra i canali sia la ragione. Se osservi attentamente le due onde, probabilmente vedrai che alcuni suoni si verificano prima in un canale rispetto all'altro, e il resto viceversa.

Per dimostrare che non è la qualità dei microfoni, potresti provare a registrare due segnali diversi utilizzando un microfono in momenti diversi, quindi mescolarli insieme in modo che parte di ciascun segnale si trovi in ​​ciascun canale e vedere se l'ICA funziona in quel caso .


Ho provato. Dovrebbe essere un problema di ritardo come suggerisci. Mescolando registrazioni separate FastICA produce risultati quasi perfetti. Devo trovare dei modi per affrontare il ritardo ....
Jeremy,

@Jeremy: penso che avresti bisogno di un algoritmo diverso, quindi.
endolith

conosci qualche bss algo che può far fronte al ritardo?
Jeremy,

effettivamente quando registro e batto la mano per produrre un forte suono acuto, non riesco a notare alcun ritardo nell'audacia.
Jeremy,

1
@endolith Potresti avere ragione - alcune nuove informazioni - Ho controllato le note a piè di pagina e apparentemente l'autore del mio libro dice che presume che tutti i segnali non siano ritardati l'uno rispetto all'altro. : - / In altre parole, la matrice di miscelazione è semplicemente una che cambia ampiezza. Eh. Ora è ancora più confuso. :-)
Spacey,

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.