Saya telah menggunakan spektral-fluks di masa lalu dan tampaknya berfungsi dengan baik. Ide dasarnya adalah, buat spektrogram sinyal Anda, melintasi pita-pita yang Anda pedulikan. Mari kita asumsikan frekuensi Anda berada pada sumbu y, dan waktu Anda pada sumbu x, seperti itu .
Ini berarti spektogram Anda adalah sebuah matriks. Setiap kolom mewakili nilai absolut FFT dari satu snap-shot dalam waktu sinyal Anda, dan setiap baris mewakili bagaimana energi dari satu band berubah dari waktu ke waktu.
Sekarang, cukup ambil perbedaan kolom. Yaitu, ambil satu kolom, dan kurangi sendiri dari kolom sebelumnya, dan lakukan untuk semua kolom. (Meninggalkan kolom awal saja jelas). Kemudian jumlah semua band. Artinya, jumlahkan semua baris bersama.
Anda akan berakhir dengan sinyal 1-D yang codifies sinyal onsets . Ini akan memberi tahu Anda di mana suara Anda dimulai.
EDIT:
Sekarang setelah Anda mendeteksi onsets, jika Anda ingin mendeteksi yang sebaliknya, (yaitu, ketika sinyal berubah dari aktivitas menjadi tidak ada), fluks spektral sebenarnya memberi Anda informasi itu. Di mana pun Anda memiliki permulaan, Anda akan memiliki puncak positif, dan di mana pun Anda memiliki 'deset' (karena tidak ada kata yang lebih baik), Anda akan memiliki puncak negatif.
Saya hanya akan mengambil puncak positif pertama, dan puncak negatif terakhir, untuk menandai total waktu mulai dan berhenti sinyal saya.