Gerçek dünyadaki kayıtlarda FastICA ile ses sinyallerini ayırma


12

Python MDP FastICA Örnek kodunu kullanarak stereo WAV dosyasında FastICA gerçekleştirmek için bir program yazdım

Ses örnekleri ile çok iyi sonuçlar elde ediyorum.

Sonra bilgisayar 1 stereo mikrofona bağlı iki bilgisayar mono mikrofon kullanarak mikrofon 1 L kanalına ve mikrofon 2 R kanalına bağlayarak gerçek dünya kayıt yapmaya çalışın. Sessiz bir odada konuşurken arka planda biraz müzik çalarak test ediyorum.

Ancak, FastICA'yı çalıştırmak sinyalleri hiç ayırmaz. Mikrofonların kalitesinin çok düşük olması mümkün müdür? FastICA'yı çalıştırmadan önce kayıtlı WAV dosyasına (16 bit, imzalı PCM, 44100Hz) bir şey yapmam gerekir mi?

Kaydı buradan indirebilirsiniz .

Yanıtlar:


11

Ham formdaki ICA sadece faz senkronize gözlem karışımları ile kullanım için uygundur. Açıkladığınız gibi mikrofonları kullanmak, diğer posterlerin işaret ettiği gibi bir faz gecikmesi getirecektir. Ancak bu faz gecikmesi büyük faydalar sağlamak için kullanılabilir. Gecikme varlığında stereo ayırma ile ilgili en iyi bilinen algoritma DUET'tir. Bağlantılar koptu, ancak aradığınız referanslar burada> http://eleceng.ucd.ie/~srickard/bss.html.


Aramanız gereken makale budur> A. Jourjine, S. Rickard ve O. Yılmaz, Ayrık Ortogonal Sinyallerin Kör Ayrımı: 2 Karışımdan N Kaynak İndirilmesi, IEEE Akustik, Konuşma ve Sinyal İşleme Konferansı (ICASSP2000), Cilt 5, Sayfa 2985-2988, İstanbul, Türkiye, Haziran 2000


2
Bir soru - karışımları birden fazla hacimsel olarak ayrı mikrofon geliyorsanız ... o zaman nasıl hiç faz synchronicity var ... Birden mikrofonlar arasında bu örnek yerde görülen kullanılan, ancak gördüğünüz tüm metinlerde faz eşzamanlılık olur? böyle bir mesele neden bahsedilmiyor? Sadece burada anlamaya çalışıyorum, ICA sahnesinde yeniyim.
Spacey

@Mohammad: Faz senkronizasyonunun diğer uygulamalarda mevcut olduğundan şüpheleniyorum ve sadece okuyucuları daha tanıdık hale getirmek için ses uygulamaları kullanıyorlar.
endolith

1
@Mohammad, aralıklı mikrofonlar ile tek bir kaynak için faz silikitesine sahip olmak mümkündür. Kaynağın her iki tarafına eşit uzaklıkta yerleştirilmiş 2 mikrofonla bir kaynağın yakalandığını düşünün. Kaynaktan mikrofona olan yol uzunluğu her durumda aynıdır ve sinyaller her iki mikrofonda da bir fazda alınacaktır, ancak sadece bu kaynak için. İstenmeyen sinyalleri daha fazla reddetmek için farklı uzamsal boyutlar boyunca eşit olarak daha fazla mikrofon ekleyebilirsiniz. Bunun bazı EEG analiz teknikleri vardır. Ayrıca, her mikrofon arasındaki faz gecikmesinin (dalga boyundan dolayı) bir frekans fonksiyonu olacağını unutmayın
Dan Barry

@ DanBarry Teşekkürler Dan - EEG hakkında ilginç bir nokta. Açıklığa kavuşturayım - tabii ki, sensörler bir kaynaktan eşit uzaklıkta olursa, aynı gecikmeyi elde ettiğimizi biliyorum ... :-) Ulaşmaya çalıştığım şey, bu tür şeylerin kontrol edilemediği uygulamalar içindi. birkaç sensöre sahip oda), ICA'nın bu gibi durumlarda çalıştığı söylenir - ancak zamanın% 99'unda faz eşzamanlılığı yoktur - bu durumda bir çalışma algoritması olarak lanse edilirse - ancak bu aşama sorunlarına duyarlıdır - o zaman burada eksik olan ne? ... Teşekkürler!
Spacey

1
@ endolith evet güzel bir çözümdü ve işe yarıyor! Ben de 2003 yılında benzer bir çözüm düşündüm ve benzer bir şey bulmak hayal kırıklığına uğradım ama benim patent patent almak için yeterince farklıydı. Neyse ki 2004'te gerçek zamanlı bir kaynak ayırma algoritması geliştiren ilk kişi olabildim . Orijinalin demoları burada> audioresearchgroup.com/main.php?page=Demos ve yeni geliştirilmiş olan video demosunda eylemde görülebilir burada> riffstation.com
Dan Barry

6

Sayfada daha fazla dediğim gibi:

sinyaller farklı sensör kanallarında farklı gecikmelerde meydana geldiğinde ICA'nın gerçekten iyi çalışmadığı ortaya çıkar; anlık karıştırmayı varsayar (sinyallerin tüm farklı kayıtlarda birbiriyle mükemmel senkronize olduğunu). Gecikme olur her kaynak her mikrofondan farklı bir mesafe olduğu için, sanatçılar ve mikrofonlar ile gerçek yaşam durumunda meydana gelir.

Kanallar arasındaki bu gecikmenin sebebi olduğunu tahmin ediyorum. İki dalgaya yakından bakarsanız, muhtemelen bazı seslerin bir kanalda diğerinden daha erken gerçekleştiğini görürsünüz, bunun tersi de geçerlidir.

Mikrofonların kalitesinin olmadığını kanıtlamak için, farklı zamanlarda bir mikrofon kullanarak iki farklı sinyali kaydetmeyi deneyebilir ve ardından her bir sinyalin bir kısmının her bir kanalda olması için bunları karıştırabilir ve ICA'nın bu durumda çalışıp çalışmadığını görebilirsiniz. .


Denedim. Önerdiğiniz gibi bir gecikme problemi olmalı. Ayrı kayıtları karıştırarak FastICA neredeyse mükemmel sonuçlar verir. Gecikme ile başa çıkmak için bazı yollar bulmalıyım ....
Jeremy

@Jeremy: Sanırım farklı bir algoritmaya ihtiyacınız olacak.
endolith

gecikme ile başa çıkabilecek herhangi bir bss algo biliyor musunuz?
Jeremy

aslında yüksek bir keskin ses üretmek için elimi kaydedip çırptığımda, cüret konusunda herhangi bir gecikme göremiyorum.
Jeremy

1
@endolith Haklı olabilirsiniz - bazı yeni bilgiler - Dipnotları kontrol ettim ve görünüşe göre kitabımın yazarı, tüm sinyallerin birbirine göre gecikmediğini varsaydığını söylüyor. : - / Başka bir deyişle karıştırma matrisi, genlikleri değiştiren matristir. Eh. Şimdi daha da kafa karıştırıcı. :-)
Spacey

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.