Konuşmanın bant genişliğine uyan bir geçiş bandı filtresi kullanmak yardımcı olacaktır.
Birden fazla mikrofonunuz varsa (cep telefonlarında olduğu gibi), bundan yararlanabilecek ICA benzeri yöntemler var - ancak sorunuz bana sadece bir girişiniz olduğunu ima ediyor.
Yapmak istediğiniz şey, "tek sensör" olarak da adlandırılan "tek mikrofonlu kaynak ayırma" (adı Roweis'in çığır açan kağıdından alınmıştır). Uyarı: Bu, çözülmüş bir sorun olmaktan çok uzaktır ve bu alandaki tüm araştırmalar çok yakındır, hiçbir algoritma veya yaklaşım "açık kazanan" değildir (gauss karışım modellerinin aksine + FST konuşma tanıma için olmuştur).
Bunu yapmak için iyi bir çerçeve Wiener filtrelemedir. Bkz. Benaroya ve ark. "Wiener filtrelemesine ve çoklu pencere STFT'sine dayalı Tek Sensör Kaynak ayırma" (Bölüm 1 ve 2'yi okuyun, gerçekten ihtiyaç duymadıkça çoklu çözümle uğraşmayın). Kısacası, sinyallerinizin STFT'sini hesaplarsınız ve her STFT çerçevesi için ses spektrumu ve gürültü spektrumu hakkında tahminler almaya çalışırsınız ve ses spektrumunun en iyi tahminini kurtarmak için Wiener filtrelemesini kullanırsınız (bu "yumuşak maskelemeye" benzerdir).
Sorununuz şu şekildedir: STFT çerçevesi verildiğinde, konuşmayı ve gürültü bileşenini tahmin edin. Benaroya'nın makalesinde açıklanan daha basit yaklaşım Vektör nicemleme yoluyladır - birçok konuşmacı tarafından birkaç saat konuşma yapın, STFT'yi hesaplayın, 512 veya 1024 tipik konuşma çerçevelerinin bir kod kitabını bulmak için LBG'yi çalıştırın; gürültü için de aynı şeyi yapın. Şimdi, giriş sinyalinizin bir çerçevesi verildiğinde, bunu negatif olmayan şekilde (kağıtta çarpımsal bir gradyan güncelleme prosedürü açıklanmaktadır) konuşma ve gürültü tabanlarına yansıtın ve konuşma ve gürültü tahminlerinizi alın. Negatif olmayan projeksiyonla uğraşmak istemiyorsanız, sadece en yakın komşuyu kullanın. Bu gerçekten de "tek sensörlü kaynak ayırma" bölümünde çalışabilecek en basit şey.
Bir konuşma tanıma sisteminin gerçekten de bir ayırma sistemi için bir miktar girdi sağlayabileceğini unutmayın. Konuşma tanıma sisteminizi kullanarak kod çözmenin ilk geçişini yapın. Her kare için, en iyi puanı alan gaussiandan ortalama MFCC vektörünü alın. Bunu tekrar bir spektrum haline getirin. Boom, size konuşma benzeri bitlerin en muhtemel spektral konumunu veren bir masken var ve onu Wiener filtrelemesi için bir girdi olarak kullanabilirsiniz. Bu biraz el sallama gibi geliyor, ancak geist, bir kaynağı ayırmak için bunun için iyi bir modele ihtiyacınız olduğu ve geri alınan bir konuşma tanıma sisteminin konuşma sinyalleri için iyi bir üretken modelin cehennemidir.