실제 레코딩에서 FastICA의 사운드 신호 분리 실패


12

Python MDP FastICA 예제 의 코드를 사용하여 스테레오 WAV 파일에서 FastICA를 수행하는 프로그램을 작성했습니다.

오디오 예제를 사용하면 매우 좋은 결과를 얻을 수 있습니다.

그런 다음 마이크 1을 L 채널에, 마이크 2를 R 채널에 연결하여 PC의 스테레오 마이크에 연결된 두 대의 컴퓨터 모노 마이크를 사용하여 실제 녹음을 시도합니다. 조용한 방에서 이야기하는 동안 백그라운드에서 음악을 재생하여 테스트합니다.

그러나 FastICA를 실행해도 신호가 전혀 분리되지 않습니다. 마이크의 품질이 너무 좋지 않을 수 있습니까? FastICA를 실행하기 전에 기록 된 WAV 파일 (16 비트, 서명 된 PCM, 44100Hz)에 대해 어떤 작업을 수행해야합니까?

여기 에서 레코딩을 다운로드 할 수 있습니다 .

답변:


11

원시 형태의 ICA는 상 동기화 된 관측 혼합물과 함께 사용하기에 적합합니다. 설명한대로 마이크를 사용하면 다른 포스터에서 지적한대로 위상 지연이 발생합니다. 그러나이 위상 지연은 큰 도움이 될 수 있습니다. 지연이있을 때 스테레오 분리를 처리하는 가장 잘 알려진 알고리즘은 DUET입니다. 링크가 끊어졌지만 찾고있는 참조는 여기> http://eleceng.ucd.ie/~srickard/bss.html입니다.

본 논문은
A. Jourjine, S. Rickard 및 O. Yilmaz, 분리 된 직교 신호의 블라인드 분리 : 2 개의 혼합물에서 N 개의 소스 디 믹싱, 음향, 음성 및 신호 처리에 관한 IEEE 회의 (ICASSP2000), 5 권, 페이지 2985-2988, 터키 이스탄불, 2000 년 6 월


2
질문 - 믹스가 하나 개 이상의 공간적으로 분리 된 마이크에서 오는 경우 ... 우리는 할 수있는 방법 위상 동시성을 가지고 ... 내가 여러 마이크의 예는 보편적으로 사용되지만 참조하는 모든 텍스트에서 위상 동시성 경우? 언급되지 않은 이유는 무엇입니까? 나는 단지 여기에서 이해하려고 노력하고 있습니다. 나는 ICA 장면에 익숙하지 않습니다.
Spacey

@Mohammad : 다른 응용 프로그램에는 위상 동기가 있다고 생각되며 오디오 응용 프로그램을 사용하여 독자에게 더 친숙하게 만듭니다.
endolith

1
@Mohammad 간격 마이크를 사용하면 하나의 소스에 대해 위상 동기를 가질 수 있습니다. 소스의 양쪽에 등거리로 배치 된 2 개의 마이크로 소스를 캡처한다고 상상해보십시오. 소스에서 마이크까지의 경로 길이는 각 경우에 동일하며 신호는 두 마이크 모두에서 위상으로 수신되지만 해당 소스에 대해서만 수신됩니다. 원치 않는 신호를 추가로 제거하기 위해 다른 공간 치수를 따라 등거리로 더 많은 마이크를 추가 할 수 있습니다. 일부 EEG 분석 기술이이 기능을 사용할 수 있습니다. 또한 각 마이크 사이의 위상 지연은 (파장으로 인해) 주파수의 함수일 것입니다
Dan Barry

@ DanBarry 감사합니다 Dan-EEG에 대한 흥미로운 점. 센서를 소스에서 동일 거리에 놓으면 같은 지연이 발생한다는 것을 분명히 알 수 있습니다. :-) 내가 얻으려고했던 것은 제어 할 수없는 응용 프로그램 (스피커의 스피커)입니다. ICA는 이러한 경우에 작동한다고 알려져 있습니다. 그러나 99 %는 위상 동기가 없을 것입니다.이 경우 작동 알고리즘으로 선전된다면-위상 문제에 민감합니다. 여기에 무엇이 빠졌습니까? ... 감사합니다!
Spacey

1
@ endolith 예 좋은 해결책 였고 작동합니다! 또한 2003 년에 비슷한 솔루션을 생각하고 비슷한 것을 발견하는 데 실망했지만 내 특허는 충분히 달랐습니다. 운 좋게도 2004 년에 실시간 소스 분리 알고리즘을 개발 한 최초의 사람이 될 수있었습니다. 원본 데모> audioresearchgroup.com/main.php?page=Demos 및 새로운 개선 된 기능을 비디오 데모에서 볼 수 있습니다. 여기> riffstation.com
Dan Barry

6

페이지를 더 아래로 말하면 :

신호가 다른 센서 채널에서 다른 지연으로 발생할 때 ICA가 실제로 제대로 작동하지 않는 것으로 나타났습니다. 즉석 믹싱을 가정합니다 (신호가 모든 다른 레코딩에서 서로 완벽하게 동기화되어 있음). 각 소스는 각 마이크와 거리가 다르므로 연주자와 마이크가있는 실제 상황에서는 지연 발생합니다.

채널 간 지연이 원인이라고 생각합니다. 두 파도를 면밀히 살펴보면 한 채널에서 다른 채널보다 더 빨리 소리가 나고 나머지는 그 반대로 나타날 수 있습니다.

마이크의 품질이 아님을 증명하기 위해 한 번에 하나의 마이크를 사용하여 두 개의 다른 신호를 녹음 한 다음 각 신호의 일부가 각 채널에 있도록 믹싱하여 ICA가 작동하는지 확인할 수 있습니다. .


난 노력 했어. 제안한대로 지연 문제가되어야합니다. 별도의 기록을 혼합하여 FastICA는 거의 완벽한 결과를 생성합니다. 지연에 대처할 수있는 방법을 찾아야합니다 ....
Jeremy

@ Jeeremy : 그렇다면 다른 알고리즘이 필요하다고 생각합니다.
endolith December

지연에 대처할 수있는 bss algo를 알고 있습니까?
Jeremy

실제로 손을 녹음하고 박수를 쳐 큰 소리를 내면 대담함이 지연되는 것을 알 수 없습니다.
Jeremy

1
@endolith 당신은 옳을지도 모릅니다-새로운 정보-저는 각주를 확인했으며 분명히 내 책의 저자는 모든 신호가 서로 지연되지 않는다고 가정합니다. 즉, 믹싱 매트릭스는 단순히 진폭을 변경하는 것입니다. 뭐라고. 이제 더 혼란 스럽습니다. :-)
Spacey

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.