J'ai écrit un programme pour exécuter FastICA sur un fichier WAV stéréo en utilisant le code sur Python MDP FastICA Exemple
Avec les exemples audio, j'obtiens de très bons résultats.
Ensuite, j'essaie de faire un enregistrement dans le monde réel en utilisant deux microphones mono d'ordinateur connectés au micro stéréo de mon PC en connectant le micro 1 au canal L et le micro 2 au canal R. Je teste en jouant de la musique à l'arrière-plan pendant que je parle dans une pièce calme.
Cependant, l'exécution de FastICA ne sépare pas du tout les signaux. Est-il possible que la qualité des microphones soit trop mauvaise? Dois-je faire quoi que ce soit sur le fichier WAV enregistré (16 bits, signé PCM, 44100 Hz) avant d'exécuter FastICA?
Vous pouvez télécharger l'enregistrement ici .
Comme je le dis plus bas sur la page:
Je suppose que ce retard entre les canaux est la raison. Si vous regardez attentivement les deux ondes, vous verrez probablement que certains sons se produisent plus tôt dans un canal que dans l'autre, et le reste vice versa.
Pour prouver que ce n'est pas la qualité des microphones, vous pouvez essayer d'enregistrer deux signaux différents en utilisant un microphone à des moments différents, puis les mélanger ensemble pour qu'une partie de chaque signal soit dans chaque canal, et voir si l'ICA fonctionne dans ce cas .
la source
Il existe un autre algorithme qui utilise des statistiques de second ordre: AMUSE.
Ici vous pouvez trouver une implémentation en Python.
la source