SO hakkında birçok soru okudum ve açıkçası, her biri bu konu hakkında herhangi bir yol tarif etmiyor. Bazıları "FFT yapın" ve bazıları "sıfır geçiş" diyorlar. Ama sadece dijital ses girişinin belirli bir frekans ve iyi için bir dizi genlikten oluştuğunu anladım. ötesinde.
Şimdi Nyquist teoremini, frekansını, genliğini, Fourier serisini vb. Biliyorum ve bunu 2-3 yıl öncesine kadar bir dönem üniversite programımda yaptım. Ama o zamanlar gerçekten Fourier'in gerçek dünya kullanımını öğretmedik ve konuyu geçebilecek kadar öğrenmenin ötesinde konuyla ilgili daha fazla kazma zahmetine girmedim. Ama şimdi tüm bunları kullanmam gerekecek.
İşte tespit etmeye çalıştığım seslerin bir anlık görüntüsü:
Açıkçası seslerin benzersiz grafikleri var. Sadece grafikteki benzersiz sivri çizgileri için özel karakteristiklerini nasıl elde edeceğimizi anlamak istiyorum. Ne genlik, frekans, vb. Ve ne kadar zaman için - sanırım bu önemsiz olsa da.
Basit, adım adım anlaşılır bir talimat listesi istiyorum.
Belki böyle mi? -
Giriş ses verilerini alma
Çizim spektogramı
Gürültüsüz bir ortamda tespit etmek istediğiniz ses için spektogram grafiği edinin
Bu grafiği inceleyin - o sesin benzersiz özelliklerini çizin
(4) 'de bulunan sesin özelliklerini kullanarak canlı ses beslemesindeki bu belirli özellikleri algılayabilen bir tür işlev yapın
Bir eşleşme bulunursa, iş bitti.
Yanlış negatifleri ayıklamak için algoritmayı cilalayın.
Kafam karıştı - nasıl 3,4,5 hakkında giderim. Özellikle 3 ve 4. Kullanıcının daha sonra kullanmak üzere bir jest girişi olarak herhangi bir sesi kaydedebileceği bir yazılım ürettiğim için, sistemimin herhangi bir ses kaydedebilmesini ve canlı sese karşı eşleştirebilmesini istiyorum ses hareketini algılamak için besleyin. Mesela öksürme veya parmak yakalama, ıslık çalma veya alkışlama. Ya sessiz harfleri söyleyerek - ya ya da veya . Hemen hemen her ses.
Kullanıcının, saklamak istedikleri sesi sessiz bir ortamda bir jest olarak kaydetmesini düşünüyordum. Ve kullanıcı sadece sessiz zaman dolgusu arasında ses çıkarırdı ; Kaydın başında ve sonunda 3 saniye.
Diyelim ki, ilk 3 saniye boyunca, sistemim mevcut girişin normal sessiz arka plan sesi olduğunu belirleyecektir. Ve sonra grafikteki ani bir değişiklik ses girişi başlangıcı olacaktır. Ve bu durduğunda, kayıt 3 saniye daha devam eder, arkadaki sessiz zaman dolgusu . Bu kullanıcı tarafından manuel olarak yapılacaktır. Daha sonra otomatik olarak sadece grafikteki ani değişimin sürdüğü parçanın özelliklerini - dolgu süreleri arasında bir yerde saklar.
Ve böylece o parçanın özellikleri, daha sonra canlı ses beslemesinde o sesi tespit etmek için kullanılacak sesin hareket verileri olarak kaydedilecektir.
Sorun şu ki, tüm bunları basit İngilizce olarak düşünüyorum. Kodumda verimli bir şekilde uygulayabilmek için matematik ve fizikte düşünmem gerekiyor. Ne yazacağım ve kodumda nereye yazacağım konusunda çok bilgim yok - elimdeki SO hakkında birçok kütüphane ve soru bile.
Ve eğer bu uzun olsaydı özür dilerim.