Ini adalah perjalanan samping dari aplikasi mendengkur saya .
Saya memiliki celah dalam menghasilkan autokorelasi sinyal audio, untuk melihat apakah itu "berkorelasi" dengan mendengkur / bernafas dengan sangat baik. Saya memiliki algoritma sederhana yang berjalan (menghasilkan 1.0 sebagai elemen nol, yang merupakan pertanda baik), tetapi saya bertanya-tanya bagaimana cara mengevaluasi hasil untuk menentukan apakah autokorelasi kuat, dan, mungkin lebih jauh, bagaimana menggunakannya untuk memisahkan berbagai sumber suara yang mungkin.
Pertanyaan # 1: Apakah RMS autokorelasi (melewatkan elemen nol) sama bagusnya dengan metrik "kualitas", atau adakah yang lebih baik?
Untuk menguraikan: Saya hanya ingin cara numerik (vs "melihat" pada grafik) untuk membedakan sinyal yang sangat autokorelasi dari yang kurang autokorelasi.
(Saya benar-benar tidak cukup tahu untuk mengetahui pertanyaan lain apa yang harus diajukan.)
Beberapa hasil awal: Dalam beberapa kasus autokorelasi (baik RMS atau puncak) menunjukkan lompatan dramatis pada dengkuran - tepatnya respons yang ingin saya lihat. Dalam kasus-kasus lain tidak ada gerakan sama sekali dalam langkah-langkah ini (dan ini bisa menjadi dua dengkuran berturut-turut dengan dua tanggapan), dan dalam situasi dengan kebisingan tinggi pengukuran sebenarnya menurun (sedikit) selama mendengkur.
Pembaruan - 22 Mei: Saya akhirnya punya waktu untuk mengerjakan ini lagi. (Saya menggunakan aplikasi lain yang benar - benar menyebalkan.) Saya memasukkan output dari autokorelasi ke dalam FFT dan hasilnya agak menarik - ini menunjukkan puncak yang cukup dramatis di dekat titik asal ketika dengkur mulai.
Jadi sekarang saya dihadapkan dengan masalah bagaimana mengukur puncak ini. Anehnya, puncak tertinggi, dalam hal besarnya absolut, terjadi di lain waktu, tetapi saya mencoba rasio puncak ke rata-rata aritmatika dan yang melacak cukup baik. Jadi apa sajakah cara yang baik untuk mengukur "peakedness" dari FFT. (Dan tolong jangan katakan bahwa saya perlu mengambil FFT - hal ini sudah hampir menelan ekornya sendiri. :))
Juga, terpikir oleh saya bahwa kualitas FFT mungkin sedikit meningkat jika saya mencerminkan hasil autokorelasi yang dimasukkan, dengan nol (yang menurut definisi besarnya 1,0) di tengah. Ini akan menempatkan "ekor" di kedua ujungnya. Apakah ini (mungkin) ide yang bagus? Haruskah gambar cermin tegak atau terbalik? (Tentu saja, saya akan mencobanya terlepas dari apa yang Anda katakan, tapi saya pikir mungkin saya bisa mendapatkan beberapa petunjuk tentang detailnya.)
Mencoba kerataan--
Kasing uji saya dapat dibagi secara kasar ke dalam kategori "berperilaku baik" dan kategori "anak bermasalah".
Untuk kasus uji "berperilaku baik", kerataan FFT autokorelasi menurun secara dramatis dan rasio puncak dengan rata-rata autokorelasi naik selama mendengkur. Rasio kedua angka tersebut (rasio puncak dibagi dengan kerataan) sangat sensitif, menunjukkan pendakian 5-10x selama napas / dengkuran.
Namun, untuk "anak-anak bermasalah", angka-angka mengarah tepat ke arah yang berlawanan. Rasio puncak / rata-rata sedikit menurun sementara kerataan sebenarnya meningkat 50-100%
Perbedaan antara dua kategori ini adalah (sebagian besar) berlipat tiga:
- Tingkat kebisingan (biasanya) lebih tinggi pada "anak-anak bermasalah"
- Tingkat audio (hampir selalu) lebih rendah pada "anak bermasalah"
- "Anak-anak bermasalah" cenderung terdiri dari lebih banyak bernapas dan mendengkur yang sebenarnya kurang (dan saya perlu mendeteksi keduanya)
Ada ide?
Pembaruan - 25/5/2012: Agak terlalu dini untuk memiliki tarian kemenangan, tetapi ketika saya merefleksikan autokorelasi tentang suatu poin, mengambil FFT tentang itu, dan kemudian melakukan kerataan spektral, skema rasio gabungan saya menunjukkan lompatan yang baik dalam beberapa lingkungan berbeda. Mencerminkan autokorelasi tampaknya meningkatkan kualitas FFT.
Namun satu titik minor adalah bahwa, karena "komponen DC" dari "sinyal" yang dipantulkan adalah nol, hasil FFT nol selalu selalu nol, dan ini agak memecah rata-rata geometrik yang mencakup nol. Tetapi melewatkan elemen nol tampaknya berhasil.
Hasil yang saya dapatkan masih jauh dari cukup untuk mengidentifikasi dengkuran / nafas dengan sendirinya, tetapi tampaknya ini merupakan "konfirmasi" yang cukup sensitif - jika saya tidak mendapatkan "lompatan" maka itu mungkin bukan dengkuran / nafas.
Saya belum menganalisisnya dengan cermat, tetapi saya curiga bahwa yang terjadi adalah suara siulan terjadi di suatu tempat selama napas / dengkuran, dan peluit itulah yang terdeteksi.