Biến đổi Fourier rời rạc - tìm kiếm cơ bản một cách nhanh chóng?


9

Đầu tiên, tôi xin lỗi vì tôi là một nhà phát triển phần mềm và đã rất lâu tôi không đi sâu vào toán học thuần túy, vì vậy câu hỏi của tôi có vẻ ngớ ngẩn. Tôi hy vọng là không.

Bối cảnh là sự công nhận cao độ trong âm nhạc.

Nếu bạn ghi chú âm nhạc và áp dụng biến đổi Fourier cho nó, bạn sẽ có và tổng biên độ vô hạn cho các tần số đã cho. Ví dụ, nếu tôi chơi một lưu ý mà cơ bản là , trên bất kỳ thiết bị, sau khi biến đổi Fourier, tôi sẽ có giai điệu ở tại F , 2 F , 3 F , ... , n F . Mỗi tần số sẽ có một biên độ nhất định xác định âm sắc của nhạc cụ (piano, giọng nói, kèn, ... tất cả đều tuân theo lỗ hổng này, nhưng bạn sẽ có biên độ khác nhau cho mỗi giai điệu)FF,2F,3F,,nF

Bây giờ những gì tôi muốn làm là từ một tín hiệu âm thanh nhất định, tìm . Chỉ vậy thôi. Nó phức tạp hơn dường như bởi vì bạn sẽ luôn có nhiễu nền và cứ thế ... Hơn nữa, F không cần thiết phải có tần số với biên độ cao nhất!FF

Vì vậy, ý tưởng của tôi cho việc tìm kiếm là áp dụng một DFT (cũng thực sự là một FFT cho tốc độ) và tìm thấy một frenquency F , do đó F + 2 F + 3 F + ... + n F là tối đa trong đầu ra FFT.FFF+2F+3F++nF

Bạn có nghĩ rằng điều đó là có thể? Bạn có nghĩ rằng điều đó có thể xảy ra trong một thời gian rất ngắn (giả sử <5 mili giây) không?


Có lẽ đây có thể là một câu trả lời: edaboard.com/thread197897.html

Vâng, có nhưng đó là một phương pháp khác phải không? IMHO, nó dễ dàng hơn nhưng ít đáng tin cậy hơn vì nó không thể phân biệt giữa âm thanh hài hòa và không điều hòa ...
Dinaiz

Câu trả lời:


6

Những gì bạn đang mô tả rất giống với phương pháp ước lượng phổ của sản phẩm Harmonic, như được liệt kê trong bài báo CCRMA của Stanford này .

Một FFT không cung cấp cho bạn "tổng biên độ vô hạn", nhưng số lượng thùng kết quả hữu hạn tùy thuộc vào độ dài của FFT.

5 mS chỉ là 1 giai đoạn của một nốt 200 Hz và chỉ một phần của khoảng thời gian dưới 200 Hz. Nhận dạng cao độ âm nhạc thường yêu cầu nghe hoặc phân tích nhiều giai đoạn về tính chu kỳ của âm thanh phát ra. Và rất nhiều âm nhạc sử dụng ghi chú bên dưới G2. Nếu bạn có đủ thời lượng dữ liệu, việc tính toán ước tính cao độ từ dữ liệu đó có thể chỉ mất theo thứ tự micro giây chứ không phải mili giây trên PC hoặc thiết bị di động hiện đại.


Điểm tốt. Tuy nhiên, nếu bạn đã có 2F và 3F, bạn không thực sự cần F, phải không? Trong ví dụ của bạn, 2F = 400hz và 3F = 600hz, vì vậy bạn có thể phát hiện ra rằng F là 200 thậm chí không nghe đủ âm thanh để có khoảng thời gian 5 ms, phải không? Ngoài ra tôi nghe nói về biến đổi wavelet. Bạn có nghĩ rằng đó là một phương pháp tốt hơn để làm điều này?
Dinaiz

@Dinaiz: Phụ thuộc vào nguồn phát ra âm thanh chói tai, và liệu những đoạn tần số âm lượng đó có thực sự đứng yên hay không. Wavelets là một câu hỏi hoàn toàn riêng biệt.
hotpaw2

Vì vậy, phương pháp này không phù hợp để tìm kiếm trong "gần như thời gian thực". Trong tình trạng nghệ thuật hiện tại, liệu có thể tìm thấy, trong vòng chưa đến vài mili giây, với bất kỳ nhạc cụ nào, hay đó là một nguyên nhân đã mất và tôi nên từ bỏ nhiệm vụ của mình? : D
Dinaiz
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.