nhạc
Dựa trên phương pháp nhận dạng âm nhạc ựược ựưa ra bởi Y. Ke [5, 6] trong mục 1.4.4 ở chương 1 và Haitasma [10, 11], chúng tôi tiến hành xây dựng hai hàm mở rộng cần thiết cho quá trình nhận dạng:
Ớ Find_near_neighbour: Nhận ựầu vào là một chuỗi ựặc trưng truy vấn, hàm sẽ xét qua lần lượt các ựặc trưng của nó, tìm kiếm trong cơ sở dữ liệu những bài hát mà chuỗi ựặc trưng tương ứng có chứa ựặc trưng này. Kết quả trả về của hàm là một tập hợp các bài hát mà chuỗi ựặc trưng của nó có chứa ắt nhất một ựặc trưng thuộc chuỗi ựặc trưng truy vấn. Bên cạnh ựó, hàm cũng cho biết vị trắ của các ựặc trưng chung này trong mỗi bài hát trả về. Thực nghiệm ựã chỉ ra rằng số lượng bài hát như vậy có thể rất lớn và việc phải tắnh toán ựộ tương tự trên tập tất cả các bài hát này không ựáp ứng ựược thời gian tìm kiếm của hệ thống. Vì vậy, tiêu chuẩn lựa chọn theo thuật toán RANSAC [14] ựược sử dụng cho phép giới hạn lại số lượng bài hát tiềm năng. Theo ựó, nếu gọi \ là ựộ dài chuỗi ựặc trưng truy vấn (chuỗi này bao gồm \ ựặc trưng) thì một bài hát ựược lựa chọn nếu chuỗi ựặc trưng tương ứng có chứa ắt nhất ]
ựặc trưng trong chuỗi ựặc
trưng truy vấn.
Ớ Search: Từ tập hợp các bài hát và vị trắ của ựặc trưng chung trong bài hát trả về bởi hàm Find_near_neighbour, hàm thực hiện tắnh toán khoảng cách Hamming giữa chuỗi ựặc trưng của những bài hát này và chuỗi ựặc trưng truy vấn ựể ựưa ra tỉ lệ bit lỗi (tỉ số giữa số lượng các bit sai khác nhau của chuỗi ựặc trưng truy vấn và chuỗi ựặc trưng của bài hát gốc trên ựộ dài của chuỗi ựặc trưng truy vấn). Hàm cho kết quả trả về là tên của bài hát có tỉ lệ bit lỗi nhỏ nhất. Hàm tìm kiếm này cũng áp dụng thuật toán RANSAC giúp cải thiện ựáng kể tốc ựộ tìm kiếm của hệ thống. Như vậy, với hai hàm mở rộng ựược cài ựặt trực tiếp trên server này, chúng ta có thế thực hiện tìm kiếm bài hát gốc cho một chuỗi ựặc trưng truy vấn nào ựó.
3.2. Xây dựng tập dữ liệu huấn luyện
để xây dựng dữ liệu huấn luyện cho việc tìm kiếm, trước hết cần phải có một tập các bài hát gốc ựược tiến hành thu âm trong môi trường có nhiều nhiễu. Tập
các bài hát ựã thu âm này và các bài hát gốc của nó sau ựó ựược chia thành các snippet ngắn (30 giây cho mỗi snippet). Các snippet tương ứng sau khi thực hiện trắch rút ựặc trưng sẽ ựược so sánh với nhau ựể tạo thành tập dữ liệu học. Hệ thống sẽ sử dụng chương trình emtraining ựể tự ựộng ựọc một danh sách các snippet gốc và snippet ựã thu âm, tắnh toán khóa cho các snippet này, sau ựó tiến hành xây dựng tập dữ liệu học.
Trong quá trình xây dựng dữ liệu huấn luyện, việc lựa chọn tập dữ liệu học ựược phân loại theo tiêu chắ về thể loại nhạc ựể tạo nên các bộ dữ liệu huấn luyện khác nhau. Các snippet dùng làm dữ liệu học cũng như các snippet truy vấn ựều ựược tiến hành thu âm qua micro chất lượng không tốt và môi trường có nhiều tiếng ồn gây nhiễu.