Phát hiện cao độ đàn piano


8

Tôi đang làm việc trên một chương trình điều chỉnh piano và một phần của nó yêu cầu phát hiện cao độ theo thời gian thực. Đây là sơ đồ tôi có cho đến nay hoạt động ở một mức độ nào đó nhưng có thể có thể sử dụng một số tinh chỉnh.

Tôi đang thu âm thanh mono, 44,1kHz, PCM 16 bit trong các khối 2 ^ 14 mẫu. Tôi kết hợp 4 mẫu cuối cùng vào bộ đệm có chiều dài 2 ^ 16, áp dụng cửa sổ Hann cho bộ đệm và chạy FFT trên nó. Sau đó, tôi xô các kết quả của FFT theo hai độ phân giải. Đầu tiên, tôi xô thành 200 thùng và sau đó chạy thuật toán phát hiện bước HPS ở mức độ chi tiết này. Tôi không cần phải có tần suất chính xác ở đây, tôi chỉ muốn đến gần. Sau đó, tôi xô vào 12000 thùng, cho tôi độ phân giải 1 cent từ 10Hz đến 10kHz. Khi tôi biết tần số gần đúng từ thuật toán HPS 200 bin, tôi tìm kiếm phạm vi của trường hợp 12000 bin để tìm đỉnh để có tần số chính xác hơn.

Điều này có vẻ hoạt động tốt cho các ghi chú ở giữa bàn phím. Điều xảy ra với các ghi chú thấp là khoảng 1,5 giây nhận dạng sai của ghi chú vì thường là phần thứ 2 hoặc thứ 3 của ghi chú thực và sau đó là nhận dạng chính xác của ghi chú.

Trong tất cả các ô quang phổ tôi tạo ra để xem những gì đang diễn ra, có nhiều chiều rộng hơn đến các đỉnh mà tôi mong đợi. Chiều rộng này có phần nhất quán trực quan từ trường hợp 200 thùng đến 12000 thùng. Tôi đã dự kiến ​​các đỉnh sẽ hẹp hơn trong trường hợp 200 bin.

Vì vậy, việc xử lý tín hiệu là mới đối với tôi vì vậy có thể có những vấn đề mà tôi không nghĩ sẽ hỏi nhưng về các câu hỏi cụ thể, liệu kích thước mẫu có đủ cho nhiệm vụ này không? Có phải Hann là lựa chọn đúng đắn của cửa sổ? Tôi có nên làm mịn dữ liệu trước FFT không? HPS nhạy cảm như thế nào với số lượng thùng? Tôi đã nghĩ rằng nếu tôi sử dụng nhiều thùng thì tính không điều hòa có thể không làm cho các phần chồng lấp các nguyên tắc cơ bản của chúng với cách tiếp cận đơn giản của thuật toán HPS chia cho 2, 3, 4, v.v.


Biến đổi Q-hằng sẽ được sử dụng cho ứng dụng này? wellesley.edu/Physics/brown/pub/cq1stPaper.pdf
Atul Ingle

Chỉ tò mò: bạn sử dụng loại thiết bị phần cứng nào để thu tín hiệu, mic thông thường?
lưỡng cư

Tôi đang sử dụng micro Samson CO1U.
DrTodd13

Câu trả lời:


6

Tương tự như chủ đề này:

Có một thuật toán để tìm tần số mà không có DFT hoặc FFT không?

FFT không phải là một cách hiệu quả đặc biệt để xây dựng bộ chỉnh tần số. Các phương pháp tốt hơn (và rẻ hơn) bao gồm tự động tương quan, các vòng bị khóa theo giai đoạn và trì hoãn các vòng bị khóa, v.v.

Một ví dụ là sử dụng theo dõi cực đại và cực tiểu cục bộ để tăng khoảng tần số cơ bản và sau đó sử dụng bộ tạo dao động cục bộ và vòng khóa pha để theo dõi tần số này một cách chính xác. Điều này có thể theo dõi một cơ bản di chuyển trong khi điều chỉnh nhanh chóng, liên tục và với độ chính xác cao ngay cả khi tần số thấp và nếu cơ bản yếu.


Chà, tôi đã sử dụng FFT ở những nơi khác trong chương trình để đo độ không điều hòa và tính toán khớp một phần. Vì vậy, nó cũng dễ nhất đối với tôi để sử dụng lại cho mục đích này. Tôi không quá quan tâm đến giá rẻ nhưng nếu các vòng bị khóa theo giai đoạn tốt hơn tôi sẽ kiểm tra chúng. Cho rằng đây không phải là lĩnh vực chuyên môn của tôi, việc thực hiện một số trong những điều này dường như không thể hiểu được.
DrTodd13

2

Tìm kiếm 'phần mềm điều chỉnh piano' hoặc các mục tương tự sẽ mang lại số lượng truy cập lớn - một số tốt, một số không tốt.

