Phương pháp nào để sử dụng để phân biệt các tông màu (âm nhạc?) Khác nhau


12

Tôi đang cố gắng nghiên cứu và tìm ra cách tốt nhất để tấn công vấn đề này. Nó đứng trên nền tảng xử lý âm nhạc, xử lý hình ảnh và xử lý tín hiệu, và do đó, có vô số cách để xem xét nó. Tôi muốn hỏi về những cách tốt nhất để tiếp cận nó vì những gì có vẻ phức tạp trong miền sig-Proc thuần túy có thể đơn giản (và đã được giải quyết) bởi những người xử lý hình ảnh hoặc âm nhạc. Dù sao, vấn đề là như sau:nhập mô tả hình ảnh ở đây

Nếu bạn tha thứ cho bản vẽ vấn đề của tôi, chúng ta có thể thấy như sau:

Từ hình trên, tôi có 3 loại 'tín hiệu' khác nhau. Đầu tiên là một xung sắp xếp 'bước' theo tần số từ đến f 4 , sau đó lặp lại. Nó có thời lượng xung cụ thể và thời gian lặp lại xung cụ thể.f1f4

Cái thứ hai chỉ tồn tại ở , nhưng có độ dài xung ngắn hơn và tần số lặp lại xung nhanh hơn.f1

Cuối cùng, cái thứ ba chỉ đơn giản là một giai điệu tại .f1

Vấn đề là, bằng cách nào tôi tiếp cận vấn đề này, để tôi có thể viết một bộ phân loại có thể phân biệt giữa tín hiệu-1, tín hiệu-2 và tín hiệu-3. Đó là, nếu bạn cung cấp cho nó một trong các tín hiệu, nó sẽ có thể cho bạn biết tín hiệu này là như vậy và như vậy. Những gì phân loại tốt nhất sẽ cho tôi một ma trận nhầm lẫn đường chéo?

Một số bối cảnh bổ sung và những gì tôi đã nghĩ đến cho đến nay:

Như tôi đã nói điều này đứng trên một số lĩnh vực. Tôi muốn hỏi về phương pháp nào có thể tồn tại trước khi tôi ngồi xuống và chiến đấu với điều này. Tôi không muốn vô tình phát minh lại bánh xe. Dưới đây là một số suy nghĩ tôi đã có từ các quan điểm khác nhau.

Quan điểm xử lý tín hiệu: Một điều tôi đã xem xét là thực hiện Phân tích Cepstral , và sau đó có thể sử dụng Băng thông Gabor của cepstrum trong phân biệt tín hiệu-3 từ 2 tín hiệu kia, và sau đó đo mức cao nhất của cepstrum trong tín hiệu phân biệt đối xử- 1 từ tín hiệu-2. Đó là giải pháp xử lý tín hiệu hiện tại của tôi.

Quan điểm xử lý hình ảnh: Ở đây tôi đang suy nghĩ vì trên thực tế tôi có thể tạo ra hình ảnh theo sơ đồ phổ, có lẽ tôi có thể tận dụng một cái gì đó từ lĩnh vực đó? Tôi không quen thuộc lắm với phần này, nhưng còn việc thực hiện phát hiện 'dòng' bằng cách sử dụng Biến đổi Hough , và sau đó bằng cách nào đó 'đếm' các dòng (nếu chúng không phải là dòng và đốm màu thì sao?) Và đi từ đó? Tất nhiên tại bất kỳ thời điểm nào khi tôi lấy một quang phổ, tất cả các xung bạn thấy có thể bị dịch chuyển dọc theo trục thời gian, vậy vấn đề này có quan trọng không? Không chắc...

Quan điểm xử lý âm nhạc: Một tập hợp xử lý tín hiệu chắc chắn, nhưng đối với tôi, tín hiệu-1 có chất lượng nhất định, có thể lặp đi lặp lại mà mọi người trong chương trình âm nhạc luôn thấy và đã giải quyết trong có thể phân biệt công cụ? Không chắc chắn, nhưng ý nghĩ đã xảy ra với tôi. Có lẽ quan điểm này là cách tốt nhất để xem xét nó, lấy một phần của miền thời gian và trêu chọc những bước đi đó? Một lần nữa, đây không phải là lĩnh vực của tôi, nhưng tôi rất nghi ngờ đây là thứ đã được nhìn thấy trước đây ... chúng ta có thể xem cả 3 tín hiệu là các loại nhạc cụ khác nhau không?

