Bisakah Anda meningkatkan resolusi frekuensi FFT tanpa meningkatkan ukuran jendela?

12

Saya ingin menggunakan STFT untuk analisis multipitch. Saya menyadari mendeteksi parsial yang ada dalam sinyal hanyalah awal. Masih saya punya masalah dengan itu.

Katakanlah saya memiliki sampel sinyal dengan frekuensi 'CD' 44100Hz. Dengan jendela 1024sampel saya mendapatkan resolusi frekuensi bin 22500Hz/512=43Hz. Ini cukup hanya untuk membedakan nada piano tinggi seperti: C5 = 523.251Hzdan C#5 = 554.365.

Dulu kupikir 1024jendela itu cukup besar. Tapi mungkin tidak dan biasanya jendela yang lebih besar digunakan untuk mendeteksi parsial?

Dapatkah resolusi frekuensi ditingkatkan dengan metode lain selain meningkatkan ukuran jendela, yang memperburuk resolusi waktu? Saya memikirkan dua metode:

Metode1:

  1. Membagi sinyal menjadi pita frekuensi dengan bandpassfilters (misalnya 0-11.25Hzdan 11.25-22.5Hz).
  2. Turunkan band-band yang lebih tinggi sehingga frekuensi tinggi asli sekarang menjadi frekuensi rendah (jadi lakukan untuk band kedua 11.25-22.5Hz -> 0Hz-22.5Hz) - tidak yakin ini mungkin.
  3. Set tempat sampah yang dihasilkan dengan label yang disesuaikan.

Metode2:

  1. Gunakan serangkaian filter lowpass dengan batas yang meningkat.
  2. Lakukan FFT pada peningkatan rentang frekuensi.
  3. Untuk setiap frekuensi gunakan resolusi sebaik mungkin (nampan dari FFT pertama di mana frekuensi ini dimasukkan).
  4. Ini akan menyebabkan frekuensi rendah untuk memiliki resolusi yang lebih baik tetapi saya pikir ini ok karena untuk catatan yang lebih tinggi perbedaan frekuensi adalah parutan.

Saya akan berterima kasih atas komentar tentang masalah ini.

Saya juga baca di sini: Bagaimana ukuran jendela, laju sampel memengaruhi estimasi pitch FFT? tentang metode meningkatkan hasil pengambilan puncak. Saya pikir akan mencoba menggunakannya.

nuoritoveri
sumber
Jika Anda tahu hanya ada satu komponen sinus, Anda bisa memasukkan parabola ke tempat sampah di sebelahnya dan menyisipkannya untuk menemukan puncak yang "benar". Tidak yakin bagaimana ini dibandingkan dengan metode fase yang dijelaskan oleh @pichenettes.
endolit

Jawaban:

9

Jika Anda benar-benar bersikeras menggunakan FFT (daripada metode parametrik, yang tidak akan menderita pertukaran waktu / frekuensi), Anda dapat memalsukan resolusi yang jauh lebih baik dengan menggunakan informasi fase untuk memulihkan frekuensi sesaat untuk setiap nampan FFT. Partial kemudian dapat dideteksi dengan mencari plateaus dalam fungsi yang memberikan frekuensi sesaat sebagai fungsi indeks bin FFT. Implementasi umum dari teknik ini seperti yang dijelaskan dalam makalah ini akan "biaya" Anda satu STFT tambahan (frekuensi sesaat dipulihkan oleh operasi pada STFT sinyal, dan STFT turunan dari sinyal).

Lihat misalnya fungsi ifgram dalam implementasi Matlab ini untuk pemodelan sinusoidal dari sinyal audio.

Perhatikan bahwa ini tidak akan membantu menyelesaikan dua parsial yang jatuh ke nampan FFT yang berdekatan. Ini hanya akan memberikan perkiraan frekuensi yang jauh lebih akurat daripada hanya mengkonversi ke frekuensi indeks bin FFT dari puncak spektral.

