Неможливо відокремити звукові сигнали FastICA під час реального запису


12

Я написав програму для виконання FastICA на стерео-файлі WAV, використовуючи код на прикладі FastICA Python MDP

З аудіоприкладами я отримую дуже хороші результати.

Потім я намагаюся робити запис у реальному світі за допомогою двох комп'ютерних мономікрофонів, підключених до стереофонічного ПК у моєму ПК, підключивши мікрофон 1 до L каналу та мікрофон 2 до каналу R. Я тестую, граючи музику на задньому плані, поки я розмовляю в тихій кімнаті.

Однак запуск FastICA взагалі не розділяє сигнали. Чи можливо якість мікрофонів занадто погана? Чи потрібно мені щось робити із записаного файлу WAV (16 біт, підписаний PCM, 44100 Гц) перед запуском FastICA?

Запис можна завантажити тут .

Відповіді:


11

ICA в сирому вигляді підходить тільки для використання з фазовими синхронізованими спостережними сумішами. Використання мікрофонів, як ви описали, введе затримку фази, як вказували інші афіші. Однак ця затримка фази може бути використана з великою користю. Найвідоміший алгоритм, який займається стереовідділенням за наявності затримок, - DUET. Посилання порушені, але ви шукаєте посилання тут> http://eleceng.ucd.ie/~srickard/bss.html.

Це документ, який слід шукати:
А. Журжін, С. Рікард та О. Єльмаз, сліпе відділення нерозділених ортогональних сигналів: деміксирування N джерел від 2 сумішей, конференція IEEE з питань акустики, мови та обробки сигналів (ICASSP2000), Том 5, Сторінки 2985-2988, Стамбул, Туреччина, червень 2000 року


2
Питання - якщо суміші надходять з декількох просторово відокремлених мікрофонів ... то як ми можемо коли-небудь мати фазову синхронність? ... У всіх текстах я бачу, що цей приклад кількох мікрофонів використовується всюди, але якщо фазова синхронність це таке питання, чому воно не згадується? Я просто намагаюся зрозуміти тут, я новачок на сцені ICA.
Спейсі

@Mohammad: Я підозрюю, що фазова синхронність присутня і в інших програмах, і вони просто використовують аудіопрограми, щоб зробити їх більш звичними читачам.
ендоліт

1
@Mohammad, можливо, з рознесеними мікрофонами мати фазову сихронічність для одного джерела. Уявіть, що джерело захоплюється двома мікрофонами, розташованими на однаковій відстані з обох боків джерела. Довжина шляху від джерела до мікрофона однакова в кожному випадку, і сигнали будуть надходити по фазі на обох мікрофонах, але тільки для цього джерела. Ви можете додавати більше мікрофонів рівновіддалено вздовж різних просторових розмірів для подальшого відхилення небажаних сигналів. Для цього корисні деякі методи ЕЕГ-аналізу. Також слід зауважити, що затримка фази між кожним мікрофоном буде залежати від частоти (через довжину хвилі)
Dan Barry

@DanBarry Спасибі Ден - цікавий момент про ЕЕГ. Дозвольте мені лише уточнити - я, звичайно, знаю, що якщо датчики розташовані на рівному відстані від джерела, ми отримуємо однакову затримку ... :-) Я намагався потрапити на програми, де такі речі неможливо контролювати, (динаміки в приміщення з низкою датчиків), як кажуть, ICA працює в таких випадках - але 99% часу ми не маємо фазової синхронічності - якщо в цьому випадку це рекламується як робочий алгоритм - все-таки є чутливим до цих проблем, - тоді чого тут бракує? ... Спасибі!
Спейси

1
@endolith так, це було приємне рішення, і це працює! Я також подумав про подібне рішення ще в 2003 році і розчарувався, коли знайшов щось подібне, але моє було досить іншим, що мені вдалося патентувати його. На щастя, я міг стати першим, хто розробив алгоритм поділу джерел у реальному часі ще в 2004 році. Демо з оригіналу тут> audioresearchgroup.com/main.php?page=Demos та новий вдосконалений можна побачити в дії на демонстраційному відео тут> riffstation.com
Dan Barry

6

Як я кажу далі вниз по сторінці:

виявляється, що ICA насправді не працює добре, коли сигнали виникають з різною затримкою в різних каналах датчика; він передбачає миттєве змішування (що сигнали ідеально синхронізуються між собою у всіх різних записах). Затримка буде відбуватися в реальній життєвій ситуації , з виконавцями і мікрофонів, оскільки кожне джерело на різній відстані від кожного мікрофона.

Я б здогадався, що причина цього затримки між каналами. Якщо уважно придивитись до двох хвиль, ви, мабуть, побачите, що одні звуки виникають швидше в одному каналі, ніж в іншому, а решта навпаки.

Щоб довести, що це не якість мікрофонів, ви можете спробувати записати два різних сигналу за допомогою одного мікрофона в різний час, а потім змішати їх разом, щоб частина кожного сигналу знаходилась у кожному каналі, і побачити, чи працює ICA у такому випадку .


Я намагався. Це має бути проблема із затримкою, як ви пропонуєте. Змішуючи окремі записи FastICA дає майже ідеальні результати. Мені потрібно знайти кілька способів впоратися із затримкою ....
Джеремі

@ Джеремі: Я думаю, тобі знадобиться інший алгоритм.
ендоліт

чи знаєте ви будь-який BSS algo, який може впоратися із затримкою?
Джеремі

насправді, коли я записую та плескаю рукою, щоб видавати гучний різкий шум, я не можу помітити жодної затримки зухвалість.
Джеремі

1
@endolith Ви можете мати рацію - якась нова інформація - я перевірив виноски, і, очевидно, автор моєї книги каже, що він припускає, що всі сигнали не затримуються відносно один одного. : - / Іншими словами, матриця змішування є просто тією, яка змінює амплітуди. Е-е. Тепер це ще більше заплутано. :-)
Spacey

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.