Làm thế nào để kích thước cửa sổ, tỷ lệ mẫu ảnh hưởng đến ước tính sân FFT?


8

Tôi đang cố gắng tạo ra một chương trình phát hiện cao độ trích xuất tần số của các cực đại trong phổ công suất thu được từ FFT ( fftpack). Tôi đang trích xuất các tần số cực đại từ phổ của mình bằng Công cụ ước tính đầu tiên của Quinn để nội suy giữa các số bin. Đề án này dường như hoạt động tốt trong các điều kiện nhất định. Ví dụ: sử dụng hàm cửa sổ hình chữ nhật có kích thước cửa sổ 1024 và tỷ lệ mẫu là 16000, thuật toán của tôi xác định chính xác tần số của âm A440 thuần túylà 440,06 với tần số một phần thứ hai là 880,1. Tuy nhiên, trong các điều kiện khác, nó tạo ra kết quả không chính xác. Nếu tôi thay đổi tốc độ mẫu (ví dụ là 8000) hoặc kích thước cửa sổ (ví dụ: 2048), nó vẫn xác định chính xác phần đầu tiên là 440, nhưng phần thứ hai nằm ở khoảng 892. Vấn đề thậm chí còn tồi tệ hơn đối với các âm không giống như các âm được sản xuất bởi một cây đàn guitar hoặc piano.

Câu hỏi chung của tôi là: Tỷ lệ mẫu, kích thước cửa sổ và chức năng cửa sổ ảnh hưởng đến ước tính tần số của các đỉnh FFT theo cách nào? Giả định của tôi là chỉ cần tăng độ phân giải của phổ sẽ tăng độ chính xác của ước lượng tần số cực đại, nhưng rõ ràng đây không phải là kinh nghiệm của tôi (đệm không cũng không giúp ích gì). Tôi cũng giả định rằng việc lựa chọn chức năng cửa sổ sẽ không ảnh hưởng nhiều vì rò rỉ quang phổ không nên thay đổi vị trí cực đại (mặc dù, bây giờ tôi nghĩ về nó, rò rỉ quang phổ có thể ảnh hưởng đến ước tính tần số nội suy nếu cường độ của các thùng liền kề đỉnh được tăng giả tạo do rò rỉ từ các đỉnh khác ...).

Có suy nghĩ gì không?

Câu trả lời:


8
  1. Sử dụng cửa sổ Gaussian - biến đổi Fourier của Gaussian là Gaussian
  2. Ghi tỷ lệ phổ để nhấn mạnh các đỉnh và biến các đỉnh Gaussian thành các đỉnh parabol
  3. Sử dụng phép nội suy parabol để tìm các đỉnh thực sự.

Lưu ý rằng, như đã đề cập trong §D.1, cường độ biến đổi cửa sổ Gaussian chính xác là một parabola trên thang dB. Kết quả là phép nội suy đỉnh phổ bậc hai là chính xác dưới cửa sổ Gaussian. Tất nhiên, bằng cách nào đó, chúng ta phải loại bỏ các đuôi dài vô hạn của cửa sổ Gaussian trong thực tế, nhưng điều này không gây ra nhiều sai lệch so với parabola, như trong Hình.3.30.

https://ccrma.stanford.edu/~jos/sasp/Quadratic_Interpolation_Spectral_Peaks.html

nhập mô tả hình ảnh ở đây

Tôi ước tính 1000.000004 Hz cho dạng sóng 1000 Hz theo cách này: https://gist.github.com/255291#file_parabolic.py

Nếu bạn gặp sự cố, hãy vẽ phổ và sử dụng mắt của bạn để xem tại sao nó không hoạt động.


2
Cảm ơn bạn! Điều này làm cho ý nghĩa hoàn hảo. Nhật ký của Gaussian là một parabola, do đó phép nội suy parabol của các đỉnh trong phổ log của cửa sổ Gaussian là gần như chính xác. Sau khi thực hiện điều này, tôi nhận được ước tính tần số cực đại FFT nhất quán trên các tỷ lệ mẫu và kích thước cửa sổ khác nhau. Huzzah!
willpett

@ will.pett: Vậy có lẽ vấn đề là do "Công cụ ước tính đầu tiên của Quinn" gây ra nhiều hơn là do FFT?
endolith

Tôi không nghĩ rằng phương pháp nội suy hoàn toàn có lỗi vì nội suy bậc hai cũng cho tôi kết quả xấu với các hàm cửa sổ và tỷ lệ mẫu nhất định. Tôi nghĩ rằng đó là sự kết hợp của các tham số trên là quan trọng. Tôi đã không sử dụng chức năng cửa sổ thích hợp và đã không chuyển đổi phổ của tôi. Tôi đặt cược điều quan trọng nhất là chuyển đổi log. Có lẽ giao thức chuẩn mà tôi không biết.
willpett

@endolith, cảm ơn, hiểu rồi (câu hỏi có thể theo sau)
denis 16/11/13

3

Đầu tiên, ước tính tần số cực đại và ước lượng cao độ là hai điều khác nhau. Sân là một hiện tượng tâm lý âm thanh. Mọi người có thể nghe thấy một cao độ ngay cả với tần số cơ bản hoàn toàn bị thiếu, hoặc tương đối yếu so với hầu hết các đỉnh khác, như trong các nốt thấp được tạo ra bởi một số nhạc cụ.

