Bagaimana cara menentukan "variabilitas" dalam rentang frekuensi?

8

Ini merupakan kelanjutan dari pertanyaan sebelumnya .

Saya mencoba menganalisis suara pernapasan dan dengkuran, dan sementara saya bisa mendeteksi dengkuran dengan cukup baik sekarang, pernapasan adalah tantangan yang lebih besar.

Saya telah belajar bahwa jika saya memecahkan rentang frekuensi yang dianalisis (sekitar 4KHz, sampel pada sekitar 8KHz, dengan ukuran 1024) menjadi sekitar 5 subrange, sangat sering salah satu subrange menunjukkan sensitivitas yang baik (menggunakan perbedaan spektral) yang terkubur dalam kebisingan di kisaran keseluruhan. Caranya adalah menentukan subrange mana yang harus "dipercaya" kapan.

Mungkin subrange "dapat dipercaya" akan menunjukkan variabilitas pada tingkat antara 2Hz dan 0,05Hz, sedangkan subrange "buruk" akan berperilaku lebih acak, dengan sebagian besar variasinya berada pada interval yang lebih pendek.

Saya dapat menggabungkan beberapa jenis algoritma untuk menghaluskan nilai pada resolusi sub-detik dan kemudian menghitung variabilitas dalam interval yang lebih lama, tapi saya ingin tahu apakah tidak ada algoritma "kalengan" untuk hal-hal semacam ini - sesuatu dengan mungkin sedikit teori di baliknya?

Ada saran?

[Catatan: Saya menyadari bahwa secara teori, seseorang dapat menggunakan FFT untuk mengekstrak info ini, tetapi itu sepertinya menggunakan tongkat baseball untuk membunuh kutu. Mungkin sesuatu yang sedikit lebih ringan?]

Ditambahkan:

Dalam arti (menggunakan analogi) saya mencoba mendeteksi sinyal "baseband" dalam transmisi RF (hanya "RF" adalah frekuensi audio, dan "baseband" di bawah 8Hz). Dan, dalam arti tertentu, "RF" adalah "spread spectrum" - suara yang ingin saya deteksi cenderung menghasilkan banyak harmonisa dan / atau memiliki beberapa komponen frekuensi terpisah, jadi jika satu pita spektrum terlalu berisik saya dapat mungkin memanfaatkan yang lain. Tujuannya adalah untuk pada dasarnya menentukan beberapa metrik yang menyerupai SNR untuk berbagai pita frekuensi, dengan asumsi bahwa sebagian besar "noise" adalah> 2Hz dan sinyal saya kurang dari 2Hz.

Saya memiliki input untuk algoritma ini amplitudo mentah (jumlah amplitudo FFT pada semua frekuensi termasuk) untuk setiap band, diukur pada interval 8Hz.

(Perlu dicatat bahwa, sementara saya belum melakukan pengukuran SNR formal, SNR keseluruhan di seluruh spektrum yang diproses tampaknya sering berada di dekat atau di bawah 1,0 - jika Anda secara visual mengamati amplop suara dalam alat seperti Audacity, tidak ada modulasi dari amplop terlihat (meskipun telinga dapat dengan jelas membedakan suara pernapasan). Inilah sebabnya mengapa perlu untuk menganalisis band untuk menemukan mereka yang memiliki SNR yang layak.)

Daniel R Hicks
sumber
Menurut variabilitas, maksud Anda dalam waktu atau lintas frekuensi?
Telepon
Variabilitas lintas waktu. Pada tingkat antara kira-kira 0,05Hz dan 2Hz, mengabaikan variabilitas pada interval yang lebih panjang atau lebih pendek.
Daniel R Hicks
1
@DanielRHicks Apa yang sebenarnya ingin kami deteksi di sini? Saya ingin memastikan bahwa saya memahami pertanyaan (s) - Saya mencoba untuk mengukur fitur yang ingin Anda ukur terlebih dahulu.
Spacey
Lihat detail yang ditambahkan.
Daniel R Hicks

Jawaban:

4

Daniel,

Setelah membaca ulang pertanyaan Anda, tampaknya apa yang telah saya pelajari dikenal sebagai 'Bandwidth Gabor "mungkin berguna bagi Anda dalam hal ini, karena Anda mencoba mengukur' variabilitas spektral '. (Dilip memberikan jawaban yang baik untuk saya pertanyaan tentang Spectral Moments di sini).

Ketika saya mempelajarinya lebih lanjut, Gabor-Bandwidth tampaknya benar-benar hanya menjadi ukuran seberapa 'spread' spektrum dari rata-rata. (Karenanya manipulasi momen).

Lihatlah dan lihat apa yang Anda pikirkan.

Spacey
sumber
1

Apa yang Anda butuhkan tampaknya jauh lebih besar daripada kutu. Jadi Anda mungkin perlu pergi ke arah yang berlawanan, dan melakukan lebih dari sekedar FFT. Mungkin cepstrum frekuensi rendah atau analisis cepstral untuk menemukan frekuensi "exiter" Anda.

hotpaw2
sumber
Ya, sepertinya itu layak untuk dilihat (atau haruskah saya katakan otni?).
Daniel R Hicks
Saya kira saya tidak melihat cara yang jelas untuk menerapkan "cepstrum" ke data saya untuk menganalisis interval waktu lebih lama dari interval bingkai saya.
Daniel R Hicks
1

Input Anda adalah representasi seperti spektogram beresolusi rendah X(m,n)di mana m adalah indeks bingkai dan n band (subrange index). Baik?

Inilah yang saya sarankan:

Untuk setiap n:

  • Hitung autokorelasi rn(l) dari urutan X(:,n)
  • Hitung ukuran puncak apa pun dari rn(l) untuk lag l dalam kisaran 0,05 hingga 2 Hz (8 hingga 31 dengan asumsi 50% tumpang tindih antara frame).

Pilih subband dengan puncak autokorelasi tertinggi (= lebih "bernada").

Langkah-langkah memuncak untuk dilihat:

  • maksimum autokorelasi dinormalisasi atas rentang yang dipertimbangkan. makslL.rn(l)rn(0)
  • kurtosis
  • rasio rata-rata geometri ke aritmatika

Metrik semacam ini misalnya digunakan untuk membedakan ucapan yang disuarakan / tidak disuarakan.

pichenettes
sumber
Bisakah Anda jelaskan berapa nilai rata-rata geometrik dari rata-rata aritmatik? Juga, ketika Anda menyebutkan maksimum autokorelasi dinormalisasi atas autokorelasi pada tau = 0, mengapa angka itu pantas?
Spacey