No se pueden separar las señales de sonido de FastICA en la grabación del mundo real

12

He escrito un programa para realizar FastICA en un archivo WAV estéreo usando el código en Python MDP FastICA Ejemplo

Con los ejemplos de audio obtengo muy buenos resultados.

Luego trato de grabar en el mundo real usando dos micrófonos mono de computadora conectados al micrófono estéreo de mi PC conectando el micrófono 1 al canal L y el micrófono 2 al canal R. Pruebo tocando música de fondo mientras hablo en una habitación tranquila.

Sin embargo, ejecutar FastICA no separa las señales en absoluto. ¿Es posible que la calidad de los micrófonos sea demasiado pobre? ¿Debo hacer algo con el archivo WAV grabado (16 bits, PCM firmado, 44100Hz) antes de ejecutar FastICA?

Puedes descargar la grabación aquí .

Jeremy
fuente

Respuestas:

11

ICA en forma cruda solo es adecuado para su uso con mezclas de observación sincronizadas de fase. El uso de micrófonos como usted ha descrito introducirá un retraso de fase como lo señalan otros carteles. Sin embargo, este retraso de fase se puede utilizar en gran medida. El algoritmo más conocido que se ocupa de la separación estéreo en presencia de retrasos es DUET. Los enlaces están rotos, pero las referencias que está buscando están aquí> http://eleceng.ucd.ie/~srickard/bss.html.

Este es el documento que debe buscar>
A. Jourjine, S. Rickard y O. Yilmaz, Separación ciega de señales ortogonales disjuntas: Mezcla de N fuentes de 2 mezclas, Conferencia IEEE sobre acústica, habla y procesamiento de señales (ICASSP2000), Volumen 5, páginas 2985-2988, Estambul, Turquía, junio de 2000

Dan Barry
fuente
2
Una pregunta - si las mezclas son procedentes de más de un micrófono espacialmente separada ... entonces ¿cómo podemos nunca tener sincronía de fase ... En todos los textos que veo este ejemplo de múltiples micrófonos se utiliza de forma ubicua, pero si la sincronía de fase? ¿Es este un problema por qué no se menciona? Estoy tratando de entender aquí, soy nuevo en la escena de ICA.
Spacey
@Mohammad: Sospecho que la sincronía de fase está presente en otras aplicaciones, y solo usan aplicaciones de audio para que sea más familiar para los lectores.
endolito el
1
@Mohammad es posible que con micrófonos espaciados tenga una sincronía de fase para una fuente. Imagine que se captura una fuente con 2 micrófonos colocados equidistantes a cada lado de la fuente. La longitud de la ruta de la fuente al micrófono es la misma en cada caso y las señales se recibirán en una fase en ambos micrófonos, pero solo para esa fuente. Puede agregar más micrófonos de manera equidistante a lo largo de diferentes dimensiones espaciales para rechazar aún más las señales no deseadas. Algunas técnicas de análisis EEG hacen uso de esto. También debe tener en cuenta que el retraso de fase entre cada micrófono será una función de la frecuencia (debido a la longitud de onda)
Dan Barry
@DanBarry Gracias Dan: punto interesante sobre el EEG. Permítanme aclarar: por supuesto, obviamente sé que si los sensores son equidistantes de una fuente, obtenemos el mismo retraso ... :-) Lo que estaba tratando de encontrar era para aplicaciones donde tales cosas no pueden controlarse (altavoces en un sala con una serie de sensores), se dice que ICA funciona en tales casos, pero el 99% del tiempo no tendremos sincronía de fase, si se promociona como un algoritmo de trabajo en este caso, pero es sensible a esos problemas de fase, entonces ¿Qué falta aquí? ... ¡Gracias!
Spacey
1
@endolith sí, fue una buena solución y funciona. También pensé en una solución similar en 2003 y me decepcionó encontrar algo similar, pero la mía fue lo suficientemente diferente como para poder patentarla. Afortunadamente pude ser el primero en desarrollar un algoritmo de separación de fuente en tiempo real en 2004. Demos del original aquí> audioresearchgroup.com/main.php?page=Demos y el nuevo mejorado se puede ver en acción en la demostración de video aquí> riffstation.com
Dan Barry
6

Como digo más abajo en la página:

Resulta que ICA en realidad no funciona bien cuando las señales se producen con diferentes retrasos en los diferentes canales del sensor; supone una mezcla instantánea (que las señales estén perfectamente sincronizadas entre sí en todas las diferentes grabaciones). Retraso podría ocurrir en una situación de la vida real con los artistas y los micrófonos, ya que cada fuente es una distancia diferente de cada micrófono.

Supongo que este retraso entre canales es la razón. Si observa de cerca las dos ondas, probablemente verá que algunos sonidos se producen antes en un canal que en el otro, y el resto al revés.

Para demostrar que no es la calidad de los micrófonos, puede intentar grabar dos señales diferentes usando un micrófono en diferentes momentos, y luego mezclarlas para que parte de cada señal esté en cada canal, y ver si el ICA funciona en ese caso .

endolito
fuente
He intentado. Debería ser un problema de retraso como usted sugiere. Al mezclar grabaciones separadas, FastICA produce resultados casi perfectos. Necesito encontrar algunas formas de lidiar con el retraso ...
Jeremy
@ Jeremy: Creo que necesitarías un algoritmo diferente, entonces.
endolito el
¿Conoces algo de bss que pueda hacer frente al retraso?
Jeremy
En realidad, cuando grabo y aplaudo para producir un ruido fuerte y agudo, no puedo notar ningún retraso en la audacia.
Jeremy
1
@endolith Puede que tengas razón, alguna información nueva, revisé las notas al pie de página, y aparentemente el autor de mi libro dice que asume que todas las señales no se retrasan entre sí. : - / En otras palabras, la matriz de mezcla es simplemente una que cambia las amplitudes. Eh Ahora es aún más confuso. :-)
Spacey
0

Hay otro algoritmo que usa estadísticas de segundo orden: AMUSE.

Aquí puedes encontrar una implementación en Python.

Bruno Rodrigues de Oliveira
fuente