2013-04-20 25 views
5

Tôi muốn viết/lập trình/phát triển một thuật toán có thể nhận ra nhiều đặc điểm trong dữ liệu từ một dòng trong âm thanh/mic. Các dòng âm thanh sẽ được âm nhạc và tôi muốn lọc ra các đặc điểm để phân biệt các bài hát với nhau, bằng cách phân biệt tôi có nghĩa là bạn có thể gọi các thể loại của các bài hát ngoài.Phát hiện các đặc điểm trong dòng âm thanh

Một điều quan trọng mà tôi hoàn toàn muốn phát hiện là loại thanh/nhịp bài hát có. Ví dụ tôi muốn biết bài hát có trong thời gian 3/4 không.

Các bài viết hữu ích duy nhất mà tôi tìm thấy là về phát hiện BPM nhưng điều đó không đủ để phân biệt bài hát với một bài hát khác.

FFT là một khởi đầu tốt để có các đặc tính khác nhau từ luồng âm thanh nhưng tôi không biết bắt đầu từ đâu. Có thể nhận được thanh/nhịp với FFT không? Có bất kỳ hướng dẫn/mã ví dụ tốt về điều này?

FFT có đủ để nhận các đặc điểm tốt của luồng âm thanh hay không có bất kỳ thuật toán nào khác phù hợp để nhận các đặc điểm trong luồng âm thanh không?

Tốt hơn là tôi sẽ làm điều này trong C# vì đó là ngôn ngữ lập trình mà tôi có nhiều kinh nghiệm nhất. Điều này có thể có trong C# hoặc là một ngôn ngữ khác tốt hơn?

Để tổng hợp câu hỏi của tôi, tôi đang tìm bất kỳ thông tin nào về việc tìm các đặc tính trong luồng âm thanh để nhận nhịp/vạch và các thông tin khác để phân biệt bài hát.

+1

Tôi nghĩ rằng bạn đang nhầm lẫn nhịp ("BPM") và đồng hồ ("3/4 thời gian") tại đây. Beat có thể phát hiện được, đồng hồ có thể, nhưng tinh tế hơn nhiều. – RBarryYoung

+0

Tôi không phải là người nói tiếng Anh bản địa, tôi đã cố hết sức để giải thích vấn đề của mình nhưng tôi nghĩ rằng tôi không nhầm lẫn giữa "BPM" và "Đồng hồ". Có lẽ bạn chỉ hiểu lầm tiếng Anh của tôi. Tôi đã biết một số phương pháp để có được BPM nhưng tôi không thể phân biệt các bài hát với nó. Tôi cũng muốn phát hiện ra "đồng hồ. Tôi biết rằng đây là một vấn đề tinh tế nhưng nếu ai đó biết điều gì đó về nó, tôi sẽ rất vui. – Shamshiel

Trả lời

3

Tôi rất thích đọc các bài viết có liên quan của blogger này:

http://www.redcode.nl/blog/2010/06/creating-shazam-in-java/

Tác giả bàn về bài hát fingerprinting. Nếu bạn labelled một bộ bài hát có phẩm chất bạn đang tìm kiếm và sau đó cho dữ liệu vào một số loại learning algorithm/classifier, bạn có thể có một số thành công.

Tôi không nghĩ rằng đây là vấn đề được giải quyết và do đó bạn không thể trả lời phân loại, theo như tôi biết.

Chúc may mắn!

0

Biến đổi Fourier sẽ cho bạn biết tần số trong âm thanh. Điều này có thể đủ để cho bạn biết họ là chìa khóa mà nó được ghi lại. Tôi nghi ngờ nó sẽ cho bạn biết nhiều hơn thế này.

Phần mềm (như Shazam) có thể xác định hai phần nhạc đã ghi là giống nhau. Bạn muốn làm điều gì đó khác biệt - bạn muốn trích xuất ý nghĩa dưới dạng phân loại. So sánh điều này với nhận dạng giọng nói; nó là một vấn đề tương tự. Âm nhạc thực sự khó hơn nhiều, vì thường có nhiều công cụ liên quan. Bộ não của chúng ta có thể tách ra các dụng cụ cá nhân (trống, guitar) bằng cách sử dụng nhận dạng mẫu rất tinh vi và sau đó sử dụng các công cụ riêng để xác định đồng hồ và nhịp đập. Cũng giống như chúng ta có thể theo dõi một cuộc trò chuyện với âm thanh TV. Máy tính không thể phân hủy âm thanh thành tiếng nói riêng biệt (chưa) và chỉ nghe thấy âm thanh liên tục. Điều này làm cho tôi nghĩ rằng việc trích xuất thông tin có ý nghĩa (nhịp, đồng hồ) sẽ phải chờ ít nhất cho đến khi chúng ta có thể giải quyết âm thanh thành những "giọng nói" riêng biệt trên máy tính.

Điều bạn muốn làm là có thể một ngày và sẽ tuyệt vời. Nhưng tôi nghĩ chúng ta vẫn còn cách xa; có lẽ khi máy tính có thể diễn giải lời nói trôi chảy, họ cũng sẽ có thể giải thích âm nhạc trôi chảy. Có lẽ trong 10 năm.

0

Mã nguồn mở aubio thư viện trích xuất các tính năng từ âm thanh. Nó được viết bằng C, nhưng có thể đóng vai trò như một tham chiếu cho việc triển khai được quản lý. Hoặc bạn có thể P/Gọi nó.

aubio là công cụ được thiết kế để trích xuất chú thích từ tín hiệu âm thanh. Tính năng của nó bao gồm phân đoạn một tập tin âm thanh trước mỗi cuộc tấn công của nó, thực hiện phát hiện sân, khai thác nhịp và sản xuất dòng midi từ âm thanh sống.