2011-06-01 24 views
5

iOS uygulamasında belirli bir sesi tanımak istiyorum. Temelde konuşma tanıma gibi çalışır, çünkü oldukça bulanık, ama sadece 1 özel ses için olması gerekiyordu.iOS'ta belirli bir sesi tanımlayın

Belirli bir eşiğin üzerindeki belirli frekansları tanımlamak için bazı hızlı FFT öğelerini yaptım ve yalnızca solo olduklarında (yani, başka frekanslarla çevrili değiller), böylece kolayca tek tek tonları tanımlayabilirim. Bunun sadece bir uzantısı olduğunu düşünüyorum, fakat bir ses kaydının bir FFT veri kümesini karşılaştırarak, sesin uzunluğu boyunca 0,1 saniyelik parçaları karşılaştırınız. Ve ayrıca genlikteki varyasyonları, biraz zift ve biraz zaman içinde hesaba katmak zorundayım.

Bu süreci hızlandırmak için kullanabileceğim önceden mevcut herhangi bir kaynağa işaret eden var mı? Kullanılabilir bir şey bulamıyorum. Yoksa böyle bir şeye nasıl başlayacağınıza dair herhangi bir fikrin yok mu? anlattıklarına bakılırsa

+0

Çözüm buldunuz mu? Ben benzer bir şey yapmaya çalışıyorum - verileri göstermek için ses kullanarak, iki cihaz arasında veri iletmek, bu yüzden zaten her iki cihazda olacak dosyaları tarafından oluşturulan sadece belirli sesleri tanımak gerekir .... –

cevap

1

Çok teşekkürler size ne yapmak istediğinizi tam olarak belli değil. "Belirli" ses nasıldır? Yüksek arkaplan gürültüsü var mı? Özel tanınabilir özellik nedir (örn. Zift, inhamonicity, timbre ...)? Karşılaştığı diğer "sesler" ile karşılaştırmak ister misiniz? Sadece bir "şablon sesi" ne karşı rasgele bir ses spektrumunu eşleştirmek mi istiyorsunuz? Sesiniz perküsyon, melodik, konuşma, ...? Uzun mu, kısa mı ...? En iyi ayrışmayı beklediğiniz frekans aralığı nedir? Özellikler zamanla değişmez mi?

Her şey için çalışan bir "genel" çözüm yoktur. Konuşma tanıma kendi içinde oldukça karmaşıktır ve ayırt edilebilir frekansları örn. MEL bantları. Sonuç olarak, faydalı bir cevap almak için çok fazla açık sorudan ayrılıyorsunuz.

 
For the template sound: 
1) Extract spectral peak positions from the power spectrum 
2) Measure the standard deviation around the peaks and construct a gaussian from it 
3) save the gaussians for later classification 

For unkown sounds: 
1) Extract spectral peak positions 
2) Project those points onto the saved gaussians which leaves you with z-scores of the peak positions 
3) With the computed z-scores you should be able to classify your template sound 

Not: i birkaç bilgiler temelinde yapabilirsiniz Sadece öneri şudur Bu onların en güçlü frekanslarına göre sesleri ayrımcılık çok kaba bir yöntemdir. Gaussians kullanarak en güçlü frekanslarda hafif vardiyalar için oda bırakır.

+0

daha fazla özelliklere sahip olmama rağmen gereklilik. Arka plan gürültüsüne sahibim ve meydana geldiğinde yüksek bir ses çıkarmaya çalışıyorum. Bir yağmur fırtınası sırasında aydınlatma çarpmasını (ancak yüksek ses seviyelerinde değil) tanımlamak istediğinizde düşünebileceğim en iyi örnek olurdu. Gürültü, ses seviyesinde bir dereceye kadar değişir, ancak çoğunlukla aynıdır. Sol ve sağ kanal yoğunluğunu hesaba katmam gerek. Spectral Peak'i nasıl çıkaracağınız ve gaussiyeni nasıl inşa edersiniz? Tanımlamak için? – DogEatDog

+0

Geç cevap için özür dilerim. Sadece genlik değişimleriyle ilgilendiğiniz için basit bir eşik yapacaktır. Büyüklük tekrar düşene kadar geçen süreyi ölçerek daha fazla sağlamlık ekleyebilir ve bu bilgiyi eşik filtresi için kullanabilirsiniz. – pokey909