Tôi cũng nên nói thêm rằng tôi có một lượng dữ liệu đào tạo kha khá, vì vậy có lẽ sử dụng một số phương pháp đó có thể cho phép tôi thực hiện một số trích xuất tính năng mà sau đó tôi có thể sử dụng K-Recent Neighbor , nhưng đó chỉ là suy nghĩ.

Dù sao đây là nơi tôi đứng ngay bây giờ, bất kỳ trợ giúp đều được đánh giá cao.

Cảm ơn!

EDITS DỰA TRÊN Ý KIẾN:

  • Có, , f 2 , f 3 , f 4 đều được biết trước. (Một số phương sai nhưng rất ít. Ví dụ: giả sử chúng ta biết rằng f 1 = 400 Khz, nhưng nó có thể đến ở mức 401,32 Khz. Tuy nhiên, khoảng cách đến f 2 là cao, vì vậy f 2 có thể so với 500 Khz.) Tín hiệu-1 sẽ LUÔN bước trên 4 tần số đã biết. Tín hiệu-2 sẽ LUÔN có 1 tần số.f1f2f3f4f1f2f2

  • Tốc độ lặp lại xung và độ dài xung của cả ba loại tín hiệu cũng được biết trước. (Lại một số phương sai nhưng rất ít). Một số cảnh báo mặc dù, tốc độ lặp lại xung và độ dài xung của tín hiệu 1 và 2 luôn được biết đến, nhưng chúng là một phạm vi. May mắn thay, những phạm vi đó không chồng chéo lên nhau.

  • Đầu vào là một chuỗi thời gian liên tục xuất hiện ở thời gian thực, nhưng chúng ta có thể giả sử rằng các tín hiệu 1, 2 và 3 là loại trừ lẫn nhau, trong đó, chỉ có một trong số chúng tồn tại tại bất kỳ thời điểm nào. Chúng tôi cũng có rất nhiều sự linh hoạt về số lượng thời gian mà bạn dành nó để xử lý tại bất kỳ thời điểm nào.

  • Dữ liệu có thể ồn ào có, và có thể có các âm giả, v.v., tại các dải không nằm trong , f 2 , f 3 , f 4 đã biết của chúng tôi . Điều này là hoàn toàn có thể. Mặc dù vậy, chúng ta có thể giả sử SNR ở mức trung bình chỉ để 'bắt đầu' về vấn đề này.f1f2f3f4


Điều gì sẽ là đầu vào của bạn? 1 / Luồng liên tục trong đó bạn muốn tách riêng các lần xuất hiện của tín hiệu 1/2/3 (vấn đề phân đoạn + phân loại) hoặc 2 / mẫu riêng lẻ chỉ với một loại tín hiệu bạn cần phân loại thành các loại 1/2/3? Bạn mô tả một số đặc điểm của các tín hiệu: PRT của tín hiệu 1; tần số lặp lại của tín hiệu 2; tần số tín hiệu 3; các giá trị của F1 / f2 / f3 / f4. Là những tham số được biết trước hoặc biến? Cuối cùng, trong trường hợp đầu vào của bạn có một vài lần xuất hiện của các tín hiệu đó để phân đoạn, thời lượng điển hình của một phân khúc là bao nhiêu?
pichenettes

Một câu hỏi khác: từ bản vẽ của bạn, có vẻ như bạn đang xử lý các tông màu thuần túy (không hài hòa và không có tiếng ồn). Đó có phải là trường hợp, hoặc dữ liệu bẩn hơn nhiều so với bản vẽ của bạn?
pichenettes

@pichenettes Cảm ơn, tôi đã thêm thông tin bạn cần trong một chỉnh sửa.
16/212

Theo dõi tiến trình của bạn và giải pháp cho câu hỏi này sẽ được đánh giá cao. Việc phân tích phụ thuộc chủ yếu vào sự biến thiên thời gian của các âm thanh được nghiên cứu. nếu chúng nhanh hơn cửa sổ fft, giả sử dưới 256 mẫu bạn sẽ cần các phổ phổ độ phân giải cao. Quang phổ càng chính xác, bạn càng có thể thấy thông tin chi tiết nhỏ trong âm thanh của mình. FFT có lẽ là tốt, Sau đó, câu hỏi chỉ đơn giản là một trường hợp thêm toán tử logic để phân loại âm thanh bằng cách sử dụng các thói quen phân tích mẫu đơn giản. phân tích thời lượng của xung, khoảng cách giữa chúng, tính chất hợp âm của tổng thể, v.v.
com.p hiểu được

