2010-12-21 29 views
18

Tôi có ~ 100 tệp âm thanh wav với tỷ lệ mẫu là 48000 loài chim cùng loài mà tôi muốn đo sự giống nhau giữa. Tôi bắt đầu với các tập tin sóng, nhưng tôi biết (rất ít) nhiều hơn về làm việc với hình ảnh, vì vậy tôi giả định phân tích của tôi sẽ được trên các hình ảnh spectrogram. Tôi có một số mẫu của một số loài chim từ những ngày khác nhau.Phân tích âm thanh Birdsong - tìm thấy hai clip phù hợp với nhau như thế nào

Dưới đây là một số ví dụ về các dữ liệu, cùng với (xin lỗi cho trục không có nhãn; x là mẫu, y là lần tần số tuyến tính cái gì đó như 10.000 Hz): alt text Những birdsongs dường như xảy ra trong "chữ", các phân đoạn riêng biệt của bài hát có lẽ là cấp độ mà tôi nên so sánh; cả hai sự khác biệt giữa các từ tương tự và tần suất và thứ tự của các từ khác nhau. alt text

Tôi muốn cố gắng loại bỏ tiếng ồn cicada - cicadas chirp với tần suất khá phù hợp và có xu hướng khớp pha, vì vậy điều này không quá khó.

Có vẻ như một số bản vẽ có thể hữu ích.

Tôi được thông báo rằng hầu hết các tài liệu hiện có đều sử dụng phân loại thủ công dựa trên đặc điểm bài hát, như Dự án bộ gen âm nhạc Pandora. Tôi muốn được như Echo Nest; sử dụng phân loại tự động. Cập nhật: Rất nhiều người làm nghiên cứu này.

Câu hỏi của tôi là những công cụ nào tôi nên sử dụng cho phân tích này? Tôi cần phải:

  • Lọc/ngưỡng ra tiếng ồn nói chung và giữ cho âm nhạc
  • Lọc ra tiếng động cụ thể như của ve sầu
  • Split và phân loại cụm từ, âm tiết, và/hoặc ghi chú trong birdsongs
  • Tạo các biện pháp khác biệt/tương tự giữa các bộ phận; một cái gì đó sẽ nhận được sự khác biệt giữa các loài chim, giảm thiểu sự khác biệt giữa các cuộc gọi khác nhau của cùng một con chim

Vũ khí của tôi là sự lựa chọn gọn gàng/scipy, nhưng một cái gì đó như openCV có thể hữu ích ở đây?

Chỉnh sửa: đã cập nhật thuật ngữ của tôi và cách tiếp cận được viết lại sau một số nghiên cứu và câu trả lời hữu ích của Steve.

+1

Thực sự thú vị :) Tôi không có thời gian để đưa ra câu trả lời hoàn chỉnh tại thời điểm này nhưng tôi sẽ xem xét * tương quan chéo * - chỉ nhân trong miền tần số iirc. Các cơ chế đơn giản để lọc nhiễu bao gồm các bộ lọc thông cao và thấp, nếu bạn biết tần số của mình nằm trong một phạm vi nhất định. Ngoài ra kiểm tra deconvolution, và xem xét kỹ thuật loạt thời gian xử lý địa chấn cho một số cảm hứng tiếp tuyến. Bực bội, sẽ cố gắng và trả lại càng sớm càng tốt :) –

+0

@Tim Cảm ơn, tôi sẽ bắt đầu vào danh sách đọc! – Thomas

+0

Tôi biết rằng các kỹ thuật "Lập trình động" và "Mô hình Markov ẩn" đã được sử dụng (một thời gian trở lại) để phân tích các bài hát của chim và thu được khoảng cách của chúng với nhau. – telesphore4

Trả lời

6

Phải trả lời câu hỏi này vì nó quá dài để nhận xét.

Tôi đang làm việc cơ bản trong lĩnh vực này ngay bây giờ vì vậy tôi cảm thấy tôi có một số kiến ​​thức. Rõ ràng là từ quan điểm của tôi, tôi khuyên bạn nên làm việc với âm thanh hơn là hình ảnh. Tôi cũng khuyên bạn nên sử dụng MFCCs như tính năng trích xuất của bạn (mà bạn có thể coi là các hệ số tóm tắt/mô tả các băng con cụ thể của tần số âm thanh [vì chúng là]).

GMM đang di chuyển.

Để thực hiện nhiệm vụ này, bạn phải có một số (tốt nhất là rất nhiều) của dán nhãn/tiếng dữ liệu, nếu không không có cơ sở cho máy học tập diễn ra.

Một technicality mà bạn có thể tìm thấy hữu ích:

'Sau đó, trong thời gian thử nghiệm, bạn gửi một vector MFCC truy vấn đến GMM, và nó sẽ cho bạn biết loài nó nghĩ nó được . '

Chính xác hơn, bạn gửi truy vấn cho mỗi GMM (nếu bạn sử dụng chúng đúng cách, mỗi cung cấp cho bạn khả năng [xác suất] của vectơ đặc trưng đó được phát ra bởi phân phối xác suất đó). Sau đó, bạn so sánh tất cả điểm số khả năng bạn nhận được từ tất cả các GMM và phân loại dựa trên mức cao nhất bạn nhận được.

UBMs

