FFT không thực sự là cách tốt nhất để thực hiện phát hiện quảng cáo chiêu hàng hoặc theo dõi quảng cáo chiêu hàng. Một vấn đề là tần số lớn nhất không phải lúc nào cũng là tần số cơ bản. Khác là FFT, một mình, đòi hỏi một số lượng khá lớn dữ liệu và xử lý để có được độ phân giải bạn cần phải điều chỉnh một công cụ, do đó, nó có thể xuất hiện chậm để đáp ứng (tức là độ trễ). Tuy nhiên, một vấn đề khác là kết quả của một FFT là nhất thiết trực quan để làm việc với: bạn nhận được một mảng các số phức và bạn phải biết cách giải thích chúng.
Nếu bạn thực sự muốn sử dụng một FFT, đây là một cách tiếp cận:
- thấp vượt qua tín hiệu của bạn. Điều này sẽ giúp ngăn ngừa tiếng ồn và độ hài cao hơn từ việc tạo ra các kết quả giả mạo. Conceivably, bạn có thể làm bỏ qua bước này và thay vào đó trọng lượng kết quả của bạn đối với các giá trị thấp hơn của FFT thay thế. Đối với một số công cụ có tần số cơ bản mạnh, điều này có thể không cần thiết.
- Hiển thị tín hiệu của bạn. Windows phải có kích thước nhỏ nhất 4096. Lớn hơn là tốt hơn cho một điểm vì nó mang đến cho bạn độ phân giải tần số tốt hơn. Nếu bạn đi quá lớn, nó sẽ kết thúc tăng thời gian tính toán và độ trễ của bạn. Chức năng hann là một lựa chọn tốt cho cửa sổ của bạn. http://en.wikipedia.org/wiki/Hann_function
- FFT tín hiệu cửa sổ thường xuyên nhất có thể. Ngay cả cửa sổ chồng chéo cũng tốt.
- Kết quả của FFT là số phức. Tìm độ lớn của từng số phức bằng sqrt (real^2 + imag^2). Chỉ số trong mảng FFT có độ lớn nhất là chỉ số có tần số cao nhất của bạn.
- Bạn có thể muốn trung bình nhiều FFT để có kết quả nhất quán hơn.
Bạn tính tần suất từ chỉ mục như thế nào? Vâng, giả sử bạn có một cửa sổ có kích thước N. Sau FFT, bạn sẽ có N số phức. Nếu đỉnh của bạn là giá trị thứ n, và tốc độ lấy mẫu của bạn là 44100, thì tần số cao nhất của bạn sẽ gần (44100/2) * n/N. Tại sao lại gần? bạn cũng gặp lỗi (44100/2) * 1/N. Đối với một kích thước thùng 4096, đây là khoảng 5,3 Hz - dễ nghe ở A440. Bạn có thể cải thiện điều đó bằng cách 1. lấy pha vào tài khoản (tôi chỉ mô tả cách tính đến độ lớn), 2.sử dụng các cửa sổ lớn hơn (sẽ tăng thời gian chờ và xử lý yêu cầu như FFT là thuật toán N Đăng nhập N) hoặc 3. sử dụng thuật toán tốt hơn như YIN http://www.ircam.fr/pcm/cheveign/pss/2002_JASA_YIN.pdf
Bạn có thể bỏ qua bước cửa sổ và chỉ chia âm thanh thành các phần rời rạc tuy nhiên nhiều mẫu bạn muốn phân tích. Điều này tương đương với việc sử dụng cửa sổ vuông, hoạt động, nhưng bạn có thể nhận được nhiều tiếng ồn hơn trong kết quả của mình.
BTW: Nhiều mã giấy phép ứng dụng bộ chỉnh tần này tạo thành các bên thứ ba, chẳng hạn như mặt phẳng z và iZotope.
Cập nhật: Nếu bạn muốn mã nguồn C và hướng dẫn đầy đủ cho phương pháp FFT, tôi đã written one. Mã biên dịch và chạy trên Mac OS X, và nên được chuyển đổi sang các nền tảng khác khá dễ dàng. Nó không được thiết kế là tốt nhất, nhưng nó được thiết kế để dễ hiểu.
Nguồn
2012-07-19 21:11:53
Bạn cần phải có một số hiểu biết cơ bản về biến đổi nhanh chóng để thực hiện những gì bạn đang yêu cầu. Nếu bạn đang tìm kiếm một thư viện FFT java, tôi không thể tưởng tượng nó sẽ là khó khăn để tìm một. Tôi khuyên bạn nên tìm kiếm một thư viện guitar tuner thay vì trừ khi bạn muốn tìm hiểu một số xử lý tín hiệu. FFT sẽ khó thực hiện mà không có sự hiểu biết cơ bản. – Tucker