Thật đơn giản để tìm ra sóng hài chính chỉ bằng cách kiểm tra giá trị đỉnh của mỗi dòng x, và sau đó bạn chỉ cần kết thúc với một biểu đồ để phân tích bằng lập trình phân tích chữ ký mẫu, tiến triển giống như khi bạn phân tích chúng theo cách hùng biện, chỉ là rút ra các quy tắc của các yếu tố khác biệt tốt nhất mà bạn sử dụng một cách khéo léo khi so sánh và phân loại tiến trình số.
com.p hiểu được

Câu trả lời:


7

Bước 1

Tính toán STFT S(m,k)mk

Bước 2

Đối với mỗi khung STFT, hãy tính tần số cơ bản chi phối bằng cách sử dụng một cái gì đó như YIN, cùng với chỉ báo "độ tin cậy cao độ", chẳng hạn như độ sâu của DMF "nhúng" được tính toán bởi YIN.

Hãy để chúng tôi gọi chiếm ưu thế. Ước tính tại khung mf(m)mv(m)m

r0

Bạn cũng có thể tính tổng năng lượng tín hiệu e(m)m

Bước 3

Hãy xem xét một cửa sổ trượt của khung STFT. MMMM= =50

Trích xuất các tính năng sau:

  • là độ lệch chuẩn của dãy ( f ( m ) ) m [ k - M , k + M ] , v ( mσf(k)(f(m))m[k-M,k+M],v(m)>τ
  • σv(k)(v(m))m[k-M,k+M]
  • σe(k)(e(m))m[k-M,k+M]

σfσvσe

σfσvσeσfσvσeσfσvσe

Tính toán 3 tính năng này trên dữ liệu đào tạo của bạn và huấn luyện một trình phân loại bayes ngây thơ (chỉ là một loạt các phân phối gaussian). Tùy thuộc vào mức độ tốt của dữ liệu của bạn, bạn thậm chí có thể thoát khỏi các trình phân loại và sử dụng các ngưỡng được xác định bằng tay trên các tính năng, mặc dù tôi không khuyến nghị điều này.

Bước 4

Để xử lý luồng dữ liệu đến, hãy tính STFT, tính toán các tính năng và phân loại từng cửa sổ của M

Nếu dữ liệu và phân loại của bạn tốt, bạn sẽ thấy một cái gì đó như thế này:

1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3

Điều này phân định khá tốt thời gian bắt đầu và kết thúc, và loại của từng tín hiệu.

Nếu dữ liệu của bạn bị nhiễu, phải có các khung phân loại sai:

1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 3, 2, 2, 1, 1, 1, 3, 1, 1, 1, 3, 3, 3, 2, 3, 3, 3

Nếu bạn thấy nhiều thứ nhảm nhí như trong trường hợp thứ hai, hãy sử dụng bộ lọc chế độ trên dữ liệu trên các vùng lân cận của 3 hoặc 5 phát hiện; hoặc sử dụng HMM.

Tin nhắn về nhà

Những gì bạn muốn dựa trên sự phát hiện của bạn không phải là một tính năng phổ, mà là các số liệu thống kê tạm thời về các tính năng phổ trên các cửa sổ có cùng tỷ lệ với thời lượng tín hiệu của bạn. Vấn đề này thực sự đòi hỏi phải xử lý theo hai thang thời gian: khung STFT mà bạn tính toán các thuộc tính tín hiệu rất cục bộ (biên độ, cường độ, cường độ cao) và các cửa sổ lớn hơn mà bạn nhìn vào sự biến đổi theo thời gian của các thuộc tính tín hiệu đó.


Lưu ý rằng bạn cũng có thể thực hiện kiểu nhận dạng giọng nói nếu bạn muốn tận dụng HTK hoặc tương tự ... Mô hình âm thanh: 4 điện thoại P1, P2, P3, P4 (âm ở F1, âm ở f2, âm ở f3, âm ở f4 ) + 1 ký hiệu S cho sự im lặng. 1 hoặc 2 gaussian mỗi điện thoại. Mô hình từ W1 cho tín hiệu 1: (P1 S P2 S P3 S P4 S) +. Mô hình từ W2 cho tín hiệu 2: (P1 S) +. Mô hình từ W3 cho tín hiệu 3: (P1) +. Mô hình câu: (W1 | W2 | W3) *. Nhắc nhở duy nhất là nếu bạn sử dụng hộp công cụ nhận dạng giọng nói, bạn sẽ phải điều chỉnh phần đầu trích xuất tính năng của nó vì MFCC có độ phân giải quá thấp và không rõ ràng để phân biệt F1 / f2 / f3 / f4.
pichenettes

@pichenettes Cảm ơn bạn pichenettes, đó là một câu trả lời rất hay - Tôi có một vài lượt theo dõi: 1) 'YIN' mà bạn đề cập là gì, và 'DMF' là gì? Tôi không thể tìm thấy bất cứ điều gì trên chúng thông qua google. 2) Chính xác thì 'độ tin cậy cao độ' là thước đo là gì? 3) Bạn đề cập rằng bạn có thể sử dụng tính tương quan tự động để tìm độ tin cậy cao - tự động tương quan cái gì, khung miền thời gian hoặc STFT của khung? (Tôi không hiểu điều này có lẽ bởi vì tôi không biết ý của bạn về độ tin cậy cao độ). (tiếp ...)
Spacey