Mỗi loại nhạc cụ có đặc điểm âm thanh / vật lý / môi trường độc đáo ảnh hưởng đến âm thanh của nó. Và nó có thể trở nên phức tạp, vì hàng ngàn cuốn sách và tài liệu nghiên cứu sẽ đề xuất (ví dụ: tính chất tấn công, đặc điểm tấn công / phân rã, tính không điều hòa, v.v.).

Phát hiện cao độ là một lĩnh vực rộng. Sau đây là một phần rất nhỏ của những gì có sẵn: bài viết tổng quan 1bài trao đổi ngăn xếpbài viết tổng quan 2

Đối với các câu hỏi cụ thể của bạn: 1) kích thước mẫu của bạn có vẻ như quá mức cần thiết - tùy thuộc vào SNR và độ ổn định của dạng sóng, bạn có thể có được độ chính xác tần số cao bằng các phương pháp khác sử dụng ít chu kỳ hơn. (một số phương pháp dựa trên FFT). Và bạn có thể bắt được tấn công / phân rã với thời gian mẫu dài, 2) bất kỳ cửa sổ nào ngoài hình chữ nhật sẽ mở rộng độ rộng chùm trong miền tần số, nhưng điều đó không có nghĩa là bạn không nên sử dụng một - Hann dường như phổ biến với HPS , từ những gì tôi đã thấy, 3) như đã lưu ý trong liên kết đầu tiên ở trên, HPS không hoạt động tốt ở tần số thấp và tính không điều hòa sẽ ảnh hưởng đến bạn ở các chuỗi thấp hơn. Đối với phương pháp tổng thể của bạn, không phải viết nhiều trang, tôi chỉ có thể nói rằng tôi sẽ làm khác đi, tùy thuộc vào dải tần số và sóng hài tôi đang xử lý.


Một số biến thể cepstrum trông thú vị để thử vì vậy tôi sẽ bắt đầu với nó. Có lẽ tôi nên loại bỏ phần mẫu tương ứng với "tấn công" / tấn công búa. Có ai tình cờ biết ghi chú mất bao lâu để đạt đến trạng thái hơi ổn định hoặc có cách mô tả trạng thái ban đầu để tôi có thể lọc nó không?
DrTodd13

Thông tin được đưa ra ngoài, nhưng có thể rất khó tìm - ví dụ, hãy xem chủ đề này từ diễn đàn 'thế giới đàn piano' về 'Attack'characteristic: pianoworld.com/forum/ubbthreads.php/topics/1125286/What% 20is
Kevin McGee

2

Một câu trả lời khác cho thấy PLL. Tôi nghĩ bạn nên tránh xa PLL: hầu hết các tài liệu về theo dõi cao độ tập trung vào tương quan tự động (tìm kiếm "YIN Pitch Theo dõi" - YIN là một thuật toán theo dõi cao độ hiện đại dựa trên tương quan tự động) và FFT. Tôi tin rằng PLL phù hợp hơn để theo dõi các dao động nhỏ về tần số, như với radio.

Tự động tương quan là một nơi tốt để bắt đầu. Nó là nhanh chóng, hiệu quả và chính xác. Tuy nhiên, có những mẹo để tạo FFT rất chính xác và nhanh chóng (hầu hết các kỹ thuật sử dụng FFT chỉ nhìn vào độ lớn, nhưng bạn cũng có thể sử dụng thông tin pha), vì vậy nếu bạn quen thuộc với FFT, bạn cũng có thể sử dụng kỹ thuật đó.

Nếu bạn sử dụng một trong hai kỹ thuật này, tôi khuyên bạn nên tiền lọc với đường thông thấp để giảm sóng hài và tập trung vào cơ bản. Với FFT, thay vào đó, bạn có thể sử dụng các thủ thuật như nhìn vào mức tối đa cục bộ đầu tiên.

Đây có thể là một điểm khởi đầu tốt để lọc và như vậy. Nó cũng sẽ cung cấp cho bạn một số mẹo về việc tránh thực hiện quá nhiều công việc và liên kết đến mã nguồn: http://blog.bjornroche.com/2012/07/frequency-detection-USE-fft-aka-pitch.html

Cuốn sách này có các phần giải thích cả YIN và FFT bằng cách sử dụng thông tin pha: http://www.amazon.com/DAFX-Digital-Udo-ouml-lzer/dp/0470665998

Cuối cùng, bạn sẽ phải hiểu chi tiết cụ thể của đàn piano. Tôi không chắc liệu bộ chỉnh âm có cần thực hiện bất kỳ điều gì đặc biệt về WRT hay không, ví dụ, điều chỉnh kéo dài hoặc nếu điều đó phụ thuộc vào người điều chỉnh đàn piano, nhưng ít nhất bạn sẽ cần hiểu thứ đó. Một áp phích khác đề nghị xem xét các giai điệu hài hòa, nhưng vấn đề chính là xác định và điều chỉnh cơ bản, do đó, các hài âm không được điều chỉnh không quan trọng miễn là bạn xác định đúng cơ bản.