Thứ hai, không sử dụng cửa sổ nào trên FFT tương đương với sử dụng cửa sổ hình chữ nhật, kết hợp phổ của bạn với chức năng Sinc. Hàm Sinc có rất nhiều bướu lan xa từ đỉnh sẽ hiển thị cho tất cả các tần số không chính xác theo định kỳ trong độ dài FFT (còn được gọi là "rò rỉ quang phổ"). Tất cả sự rò rỉ năng lượng này từ một tần số mạnh sẽ cản trở việc ước tính vị trí của các đỉnh tần số khác. Vì vậy, một chức năng cửa sổ phù hợp hơn (Hamming hoặc von Hann) có thể giúp giảm nhiễu này giữa các đỉnh.

Một FFT dài hơn sẽ làm giảm tần số delta giữa các trung tâm bin, điều này sẽ làm tăng phép nội suy và do đó độ chính xác ước tính tần số cho các phổ đứng yên. Tuy nhiên, nếu FFT dài đến mức phổ thay đổi trong cửa sổ FFT, tất cả các tần số thay đổi đó sẽ được làm mờ cùng nhau trong một FFT dài hơn.


1

Bạn chắc chắn cần một chức năng cửa sổ phù hợp - ảnh hưởng của rò rỉ quang phổ thay đổi đáng kể tùy thuộc vào khoảng thời gian cao độ và độ dài cửa sổ FFT có liên quan - nếu bạn có một thoáng qua giữa mẫu cuối cùng và đầu tiên của cửa sổ FFT thì điều này sẽ tạo ra rất khó chịu bôi nhọ quang phổ, trong khi nếu bạn gặp may mắn và sự gián đoạn này là nhỏ thì phổ kết quả sẽ sạch hơn rất nhiều. Đây có lẽ là lý do tại sao bạn thấy sự không nhất quán khi bạn thay đổi bất kỳ tham số nào như kích thước FFT. Với chức năng cửa sổ phù hợp, bạn sẽ có được một phổ nhất quán khi cao độ thay đổi.


Bây giờ tôi đã thử các chức năng cửa sổ khác nhau (Hamming, Blackman-Harris, Gauss, Weedon-Gauss) và tất cả chúng đều cho tôi kết quả không chính xác trong bất kỳ điều kiện tỷ lệ mẫu / kích thước cửa sổ nào (ví dụ: ước tính tần số từng phần đầu tiên ở 460, 488 và khác). Chỉ có một cửa sổ hình chữ nhật là có thể xác định chính xác một đỉnh ở 440 Hz. Thật thú vị, đỉnh này phần lớn là bất biến với các kết hợp tỷ lệ mẫu / kích thước cửa sổ khác nhau trong một cửa sổ hình chữ nhật, mặc dù phần thứ hai vẫn có thể thay đổi. Làm thế nào để tôi dung hòa những kết quả này với lời khuyên của bạn?

Là một lưu ý phụ, tôi cũng đang sử dụng thuật toán tự tương quan để so sánh với FFT. Phương pháp này (độc lập với chức năng của cửa sổ) mang lại ~ 440,4 Hz cho âm wikipedia, trong khi phương thức FFT cho gần như chính xác 440 mà không có chức năng cửa sổ. Tôi nhận ra rằng tự tương quan không trực tiếp ước tính tần số một phần đầu tiên, mà là "cao độ" tâm lý, nhưng vẫn rất thú vị để so sánh. Từ việc thử nghiệm các giai điệu piano, tôi đã nhận thấy rằng phương pháp tự tương quan luôn đánh giá quá cao tần số một phần đầu tiên so với phương pháp FFT.

1
Thật khó để đoán những vấn đề có thể xảy ra nếu không nhìn thấy mã, v.v. Bạn đã thử vẽ sơ đồ phổ công suất để xem các đỉnh thực sự trông như thế nào khi có / không có chức năng cửa sổ chưa? Điều này không chỉ cho bạn biết liệu cửa sổ / FFT / etc của bạn có hoạt động chính xác hay không mà còn có thể cung cấp cho bạn một số thông tin chi tiết về lý do tại sao thuật toán ước tính cao độ của bạn đưa ra kết quả như vậy.
Paul R

Điều này thật kỳ lạ, bởi vì các chức năng của cửa sổ thực sự tạo ra quang phổ trông sạch hơn, ít bị nhòe. Tuy nhiên, ước tính của các tần số cao nhất là không đúng. Khi tôi sử dụng các cài đặt cung cấp cho tôi 440 Hz mà không có cửa sổ, sau đó chuyển sang cửa sổ Hamming, tôi nhận được 444,6 Hz. Với cửa sổ Blackman-Harris, tôi nhận được 460,9 Hz và với cửa sổ Gaussian, tôi nhận được 446,4 Hz. Có thể các phương pháp nội suy cực đại đưa ra các giả định ngầm về chức năng cửa sổ mà tôi có thể vi phạm?
willpett

Tôi không thực sự quen thuộc với các phương pháp nội suy trong bài viết mà bạn liên kết đến - chúng dường như đang sử dụng cả thông tin về cường độ và pha chứ không chỉ là cường độ, nhưng tôi sẽ không nghĩ rằng cửa sổ sẽ có tác động đáng kể đến pha.
Paul R
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.