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

12

Я написал программу для выполнения FastICA на стереофоническом WAV-файле с использованием кода на Python MDP Пример FastICA

С аудио примерами я получаю очень хорошие результаты.

Затем я пытаюсь сделать запись в реальном мире, используя два компьютерных мономикрофона, подключенных к стереомикрофону моего компьютера, подключив микрофон 1 к каналу L и микрофон 2 к каналу R. Я тестирую, играя музыку на заднем плане, пока я говорю в тихой комнате.

Тем не менее, запуск FastICA не разделяет сигналы вообще. Возможно ли, что качество микрофонов слишком низкое? Нужно ли что-либо делать с записанным WAV-файлом (16 бит, со знаком PCM, 44100 Гц) перед запуском FastICA?

Вы можете скачать запись здесь .

Джереми
источник

Ответы:

11

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

Эту статью вы должны найти>
A. Jourjine, S. Rickard и O. Yilmaz, Слепое разделение непересекающихся ортогональных сигналов: расслоение N источников из двух смесей, Конференция IEEE по акустике, обработке речи и сигналов (ICASSP2000), Том 5, страницы 2985-2988, Стамбул, Турция, июнь 2000 г.

Дэн Барри
источник
2
Вопрос - если миксы исходят из нескольких пространственно разделенных микрофонов ... то как мы можем когда-либо иметь фазовую синхронность? ... Во всех текстах, которые я вижу, этот пример множественных микрофонов используется повсеместно, но если фазовая синхронность такая проблема, почему она не упоминается? Я просто пытаюсь понять здесь, я новичок в сцене ICA.
Спейси
@ Мохаммед: Я подозреваю, что фазовая синхронизация присутствует в других приложениях, и они просто используют аудиоприложения, чтобы сделать их более знакомыми для читателей.
эндолит
1
@ Мохаммед, возможно, с разнесенными микрофонами иметь фазовую синхронность для одного источника. Представьте, что источник захвачен двумя микрофонами, расположенными на равном расстоянии по обе стороны от источника. Длина пути от источника до микрофона одинакова в каждом случае, и сигналы будут приниматься по фазе на обоих микрофонах, но только для этого источника. Вы можете добавить больше микрофонов на равных расстояниях в разных пространственных измерениях, чтобы еще больше отклонить нежелательные сигналы. Некоторые методы анализа ЭЭГ помогают этому. Следует также отметить, что фазовая задержка между каждым микрофоном будет зависеть от частоты (из-за длины волны)
Дэн Барри
@ DanBarry Спасибо Дэн - интересный момент о ЭЭГ. Позвольте мне просто уточнить - я, конечно, очевидно, знаю, что если датчики находятся на одинаковом расстоянии от источника, мы получаем такую ​​же задержку ... :-) Я пытался понять, в каких приложениях невозможно управлять такими вещами (выступающие в комната с несколькими датчиками), ICA, как говорят, работает в таких случаях - но в 99% случаев у нас не будет фазовой синхронности - если в этом случае это называется рабочим алгоритмом - все же чувствителен к этим проблемам фаз - тогда чего здесь не хватает? ... Спасибо!
Спейси
1
@endolith да, это было хорошее решение, и оно работает! Я также думал о подобном решении еще в 2003 году и был разочарован тем, что нашел что-то подобное, но у меня было достаточно другое, что мне удалось запатентовать его. К счастью, я был первым, кто разработал алгоритм разделения источников в реальном времени еще в 2004 году. Демонстрации оригинала здесь> audioresearchgroup.com/main.php?page=Demos и новый улучшенный вариант можно увидеть в действии в видео-демонстрации здесь> riffstation.com
Дэн Барри
6

Как я говорю дальше вниз по странице:

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

Я предполагаю, что эта задержка между каналами является причиной. Если вы внимательно посмотрите на две волны, вы, вероятно, увидите, что некоторые звуки появляются в одном канале раньше, чем в другом, а остальные наоборот.

Чтобы доказать, что это не качество микрофонов, вы можете попробовать записать два разных сигнала с использованием одного микрофона в разное время, а затем смешать их вместе, чтобы часть каждого сигнала была в каждом канале, и посмотреть, работает ли ICA в этом случае. ,

эндолиты
источник
Я пробовал. Это должно быть проблемой задержки, как вы предлагаете. Смешивая отдельные записи, FastICA дает почти идеальные результаты. Мне нужно найти несколько способов справиться с задержкой ....
Джереми
@ Джереми: Я думаю, тебе нужен другой алгоритм.
Эндолит
Вы знаете какой-нибудь bss-алгоритм, который может справиться с задержкой?
Джереми
на самом деле, когда я записываю и хлопаю в ладоши, чтобы издать громкий острый шум, я не могу заметить никакой задержки в наглости.
Джереми
1
@endolith Возможно, вы правы - какая-то новая информация - я проверил сноски, и, очевидно, автор моей книги говорит, что он предполагает, что все сигналы не задерживаются относительно друг друга. : - / Другими словами, матрица смешения - это просто матрица, которая меняет амплитуды. Эх. Теперь это еще более запутанно. :-)
Спейси
0

Есть еще один алгоритм, который использует статистику второго порядка: AMUSE.

Здесь вы можете найти реализацию в Python.

Бруно Родригес де Оливейра
источник