Thông tin tốt đẹp, cảm ơn! Điều khiến tôi quan tâm là một bài báo có tên "Điều chỉnh nhạc cụ dựa trên Entropy". Nó sử dụng một số đo entropy để tính toán điều chỉnh cho một cây đàn piano nhất định dựa trên sự không điều hòa cụ thể của cây đàn piano. Trước tiên tôi đã cố gắng sao chép kết quả từ bài báo và sau đó đi từ đó. Một khi / nếu điều đó thành công, tôi có thể sử dụng những gì bài đăng này sắp điều chỉnh piano để điều chỉnh tính toán. Khi bạn nói về việc sử dụng pha FFT, đó có phải là một đầu ra thường bị loại bỏ mà tôi có thể sử dụng hoặc một cái gì đó bên trong không? Tôi đang sử dụng gói FFT của người khác.
DrTodd13

Tôi không quen thuộc với những kỹ thuật đó (nghe có vẻ thú vị). Tôi sẽ bắt đầu với các kỹ thuật tiêu chuẩn trước khi chuyển sang miền đó. Mặc dù tôi sẽ chọn một kỹ thuật tiêu chuẩn gần giống với kỹ thuật nâng cao mà bạn muốn mô phỏng.
Bjorn Roche

Đầu ra FFT thường ở phần thực và phần ảo. Bạn có thể dịch điều này thành cường độ và pha theo cách thông thường (real + fantasy và mag & phase đều là các biểu diễn hợp lệ của các số phức). Cách sử dụng tính năng này để theo dõi cao độ rất tinh tế - bạn sẽ phải đọc sách DAFX cho các deets.
Bjorn Roche

2

Các đỉnh rộng mà bạn nhìn thấy có thể là kết quả của hiện tượng vật lý, không phải là tạo tác xử lý tín hiệu. Nói chung, các đỉnh hẹp trong kết quả FFT đại diện cho một hình sin không được điều chế chính xác định kỳ trong cửa sổ trong miền thời gian. Nhưng rung dây đàn piano không phải là văn phòng phẩm. Chúng phát triển theo thời gian, tạo ra một điều chế đáng chú ý.

Một số hiệu ứng: nhiều dây đàn piano trên mỗi nốt nhạc sẽ trao đổi năng lượng thông qua soundboard; tổng năng lượng rung sẽ phân rã theo thời gian; các chế độ rung có thể hơi không điều hòa để bắt đầu; tần số rung chính xác của từng chế độ (sóng hài) có thể thay đổi theo sự suy giảm biên độ do độ cứng và đường kính của chuỗi không bằng 0; và mỗi sóng hài có thể phân rã ở một tốc độ khác nhau, v.v.

Bạn có thể phải quyết định lựa chọn nào trong số nhiều điều chế mà bạn muốn gọi là "cao độ" (sách về thính học có thể giúp ích) và tìm một phương pháp để theo dõi nó tốt hơn trong "đỉnh rộng" của FFT.


1

Với các nốt thấp hơn của đàn piano, đặc biệt là đối với các âm sắc, phổ có xu hướng bị kéo dài ra (khoảng cách giữa âm cơ bản và âm đầu tiên nhiều hơn một chút so với quãng tám, v.v.). Đây là những gì mang lại cho đàn piano âm thanh bộ gõ của họ, nốt thấp nhất trên các âm thanh cũ hơn thường nghe giống như tiếng rít hơn là một nốt nhạc, và theo tôi hiểu thì đây là lý do tại sao các âm thanh cheep có âm thanh kèn kèn gõ cụ thể. Do bộ chỉnh đàn piano tốt này (người không phải là thuật toán) sẽ điều chỉnh đàn piano bằng các âm bội thấp hơn cơ bản cho các nốt thấp hơn, tai người có xu hướng tập trung vào sự tương tác của các âm bội thấp hơn cho các nốt này. Sự kéo dài của loạt sóng hài cũng có thể là nguyên nhân của sự rộng hơn so với các đỉnh dự kiến ​​trong phổ.


Vâng, tính không điều hòa không thay đổi bằng nhau. Tính không ổn định sẽ làm cho đỉnh ở một điểm khác nhưng tôi không hiểu tại sao nó lại làm cho đỉnh rộng hơn. Có lẽ độ rộng cực đại là do phương sai tín hiệu vốn có theo thời gian và do đó rút ngắn thời gian lấy mẫu sẽ làm giảm phương sai?
DrTodd13
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.