Я написал программу для выполнения FastICA на стереофоническом WAV-файле с использованием кода на Python MDP Пример FastICA
С аудио примерами я получаю очень хорошие результаты.
Затем я пытаюсь сделать запись в реальном мире, используя два компьютерных мономикрофона, подключенных к стереомикрофону моего компьютера, подключив микрофон 1 к каналу L и микрофон 2 к каналу R. Я тестирую, играя музыку на заднем плане, пока я говорю в тихой комнате.
Тем не менее, запуск FastICA не разделяет сигналы вообще. Возможно ли, что качество микрофонов слишком низкое? Нужно ли что-либо делать с записанным WAV-файлом (16 бит, со знаком PCM, 44100 Гц) перед запуском FastICA?
Вы можете скачать запись здесь .
Как я говорю дальше вниз по странице:
Я предполагаю, что эта задержка между каналами является причиной. Если вы внимательно посмотрите на две волны, вы, вероятно, увидите, что некоторые звуки появляются в одном канале раньше, чем в другом, а остальные наоборот.
Чтобы доказать, что это не качество микрофонов, вы можете попробовать записать два разных сигнала с использованием одного микрофона в разное время, а затем смешать их вместе, чтобы часть каждого сигнала была в каждом канале, и посмотреть, работает ли ICA в этом случае. ,
источник
Есть еще один алгоритм, который использует статистику второго порядка: AMUSE.
Здесь вы можете найти реализацию в Python.
источник