Ich habe ein Programm zum Ausführen von FastICA für eine Stereo-WAV-Datei mit dem Code von Python MDP FastICA Example geschrieben
Mit den Audiobeispielen bekomme ich sehr gute Ergebnisse.
Dann versuche ich, mit zwei Computer-Monomikrofonen, die an das Stereomikrofon meines PCs angeschlossen sind, echte Aufnahmen zu machen, indem ich Mikrofon 1 mit L-Kanal und Mikrofon 2 mit R-Kanal verbinde. Ich spiele im Hintergrund Musik, während ich in einem ruhigen Raum spreche.
Beim Ausführen von FastICA werden die Signale jedoch überhaupt nicht getrennt. Ist es möglich, dass die Qualität der Mikrofone zu schlecht ist? Muss ich mit der aufgezeichneten WAV-Datei (16 Bit, signiertes PCM, 44100 Hz) etwas anfangen, bevor ich FastICA ausführe?
Die Aufzeichnung können Sie hier herunterladen .
Wie ich weiter unten sage:
Ich vermute, dass diese Verzögerung zwischen den Kanälen der Grund ist. Wenn Sie sich die beiden Wellen genau ansehen, werden Sie wahrscheinlich feststellen, dass einige Klänge in einem Kanal früher auftreten als im anderen und der Rest umgekehrt.
Um zu beweisen, dass es nicht die Qualität der Mikrofone ist, können Sie versuchen, zwei verschiedene Signale mit einem Mikrofon zu unterschiedlichen Zeiten aufzunehmen und diese dann zu mischen, sodass sich ein Teil jedes Signals in jedem Kanal befindet. Überprüfen Sie, ob der ICA in diesem Fall funktioniert .
quelle
Es gibt einen anderen Algorithmus, der Statistiken zweiter Ordnung verwendet: AMUSE.
Hier finden Sie eine Implementierung in Python.
quelle