Tần số thấp hơn mạnh hơn trong FFT?


15

Tôi đang tính FFT từ đầu vào micrô. Tôi nhận thấy rằng tần số thấp hơn dường như luôn có nhiều công suất (dB cao hơn) so với tần số cao hơn.

  1. Tôi cắt dữ liệu thành các khung là 24576 byte (4096 * 6).
  2. Áp dụng cửa sổ Hamming: input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/fs));
  3. Chạy nó thông qua FFTW Process1D().
  4. Chuyển đổi từ số phức: output[i] = 10.0 * Math.Log10((fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]));
  5. Trung bình ra 6 giá trị để có được FFT hoàn chỉnh 4096 byte.
  6. Vẽ hình ảnh đẹp (màu sắc được ánh xạ vào bảng màu).

Tính trung bình (pt. 5) được thực hiện để giảm nhiễu FFT.

Vì hình ảnh hiển thị cả với âm thanh và tắt mic, nên có nhiều năng lượng hơn (và nhiều nhiễu hơn) ở các tần số thấp hơn. Điều này cho thấy nó không chỉ là vấn đề mic / phụ.

Câu hỏi của tôi:
1. Điều này có được mong đợi không? Tại sao?
2. Bất kỳ cách tiêu chuẩn để sửa lỗi này? Hầu như trông giống như một số phép thuật Math.Tan () có thể nâng nó lên nơi nó thuộc về.

Mục tiêu của tôi là có thể xác định 5 tần số hàng đầu mà không có tần số thấp hơn chiến thắng theo mặc định.

FFT


Vui lòng thử cửa sổ Hamming chính xác trước để xem mảnh vỡ cửa sổ có phải là nguyên nhân gây ra tiếng ồn tần số thấp này không.
hotpaw2

@Tedd Hansen, làm thế nào bạn kết thúc "xác định 5 tần số hàng đầu mà không có tần số thấp hơn" - top 5 từ các dải tần số 1/3 quãng tám có trọng số ??
chối

Câu trả lời:


12

Vâng, điều này rất được mong đợi. Những gì bạn thấy là phổ " màu hồng ", tức là năng lượng không đổi trên mỗi băng thông tương đối, so với " trắng " là năng lượng không đổi trên băng thông tuyệt đối. Đối với tín hiệu màu hồng, năng lượng trong khoảng 1-2kHz tương đương với từ 2-4kHz (mỗi tín hiệu đại diện cho việc nhân đôi băng thông hoặc "quãng tám".

Hầu hết các tín hiệu âm thanh tự nhiên (Lời nói, âm nhạc, phim ảnh, v.v.) có phổ giống như màu hồng. Ngoài ra hầu hết các tạp âm nền (tiếng ồn micrô, tiếng ồn HVAC, dao động áp suất không khí, nền chung) có xu hướng màu hồng hoặc thậm chí nghiêng nhiều hơn về tần số thấp hơn.

Các hệ thống thính giác của con người cũng hoạt động theo cách đó. Ở tai trong, các tín hiệu âm thanh được chia thành các dải có băng thông tương đối không đổi (được gọi là "Dải quan trọng") gần giống như phổ tám quãng ba.

Cách tốt nhất để xem dữ liệu phổ âm thanh là vẽ biểu đồ theo thang tần số logarit.


Tuyên bố rằng "tín hiệu âm thanh tự nhiên có phổ giống như màu hồng", bỏ qua việc xem xét quy mô thời gian. Trong một thời gian dài (~ 10 giây) tôi đồng ý và chắc chắn sau vài phút câu nói đó có xu hướng đúng. Nhưng quang phổ ở đây được tính trên 0,55 giây. Nếu đầu vào là ví dụ, âm nhạc, tôi mong đợi một cấu trúc âm sắc hơn nhiều.
mtrw

2
"Âm sắc" ảnh hưởng nhiều hơn đến cấu trúc mịn của quang phổ. Hình dạng tổng thể (về năng lượng trên mỗi quãng tám) vẫn sẽ chủ yếu là màu hồng cho âm nhạc trừ khi nó giống như "solo cho tam giác và sụp đổ cymbal"
Hilmar

1
@mtrw: Sóng vuông chắc chắn là âm, nhưng sóng hài tần số cao vẫn rơi ở tốc độ 1 / f.
endolith

8

Trong bước 2, công thức nên là input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/N));, Nsố lượng mẫu trong bộ đệm, trong trường hợp của bạn 24576.

Trong bước 4 & 5, tôi sẽ thực hiện tính trung bình theo tỷ lệ trung bình trên các giá trị cường độ bình phương, không phải giá trị dB. Nói rằng bạn có độ lớn bình phương [4,6]. Trung bình của họ là 5, 10*log10(5) ~= 6.99. Trung bình của 10*log10(4)10*log10(6)6.90.

Vấn đề đầu tiên có thể là nguyên nhân của sự sai lệch đối với tần số thấp, vì nó sẽ gây ra rò rỉ quang phổ và tần số thấp sẽ bị nhiễm bẩn nhiều hơn từ đường DC (chắc chắn là một ước tính kém). Vấn đề thứ hai có lẽ sẽ không tạo ra sự khác biệt ở các tần số thấp, nhưng tôi nghĩ rằng sẽ tiến gần hơn đến mục đích đo lường của bạn.


fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]4610đăng nhập10(5)(10đăng nhập10(4)+10đăng nhập10(6))/2

Trong phần giải thích của bạn ở trên, tôi tin rằng bạn muốn chiều rộng cửa sổ (N) là 4096, vì đây là chiều rộng của FFT đang được áp dụng. Cửa sổ này sẽ cần được áp dụng cho 4096 mẫu được chuyển đổi trước mỗi fft.
Jacob

@Jacob - OP đang tính toán FFT 6 * 4096 điểm, sau đó lấy trung bình 6 thùng liền kề để giảm xuống 4096 điểm.
mtrw

5

Tiếng ồn 1 / f xảy ra trong nhiều hệ thống vật lý, sinh học và kinh tế. Một số nhà nghiên cứu mô tả nó là phổ biến.

tiếng ồn trắng hồng

Nhiễu hồng (trái) và nhiễu trắng (phải) trên phổ FFT với trục dọc tần số tuyến tính (trên máy phân tích phổ âm thanh hoặc phổ tương tự, nhiễu hồng sẽ phẳng, không dốc xuống và nhiễu trắng tăng)


6
Tiếng ồn bên trái chắc chắn là màu hồng nhưng bên phải trông hơi cam :-)

Mặc dù sự thật là tiếng ồn 1 / f có mặt ở khắp mọi nơi, một mặt trước tương tự được thiết kế tốt cho âm thanh thường có mức nhiễu thấp 1 / f ở trên, giả sử là 10 Hz. Tiếng ồn trắng chiếm ưu thế trong các dải quan tâm.
mtrw

4

Đây có phải là mong đợi? Tại sao?

Rất nhiều âm thanh tự nhiên có sóng hài , do đó sẽ có tần số cơ bản thấp hơn và sau đó ít năng lượng hơn trong bội số cơ bản cao hơn. Có thể có một thiên vị DC có nghĩa là rất nhiều năng lượng ở bên trái. Một ảnh hưởng khác là chức năng cửa sổ của bạn làm biến dạng đáp ứng tần số.

Bất kỳ cách tiêu chuẩn để sửa lỗi này? Hầu như trông giống như một số phép thuật Math.Tan () có thể nâng nó lên nơi nó thuộc về.

Bạn có thể đối phó với độ lệch DC bằng cách sử dụng bộ lọc thông cao. Việc thực hiện đơn giản là trừ trung bình dài hạn từ mọi mẫu (EDIT: hoặc thậm chí đơn giản hơn, loại bỏ các tần số thấp hơn, ví dụ <50Hz từ kết quả FFT của bạn). Bạn cũng có thể thử nghiệm với các chức năng cửa sổ khác nhau. đảm bảo (như @mtrw chỉ ra) rằng bạn đang áp dụng đúng cửa sổ. Bất kỳ sự phi tuyến tính nào khác trong phản hồi có thể được sửa chữa bằng cách đo một số đầu vào lý tưởng và chuẩn hóa đường cong đó.


Các chức năng cửa sổ không nên ảnh hưởng đến đáp ứng tần số, phải không?
endolith

@endolith: Nó- bạn nhân dữ liệu của mình với chức năng cửa sổ và chức năng kết hợp có một phản ứng khác nhau. Đọc bài viết Wikipedia được liên kết thảo luận về điều này sâu hơn. Thực tế của việc xử lý các mẫu trong thế giới thực là thường có một số cửa sổ (ví dụ hình chữ nhật) và bạn chỉ có thể ước chừng đáp ứng tần số của tín hiệu nguồn (vô hạn) vì điều đó.
Guy Sirton

Có lẽ chúng ta đang nghĩ về "đáp ứng tần số" khác nhau. Nếu tín hiệu đứng yên và bạn áp dụng chức năng cửa sổ cho nó, thì phổ phải có cùng biên độ ở cùng tần số, bất kể bạn sử dụng chức năng cửa sổ nào, chỉ khác nhau bởi một hệ số tỷ lệ ảnh hưởng đến tất cả các tần số như nhau. Độ rộng của mỗi tần số sẽ khác nhau, nhưng chiều cao của các xung sẽ giống nhau. Chức năng cửa sổ không hoạt động như một bộ lọc làm suy giảm một số tần số nhiều hơn các tần số khác.
endolith

@endolith: Hãy tưởng tượng một sóng hình sin vô hạn, bây giờ nhân với một cửa sổ cos ^ 2. Bạn vẫn sẽ có một thành phần ở tần số ban đầu nhưng biên độ của nó sẽ bị "tắt" và bạn sẽ có các thành phần tần số mới đến từ cửa sổ. Xem đoạn đầu tiên tại đây: en.wikipedia.org/wiki/Spectral_leakage
Guy Sirton

Có, nhưng biên độ "tắt" sẽ giống nhau cho dù tần số của sóng hình sin vô hạn là bao nhiêu, phải không?
endolith
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.