@pichenettes (contd) 4) Về các tính năng tồn tại PER WINDOW chỉ có? Vì vậy, bạn đang tính toán ba khung hình trên mỗi cửa sổ, trong (trong trường hợp này) 101 khung hình? Trong trường hợp này khi đến lúc cần đào tạo, 'điểm 3' của tôi được tạo từ 3 điểm trên 101 FRAME, đúng không? 5) Trong bước 4 của bạn, khi bạn có số 1,1,1,2,2, v.v., mỗi số tương ứng với cách bạn phân loại cửa sổ THAT đúng? '1' đầu tiên là phân loại cửa sổ được tạo thành từ các khung -50 đến 50 và '1' thứ hai từ một cửa sổ được tạo thành từ các khung -49 đến 51, đúng không? (Cửa sổ trượt 1 khung hình mọi lúc) ...
Spacey

@pichenettes 6) Cuối cùng, tôi nên đề cập rằng cái này sẽ được sử dụng như một 'báo động', để nếu có tín hiệu-1 hoặc tín hiệu-2, tôi sẽ nhận được báo thức, nhưng sau đó không có gì tắt không có gì ở đó - Không nên có một ngưỡng nào đó phù hợp trước khi nó bắt đầu thử và phân loại để bạn không nhận được kết quả dương tính hơn là gì? (chỉ là tiếng ồn nền chẳng hạn). (Bây giờ tôi mới tìm hiểu về Trình phân loại Naive Bayes, vì vậy không biết có phải là đa lớp không). 7) CẢM ƠN RẤT NHIỀU CÁCH VÀ CÁM ƠN! MỘT THỨ VÀ MỘT UPVOTES CHO BẠN! :-)
Spacey

1
1 / YIN là một thuật toán phát hiện cao độ cổ điển cho tín hiệu âm thanh và âm nhạc. recherche.ircam.fr/equipes/pcm/cheveign/pss/2002_JASA_YIN.pdf . DMF là "hàm cường độ khác biệt", đại lượng được tính toán bằng các thuật toán như YIN để ước tính cường độ. 2 / Một thuật toán phát hiện cao độ như YIN sẽ đưa ra ước tính về tần số cơ bản và "điểm tin cậy" cho biết khả năng cao độ trả về là câu trả lời đúng. Trên các tín hiệu nhiễu hoặc tín hiệu thể hiện một số nốt, mức này sẽ thấp, trên sóng hình sin thuần túy sẽ rất cao.
pichenettes

3

Một cách tiếp cận khác có thể là bốn máy dò heterodyne: Nhân tín hiệu đầu vào với bộ tạo dao động cục bộ gồm 4 tần số và bộ lọc thông thấp cho kết quả đầu ra. Mỗi đầu ra đại diện cho một đường thẳng đứng trong hình ảnh của bạn. Bạn nhận đầu ra ở mỗi 4 tần số dưới dạng hàm thời gian. Với bộ lọc thông thấp, bạn có thể quay số độ lệch tần số bạn muốn cho phép và tốc độ bạn muốn đầu ra thay đổi nhanh như thế nào, tức là các cạnh sắc nét như thế nào.

Điều này sẽ hoạt động tốt ngay cả khi tín hiệu khá nhiễu.


Tôi đã suy nghĩ về phương pháp này - bạn có thấy bất kỳ lợi thế nào của phương pháp này (trộn lẫn và LPF'ing) so với làm việc trực tiếp tại pass-pand bằng cách sử dụng phổ, v.v.?
Spacey
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.