pichenettes
sumber
Apa yang Anda maksud dengan metode parametrik? Juga, apakah Anda yang beberapa bulan lalu menyebutkan algoritma yang mirip FFT tetapi memiliki skala oktaf frekuensi daripada skala frekuensi seragam?
Jim Clay
Metode parametrik adalah metode analisis sinyal statistik yang mengandaikan bahwa sinyal dihasilkan oleh proses spesifik yang dijelaskan oleh serangkaian parameter, dan yang menghitung estimasi kuadrat terkecil dari parameter-parameter ini dari pengamatan. Sebagai contoh jika Anda berasumsi bahwa sinyal adalah jumlah N sinusoids + noise teredam secara eksponensial, algoritma seperti ESPRIT atau MUSIC dapat digunakan untuk menyimpulkan amplitudo dan pulsasi N kompleks.
pichenettes
2
Anda mungkin merujuk pada transformasi konstanta-Q. Peringatannya adalah bahwa tidak ada tempat yang seefisien-bijaksana seperti FFT; dan bahwa membalikkan transformasi ini adalah masalah optimisasi non-sepele.
pichenettes
@JimClay: Mungkin ini harus dimigrasikan di sini?
endolit
1
Untuk mengatakan metode parametrik tidak menderita dari trade-off waktu / frekuensi adalah menyesatkan. Pada intinya, metode parametrik memodelkan sistem dan menggunakan model untuk mengekstrak data yang bermakna. Tetapi kinerjanya hanya sebagus model. Dengan asumsi model "terbaik" dipilih (jumlah kutub atau jumlah vektor eigen ruang sinyal), kinerja metode ini masih sangat sensitif terhadap panjang rekaman data.
Bryan
2

Istilah "resolusi" memiliki banyak arti. Secara umum, Anda tidak dapat meningkatkan kemampuan Anda untuk memisahkan (atau "menyelesaikan") puncak spektral jarak dekat dengan interpolasi menggunakan panjang data jendela yang sama. Tetapi Anda dapat memperkirakan frekuensi puncak spektral stasioner terisolasi yang jauh di atas lantai kebisingan dengan resolusi lebih halus (kadang-kadang resolusi jauh lebih halus) daripada jarak FFT bin dengan berbagai metode interpolasi.

Metode interpolasi hasil FFT umum untuk perkiraan resolusi yang lebih tinggi termasuk interpolasi parabola, interpolasi Sinc, zero-padding data menjadi FFT yang lebih lama, dan metode fase vocoder menggunakan (sedikit) offset windows yang tumpang tindih.

FFT pada dasarnya adalah bank filter bandpass, masing-masing dengan transisi yang sangat curam tetapi banyak riak stop-band untuk panjang kernel filter FIR yang diberikan. Dengan demikian, filter ini tidak memiliki penolakan noise yang hebat terhadap noise non-periodik di jendela. Jika Anda mencurigai jenis gangguan ini sebagai masalah, maka FFT berjendela atau bank filter khusus mungkin berkinerja lebih baik.

hotpaw2
sumber
1

Setelah penelitian lebih lanjut yang diajukan oleh pertanyaan Jim Clay dan jawaban pichenettes dalam komentar, saya menemukan bahwa Method2 saya diciptakan kembali B-transformed Q-transform dijelaskan misalnya oleh Kashima dan Mont-Reynaud (saya tidak yakin saya dapat menautkan ke artikel ini, file terlihat robek ) .

Pendekatan mereka secara algoritmik lebih efisien karena mereka mulai dari rentang frekuensi terbesar dan secara iteratif menurunkannya 2 hingga mereka mencapai oktaf terendah.

Manfaat transformasi Q juga dieksplorasi oleh Brown misalnya di sini . Ini mungkin tidak seefisien FFT tunggal, tetapi memiliki keuntungan tidak menghitung FFT tebal pada pita frekuensi tinggi yang tidak memerlukan ini.

Terima kasih atas semua jawaban, komentar, dan tautan.

nuoritoveri
sumber
Apa yang Anda gambarkan terdengar sangat mirip dengan transformasi wavelet, yang tampaknya dikonfirmasi oleh ini . Saya menyadari ini adalah posting lama, tetapi pembaca di masa depan mungkin ingin melihat wavelet juga. Meskipun, seperti yang saya tunjukkan dalam jawaban saya, Anda tidak dapat mengubah prinsip ketidakpastian frekuensi waktu, tetapi pengetahuan tentang data dapat memungkinkan Anda sedikit menipu.
orodbhen
1

Jika Anda menyimpan "histori" input, dan menggunakannya untuk tumpang tindih DFT Anda, maka itu akan memberikan lebih banyak informasi untuk mengekstrak dari konten spektral. Tentu saja, itu tergantung pada sifat waktu sinyal Anda yang berbeda-beda. Ini akan serupa dalam bentuk dengan fungsi distribusi probabilitas.

Ini akan memberi Anda DFT yang berjarak lebih dekat dalam waktu. Namun, itu masih akan meningkatkan ketidakpastian temporal dari masing-masing DFT, yang dibatasi oleh hukum alam: nilai pasti perilaku temporal dan spektral tidak dapat secara bersamaan ditentukan.

Namun, jika konten frekuensi tidak banyak berbeda di dalam jendela, maka itu akan baik-baik saja.

orodbhen
sumber