2011-08-08 31 views
31

Tôi muốn so sánh 2 tệp âm thanh theo lập trình. Ví dụ: Tôi có một tệp âm thanh trong ứng dụng iPhone của mình và sau đó tôi ghi lại một tệp khác. Tôi muốn kiểm tra xem âm thanh hiện có có khớp với âm thanh đã ghi hay không (- tương tự như nhận dạng giọng nói).Làm cách nào để tôi có thể so sánh 2 tệp âm thanh theo lập trình?

Tôi làm cách nào để thực hiện việc này?

Trả lời

24

Đó được gọi là Ghi vân tay âm thanh. Có tồn tại một số dự án mã nguồn mở mà từ đó bạn có thể nhận được một số ý tưởng. Hãy xem ở đây: Audio Fingerprint - MusicBrainz.

+0

cảm ơn liên kết miamk. Nhưng bạn đã thử điều này? Tôi không chắc chắn, làm thế nào để thực hiện it.Thanks một lần nữa – iscavengers

+14

Vâng, nếu bạn đang tìm kiếm để làm sẵn, sao chép và dán mục tiêu-c mã hoặc thư viện để đặt trong dự án iOS của bạn, bạn có thể dừng lại bây giờ - bạn sẽ không tìm thấy bất cứ điều gì như thế (ít nhất là trong phạm vi kiến ​​thức của tôi). Bạn sẽ phải tự viết mã. – MiguelB

13

Có máy chủ thực hiện tính toán ghi vân tay không phù hợp cho thiết bị di động. Và sau đó ứng dụng di động của bạn tải tệp của bạn lên máy chủ và nhận kết quả phân tích để hiển thị. Vì vậy, tôi không nghĩ rằng ngôn ngữ lập trình thực hiện nó quan trọng nhiều. Sau đây là một vài triển khai AF.

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

VC++: http://code.google.com/p/musicip-libofa/

C#: http://www.codeproject.com/KB/WPF/duplicates.aspx

3

Âm thanh như Shazam có thể giúp đỡ.

Có một số bài viết trên web nói về điều này, bao gồm this mà tôi đã đọc trước đây.

Sử dụng kỹ thuật Shazam để phân tích sẽ cung cấp điểm bắt đầu tuyệt vời để so sánh song song.

+2

Eh? Có gì với cuộc bỏ phiếu xuống bằng lái xe? – Hyperbole

2
  • Áp dụng bộ lọc bandpass để giảm tiếng ồn
  • Normalize cho biên độ
  • Tính tương quan chéo

Nó có thể là khá Mhz chuyên sâu.

Các DSP chi tiết có trong văn bản nổi tiếng:

  • Digital Signal Processing bởi Alan V. Oppenheim và Ronald W. Schafer
+0

Điều đó sẽ không tính đến sự khác biệt về điểm nhấn và tốc độ nói –

1

Tôi nghĩ cũng bạn có thể thử để chọn một vài mẫu thứ hai từ cả hai track âm thanh, mnormalise chúng trong biên độ và giảm tiếng ồn với một bộ lọc băng thông và sau khi cố gắng sử dụng một correlator. Ví dụ:

Ví dụ: bạn có thể lấy mẫu thứ 5 của một trong số các phần sau và làm cho nó trượt trên máy tính thứ hai để tăng độ xuyên qua cho bất kỳ lúc nào bạn thay đổi. (cẩn thận rằng nếu bạn lấy một túi quá nhỏ, bạn có thể có mối tương quan cao khi không được expeced và bạn sẽ giảm bớt tác dụng phụ do việc cắt giảm tín hiệu và sự tương quan chéo). Sau khi yo có thể thu thập một mảng với al các kết quả của sự tương quan chéo và nhận được chỉ số của maximun.

Sau đó, bạn nên đặt thử nghiệm lên một cách nhanh chóng để quyết định khi nào yo cho rằng gói này sẽ giống nhau. điều này sẽ thay đổi tùy thuộc vào chất lượng của bản âm thanh bạn đang so sánh.

Tôi đã triển khai một correator để nhận và phân biệt lời mở đầu trong giao tiếp không dây. Kịch bản của tôi thực sự được thực hiện trong MATLAB.nếu bạn quan tâm tôi có thể cố gắng tìm một phần chung và gửi cho bạn.

Sẽ là một mã quá dài để dán luồng trong diễn đàn. nếu bạn chỉ muốn cho tôi biết và tôi sẽ gửi nó đến ya càng sớm càng tốt.

cổ vũ

3

Tôi đã quan tâm và tôi đã tìm thấy một giải pháp khác trong Java trên giả mạo. yo có thể lấy mã từ SVN.

http://sourceforge.net/projects/comparisong/

cung cấp cho nó một cái nhìn và cho tôi biết nếu nó phù hợp với bạn.

cổ vũ

4

Tôi biết câu hỏi đã được hỏi từ lâu rồi, nhưng câu trả lời rõ ràng có thể giúp người khác.

  1. Các thư viện từ Echoprint (website: echoprint.me/start) sẽ giúp bạn giải quyết các vấn đề sau:

    • De-lặp lại một bộ sưu tập lớn
    • Xác định (Track , Nghệ sĩ ...) một bài hát trên ổ cứng hoặc trên máy chủ
    • Chạy máy chủ Echoprint với dữ liệu của bạn
    • Xác định một bài hát trên thiết bị iOS

    PS: Để biết thêm các tính năng âm nhạc theo định hướng, bạn có thể kiểm tra danh sách API here.

  2. Nếu bạn muốn thực hiện Fingerprinting một mình, bạn nên đọc các tài liệu liệt kê như là tài liệu tham khảo here, và có lẽ có một cái nhìn tại musicip-libofa trên Google Code

Hope chí này help;)

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