Thay vì "lọc ra những" tiếng ồn, bạn chỉ có thể mô hình tất cả méo tiếng ồn xung quanh/kênh với một UBM (Universal nền Model). Mô hình này bao gồm một GMM được đào tạo bằng cách sử dụng tất cả các dữ liệu đào tạo có sẵn cho bạn (có nghĩa là, tất cả các dữ liệu đào tạo bạn sử dụng cho mỗi lớp). Bạn có thể sử dụng điều này để có được 'tỷ lệ khả năng' (Pr [x sẽ được phát ra bởi mô hình cụ thể]/Pr [x sẽ được phát ra bởi mô hình nền (UBM)]) để giúp loại bỏ bất kỳ xu hướng nào có thể được giải thích bởi chính mô hình nền.

+2

Chỉ cần nhận xét: HMMs ** NOT ** được mô tả là "nhiều GMM trạng thái". HMM phản ánh các mối quan hệ thời gian ngắn trong dữ liệu, trong khi các GMM không có khái niệm về thời gian tích hợp. Các HMM không cần phải sử dụng các hỗn hợp Gaussian, nhưng các GMM làm. HMM có sự tách biệt giữa trạng thái ẩn và quan sát, GMM không. Trong trường hợp sử dụng, đây là một triển khai Python MFCC + GMM miễn phí phản ánh mô hình cơ bản được thảo luận tại đây: https://github.com/danstowell/smacpy –

+0

@DanS Tôi đồng ý với bạn hoàn toàn. Khái niệm về GMM và HMM được đưa ra trong câu hỏi này là không chính xác. – lightalchemist

5

Câu hỏi thú vị, nhưng khá rộng. Tôi khuyên bạn nên xem xét một số tài liệu hiện có về nhận dạng bài hát chim tự động. (Yup, có một nhóm người làm việc trên đó.)

Bài viết này (chỉnh sửa: xin lỗi, liên kết chết, nhưng this chapter by Dufour et al. 2014 có thể còn rõ ràng hơn) sử dụng phương pháp nhận dạng mẫu hai giai đoạn cơ bản mà tôi khuyên bạn nên thử trước : tính năng khai thác (giấy sử dụng MFCCs), sau đó phân loại (giấy sử dụng một GMM). Đối với mỗi khung trong tín hiệu đầu vào, bạn nhận được một véc-tơ của MFCC (từ 10 đến 30). Các véc tơ MFCC này được sử dụng để huấn luyện GMM (hoặc SVM) cùng với các nhãn loài chim tương ứng. Sau đó, trong quá trình thử nghiệm, bạn gửi một truy vấn MFCC vectơ đến GMM, và nó sẽ cho bạn biết loài mà nó nghĩ là gì.

Mặc dù một số người đã áp dụng kỹ thuật xử lý hình ảnh để các vấn đề phân loại/vân tay âm thanh (ví dụ, this paper by Google Research), tôi ngại ngần giới thiệu những kỹ thuật cho vấn đề hoặc những người thích nó vì sự gây phiền nhiễu biến thời của bạn.

"Tôi nên sử dụng công cụ nào cho phân tích này?" Trong số nhiều người khác: khai thác

  1. tính năng: MFCCs, phát hiện bắt
  2. phân loại: GMM, SVM
  3. Google

Xin lỗi vì câu trả lời không đầy đủ, nhưng đó là một câu hỏi rộng, và có nhiều hơn cho vấn đề này hơn có thể được trả lời ở đây một thời gian ngắn.

+0

"Giấy này" là một liên kết đã chết, bạn có thể chia sẻ thêm một số thông tin không? – StefanS

+1

Xin lỗi, tôi ước tôi biết nó là gì. Nhưng tôi đã thay thế nó bằng một liên kết thậm chí còn tốt hơn bản gốc. –

1

Có vẻ như bạn đã thực hiện STFT hoặc một cái gì đó tương tự để xây dựng những hình ảnh đó, vì vậy tôi khuyên bạn nên xây dựng tóm tắt hữu ích về các cấu trúc thời gian/tần số hỗn hợp này. Tôi nhớ một hệ thống được xây dựng cho một mục đích hơi khác có thể tận dụng tốt dữ liệu dạng sóng âm thanh bằng cách chia nhỏ thành một số nhỏ (< 30) của thùng theo thời gian và biên độ và chỉ cần đếm số lượng mẫu rơi vào mỗi thùng . Bạn có thể làm điều gì đó tương tự, hoặc trong miền thời gian/biên độ hoặc miền thời gian/tần số.

1

Tùy thuộc vào cách bạn muốn xác định ứng dụng của mình, bạn có thể cần một cách tiếp cận được giám sát hoặc không giám sát. Trong trường hợp đầu tiên, bạn sẽ cần một số quy trình chú thích để cung cấp giai đoạn đào tạo với một tập hợp các ánh xạ từ các mẫu (tệp âm thanh) đến các lớp (các ID chim hoặc bất kỳ lớp nào của bạn). Trong trường hợp của cách tiếp cận không giám sát, bạn cần phải cụm dữ liệu của bạn để các âm thanh tương tự được ánh xạ tới cùng một cụm.

Bạn có thể thử thư viện của mình: pyAudioAnalysis cung cấp trình bao bọc cấp cao cho cả phân loại âm thanh và phân đoạn âm thanh.

Các vấn đề liên quan