1. Trang chủ
  2. » Luận Văn - Báo Cáo

(LUẬN VĂN THẠC SĨ) Tìm kiếm nhạc số dựa trên chuỗi đặc trưng âm thanh

67 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 67
Dung lượng 1,17 MB

Cấu trúc

  • CHƯƠNG 1. (11)
    • 1.1. Giới thiệu (11)
    • 1.2. Một số ứng dụng của chuỗi ủặc trưng (12)
      • 1.2.1. Giám sát phát thanh (12)
      • 1.2.2. Các ứng dụng liên thông âm thanh (13)
      • 1.2.3. Các bộ lọc trong ứng dụng dùng chung file (13)
      • 1.2.4. Tự ủộng tổ chức thư viện õm nhạc (13)
      • 1.2.5. Một số ứng dụng khác (14)
    • 1.3. Cỏc phương phỏp xỏc ủịnh chuỗi ủặc trưng (14)
      • 1.3.1. Phương pháp cửa sổ gối (15)
      • 1.3.2. Phương pháp cửa sổ gối kết hợp học máy (18)
      • 1.3.3. Phương pháp DDA (Distortion Discriminant Analysis) (18)
      • 1.3.4. Phương pháp dựa trên wavelet (19)
    • 1.4. Ứng dụng của kỹ thuật thị giác máy cho bài toán nhận dạng nhạc số (20)
      • 1.4.1. Biểu diễn bài hát dưới dạng một spectrogram (21)
      • 1.4.2. Tớnh toỏn ủặc trưng bởi thuật toỏn Boosting theo cặp (pairware boosting) (24)
      • 1.4.3. Học “Ocllusion Model” với thuật toán EM (Expectation Maximization) (0)
      • 1.4.4. Quá trình nhận dạng nhạc số (29)
    • 1.5. Tổng kết chương (30)
    • 2.1. Vắn tắt về lịch sử PostgreSQL (33)
    • 2.2. Kiến trúc của PostgreSQL (34)
    • 2.3. Các hàm mở rộng trong ngôn ngữ C (36)
      • 2.3.1. Nạp ủộng (dynamic loading) (37)
      • 2.3.2. Các kiểu dữ liệu cơ sở trong C (38)
      • 2.3.3. Chuẩn gọi hàm theo phiên bản 0 cho các hàm C (43)
      • 2.3.4. Chuẩn gọi hàm phiên bản 1 cho các hàm C (46)
      • 2.3.5. Các quy tắc viết chương trình (50)
      • 2.3.6. Biờn dịch và liờn kết tới cỏc hàm ủộng (Dynamically-Loaded Function) (51)
      • 2.3.7. Cơ sở cài ủặt (Build Infrastructure) cỏc mở rộng (53)
    • 2.4. Tổng kết chương (55)
  • CHƯƠNG 3. (32)
    • 3.1. Xây dựng cơ sở dữ liệu các fingerprint (57)
      • 3.1.1. Thiết kế cơ sở dữ liệu bài hát trong PostgreSQL (57)
      • 3.1.2. Xõy dựng cỏc hàm mở rộng trong PostgreSQL ủể tỡm kiếm bản nhạc 52 3.2. Xây dựng tập dữ liệu huấn luyện (59)
    • 3.3. Kết quả thực nghiệm (61)
  • KẾT LUẬN (64)
  • TÀI LIỆU THAM KHẢO (65)

Nội dung

Giới thiệu

Chuỗi đặc trưng âm thanh (audio fingerprint, acoustic fingerprint) là một bản tóm tắt của một chuỗi tín hiệu âm thanh Nó được sử dụng để tìm kiếm các mẫu âm thanh hoặc phát hiện các mẫu âm thanh tương tự trong một cơ sở dữ liệu âm thanh.

Chuỗi đặc trưng có nhiều ứng dụng quan trọng, bao gồm nhận dạng bài hát, quản lý bản thu âm, giám sát phát thanh, quản lý thư viện hiệu ứng âm thanh và nhận dạng video Chính vì vậy, chuỗi đặc trưng đã trở thành đối tượng nghiên cứu được quan tâm, đồng thời các ứng dụng của nó ngày càng phong phú và đa dạng.

Chuỗi đặc trưng, như chuỗi âm thanh, là tóm tắt của một chuỗi tín hiệu âm thanh Để có được chuỗi đặc trưng, cần xây dựng một hàm ánh xạ từ chuỗi âm thanh ban đầu sang chuỗi có độ dài nhỏ hơn Thay vì so sánh mức độ tương tự giữa hai chuỗi âm thanh, chúng ta so sánh mức độ tương tự của hai chuỗi đặc trưng tương ứng Trong thực tế, phiên bản chất lượng CD gốc của bài hát “Rolling Stones – Angie” và phiên bản mp3 120Kb/s có thể được cảm nhận là giống nhau bởi hệ thống thính giác con người, tuy nhiên biểu diễn sóng của chúng có thể rất khác nhau Do đó, việc so sánh không phải là sự so sánh chính xác về mặt toán học mà là sự so sánh mang tính cảm quan.

Chỳng ta cần cú một số tiờu chớ ủể ủỏnh giỏ hàm núi trờn Sau ủõy là một số tiờu chớ thường ủược sử dụng:

Tính bền vững (robustness) của chuỗi đặc trưng là khả năng không bị thay đổi khi tín hiệu âm thanh gặp suy giảm hoặc bị nhiễu, méo Tính chất này giúp tăng độ tin cậy trong việc nhận dạng âm thanh trong môi trường thực tế, nơi có nhiều nhiễu và biến đổi tín hiệu nhỏ Để đạt được tính bền vững cao, các fingerprint được chọn lọc cần dựa trên các đặc trưng cảm quan, không bị thay đổi bởi các loại nhiễu của tín hiệu Tỉ lệ sai âm (false negative rate) – xảy ra khi các phiên bản chất lượng khác nhau của cùng một bài hát được nhận định là khác nhau – thường được sử dụng để đo độ bền vững.

Tính tin cậy trong hệ thống nhận dạng âm nhạc được thể hiện qua khả năng xác định đúng trong nhiều trường hợp khác nhau Tỷ lệ sai dương (false negative rate) là một yếu tố quan trọng, xảy ra khi hệ thống nhận diện bản nhạc không chính xác, và nó ảnh hưởng trực tiếp đến độ tin cậy của hệ thống.

• ðộ lớn của chuỗi ủặc trưng: Số lượng bớt của chuỗi ủặc trưng nhỏ giỳp cho tốc ủộ tỡm kiếm ủược cải thiện và giảm dung lượng lưu trữ

Độ mịn (granularity) đề cập đến độ dài tối thiểu của chuỗi âm thanh cần thiết để nhận dạng, thường được đo bằng đơn vị thời gian Hiện nay, một số thuật toán chỉ yêu cầu chuỗi tín hiệu âm thanh có độ dài từ 15 đến 30 giây để tính toán chuỗi đặc trưng.

Tốc độ tìm kiếm và khả năng mở rộng là hai yếu tố quan trọng hàng đầu khi tìm kiếm âm thanh trong các cơ sở dữ liệu lớn Đặc biệt, tốc độ tìm kiếm ảnh hưởng trực tiếp đến hiệu quả sử dụng hệ thống, trong khi khả năng mở rộng đảm bảo rằng hệ thống có thể đáp ứng nhu cầu tăng trưởng dữ liệu trong tương lai.

Một số ứng dụng của chuỗi ủặc trưng

Giám sát phát thanh là ứng dụng quan trọng của chuỗi đặc trưng, cho phép cơ quan giám sát theo dõi các kênh phát thanh và so sánh với chương trình phát để phát hiện sai sót Hệ thống giám sát phát thanh dựa trên chuỗi đặc trưng thường bao gồm hai loại máy chủ: máy chủ giám sát và máy chủ trung tâm Máy chủ trung tâm sử dụng chuỗi đặc trưng để tìm kiếm trong cơ sở dữ liệu và tạo báo cáo về chương trình phát của các kênh đang được giám sát.

1.2.2 Các ứng dụng liên thông âm thanh

Các ứng dụng liên thông âm thanh là những công cụ hữu ích cho người dùng muốn tìm kiếm thông tin về âm nhạc Một ví dụ điển hình là ứng dụng cho phép người dùng xác định tên bài hát và ca sĩ thông qua điện thoại di động Khi nghe một bản nhạc phát qua loa hoặc đài phát thanh, người dùng có thể gọi đến dịch vụ để nhận diện bài hát Âm thanh được thu nhận qua điện thoại sẽ được gửi đến server chứa cơ sở dữ liệu âm nhạc, nơi mà server sử dụng chuỗi đặc trưng để xác định tên bài hát và ca sĩ, sau đó gửi kết quả về cho người dùng Tuy nhiên, đây là một thách thức lớn do tín hiệu âm thanh có thể bị suy giảm và nhiễu sau nhiều lần truyền.

1.2.3 Các bộ lọc trong ứng dụng dùng chung file

Trong các ứng dụng chia sẻ file, chuỗi đặc trưng được sử dụng để nhận diện các file âm thanh có bản quyền và ngăn chặn người dùng tải về Năm 2001, Napster đã cài đặt bộ lọc dựa trên tên file, nhưng bộ lọc này hoạt động không hiệu quả do người dùng thường cố tình sửa đổi tên file để tải về các file có bản quyền Đến tháng 5 năm 2001, Napster đã áp dụng bộ lọc dựa trên chuỗi đặc trưng của Relatable, cho phép phát hiện các file có bản quyền ngay cả khi người sử dụng thay đổi tên file.

1.2.4 Tự ủộng tổ chức thư viện õm nhạc

Chuỗi đặc trưng cụ thể được sử dụng để tự tổ chức thư viện âm nhạc Hiện nay, định dạng file MP3 là phổ biến nhất cho việc lưu trữ trong các thư viện âm nhạc Các file MP3 được tạo ra từ nhiều nguồn khác nhau, kèm theo siêu dữ liệu (meta-data) như tên tác giả, tác phẩm, người thể hiện và năm thu âm, giúp quản lý thông tin một cách hiệu quả Khi sử dụng, chuỗi đặc trưng này hỗ trợ hoàn thiện các thông tin cần thiết cho thư viện âm nhạc.

1.2.5 Một số ứng dụng khác

Chuỗi ủặc trưng có nhiều ứng dụng thực tiễn, đặc biệt trong truyền hình tương tác mà không cần thiết bị đặc biệt Nó tự động phát hiện và thay thế các đoạn quảng cáo Khác với các công nghệ khác, chuỗi ủặc trưng tập trung vào nhận dạng đối tượng mà không cần đến thông tin siêu dữ liệu như meta-data hay watermark.

Cỏc phương phỏp xỏc ủịnh chuỗi ủặc trưng

Nguyên tắc chung cho việc xác định chuỗi đặc trưng là trích rút các đặc trưng từ chuỗi tín hiệu âm thanh Các đặc trưng của một bản nhạc thường được chia thành hai loại chính: đặc trưng ngữ nghĩa và đặc trưng phi ngữ nghĩa.

Các đặc trưng ngữ nghĩa thường có tính trực quan, như thể loại âm nhạc, số nhịp trong một phút (bpm) và tâm trạng (mood) Những đặc trưng này ít mang tính toán học, do đó không thường được sử dụng để xác định chuỗi đặc trưng, dẫn đến kết quả không chính xác và phụ thuộc vào quan điểm cá nhân Vì vậy, người ta thường chú trọng vào việc phân tích các thuật toán và phương pháp xác định chuỗi đặc trưng dựa trên các đặc trưng phi ngữ nghĩa Hiện nay, có bốn phương pháp chính để xác định chuỗi đặc trưng dựa vào đặc trưng phi ngữ nghĩa: cửa sổ gối của Haitsma, phương pháp của Y Ke kết hợp với học máy, phương pháp phân tích biệt số méo của tín hiệu DDA và phương pháp dựa trên wavelet kết hợp với các kỹ thuật thị giác máy.

1.3.1 Phương pháp cửa sổ gối

Cửa sổ gối (overlay window) là phương pháp xác định chuỗi đặc trưng phổ biến nhất, sử dụng các cửa sổ gối nhau của chuỗi tín hiệu âm thanh để trích rút các đặc trưng Phương pháp này duy trì tính bất biến của hệ số dịch thời gian trong các trường hợp không thể so sánh theo kiểu căn thời gian Do các frame gối nhau, chuỗi đặc trưng biến đổi chậm theo thời gian, và việc so sánh giữa hai bản nhạc trở thành so sánh các chuỗi đặc trưng con Sự so sánh này trở nên đơn giản hơn khi dựa vào khoảng cách Hamming giữa các chuỗi đặc trưng con tương ứng Ưu điểm của phương pháp này là tính đơn giản và tốc độ tính toán cao Để sử dụng phương pháp cửa sổ gối, tín hiệu âm thanh được chia thành các frame gối nhau, từ đó tính toán một tập các đặc trưng Các đặc trưng cần được chọn sao cho ít thay đổi với các loại nhiễu tín hiệu, thường là hệ số Fourier, Mel-Frequency Cepstral Coefficients (MFCC), độ mịn quang phổ hay hệ số Linear Predictive Coding (LPC) Đặc trưng tính toán trên mỗi frame được gọi là một sub-fingerprint, và một sub-fingerprint thường không đủ thông tin cho phép nhận dạng bản nhạc, trong khi đơn vị cơ sở cho nhận dạng là các khối đặc trưng (fingerprint block).

Hình 1.1 Mô hình trích chọn fingerprint của Haitsma

Mụ hỡnh trớch của Haitsma và các cộng sự [10, 11] được xây dựng dựa trên phương pháp tiếp cận cụ thể Theo đó, mỗi khoảng thời gian 11,6 mili giây sẽ được tính toán một sub-fingerprint 32 bit Một fingerprint block bao gồm 256 sub-fingerprint nối tiếp, tương ứng với độ mịn 3 giây Trong trường hợp xấu nhất, sự sai lệch giữa sub-fingerprint của bản nhạc thu âm và sub-fingerprint trong cơ sở dữ liệu có thể lên tới 5,8 mili giây.

Âm thanh cảm quan chủ yếu nằm trong miền tần số và được biểu diễn qua phổ tính toán bằng biến đổi Fourier trên từng khung hình Do hệ thống thính giác của con người không cảm nhận được sự thay đổi pha, chỉ những giá trị dương của quang phổ, như mật độ phổ được giữ lại Để tính toán giá trị 32 bit sub-fingerprint cho mỗi khung hình, Haitsma đã chọn một dải gồm 33 miền tần số không trùng lặp, nằm trong khoảng từ 300 Hz đến 2000 Hz, phù hợp với hệ thống thính giác Các thí nghiệm cho thấy sự khác biệt về dấu của năng lượng (theo thời gian và tần số) là bền vững với mọi loại biến đổi của tín hiệu Năng lượng của miền tần số và khung hình được ký hiệu, và các bít của sub-fingerprint được định nghĩa tương ứng.

Hình 1.2 minh họa sự khác biệt giữa fingerprint block của bài hát gốc (a) và bài hát sau khi ủng hộ bị nộn (b) Sự khác nhau này được thể hiện qua chỉ số bớt lỗi màu đen (BER=0,078).

Hình 1.2 minh họa biểu diễn của một khối fingerprint, bao gồm 256 sub-fingerprint, cho bài hát “O Fortuna” của Carl Orff, được chọn theo mô hình của Haitsma Các điểm ảnh màu trắng đại diện cho các bit, trong khi các điểm ảnh màu đen tương ứng với các bit lỗi Hình 1.2a và 1.2b thể hiện khối fingerprint của cùng một đoạn nhạc từ hai phiên bản: phiên bản gốc và phiên bản mp3 (32 Kbps) Trong lý tưởng, hai hình này sẽ giống hệt nhau, nhưng do hiện tượng nén, một số bit sẽ bị sai lệch Những bit lỗi này được sử dụng để đo sự tương tự của mô hình và được thể hiện bằng các điểm ảnh màu đen trong hình 1.2c.

1.3.2 Phương pháp cửa sổ gối kết hợp học máy

Phương pháp thứ hai gần đây được đề xuất là một sự mở rộng của cửa sổ gối Y Ke và các cộng sự đã áp dụng nền tảng tương tự như J Haitsma, nhưng với tính năng học máy để xác định các đặc trưng Một điểm nổi bật là Y Ke đã biểu diễn tín hiệu âm thanh 1-D như một hình ảnh số trong không gian hai chiều với các trục thời gian và tần số.

Kỹ thuật học máy Y Ke áp dụng là AdaBoost, một phương pháp phổ biến trong các ứng dụng thị giác máy, đặc biệt trong việc phát hiện khuôn mặt người trong hình ảnh.

Y Ke và các cộng sự đã áp dụng thuật toán AdaBoost để hệ thống của họ có thể học các đặc trưng năng lượng trên những tần số được chọn lọc theo thời gian Qua quá trình này, hệ thống đã xác định được 32 đặc trưng, tạo thành chuỗi đặc trưng con với độ dài 32 bit Khi nhận yêu cầu tìm kiếm bản nhạc, hệ thống của Y Ke sẽ xử lý dữ liệu âm thanh tương tự như các nghiên cứu trước đó để tạo ra chuỗi đặc trưng con Tiếp theo, hệ thống tính toán khoảng cách Hamming giữa các chuỗi đặc trưng con nhằm tìm kiếm bản nhạc tương tự Nội dung này sẽ được trình bày chi tiết hơn trong mục 1.4 của chương.

1.3.3 Phương pháp DDA (Distortion Discriminant Analysis)

Phương pháp DDA (Distortion Discriminant Analysis) là một kỹ thuật trích rút đặc trưng có khả năng chống nhiễu hiệu quả Các đặc trưng được xác định thông qua DDA thường có độ phức tạp cao hơn so với những đặc trưng được trình bày trong các nghiên cứu của J Haitsma và Y Ke.

DDA cho phép tính toán các chuỗi đặc trưng của các chuỗi tín hiệu dài hơn so với các phương pháp khác Phương pháp này được dựa trên một biến thể của phương pháp LDA.

(Linear Discriminant Analysis) ủược gọi là Oriented Principal Components Analysis (OPCA)

OPCA (Orthogonal Principal Component Analysis) giả thiết rằng cú một phiên bản tín hiệu bị méo của các mẫu huấn luyện, nhằm tìm ra các đặc trưng ít bị biến đổi khi thực hiện bước tiền xử lý tín hiệu, giúp giảm nhiễu đến mức tối thiểu và tối ưu hóa tín hiệu Trong khi đó, PCA (Principal Components Analysis) tìm tập các vector trực giao để tối ưu hóa sự biến đổi của tín hiệu OPCA tìm được tập các vector không trực giao có thể dựng để tính toán nhiễu Thực nghiệm của Burges và các cộng sự cho thấy chuỗi đặc trưng xác định bằng phương pháp DDA ít bị biến đổi với vấn đề căn thời gian và quan trọng hơn là ít bị biến đổi với các loại nhiễu không có trong dữ liệu huấn luyện.

1.3.4 Phương pháp dựa trên wavelet

Phương pháp được phát triển bởi S Baluja và M Covell từ Google Inc., dựa trên tiếp cận của Y Ke, nhằm áp dụng các kỹ thuật trong lĩnh vực thị giác máy để xây dựng chuỗi đặc trưng và tiếp cận dựa trên wavelet.

C Jacob [18] Phương pháp này không sử dụng kỹ thuật học máy mà dùng biến ủổi wavelet ủể tăng tốc ủộ tỡm kiếm trong cơ sở dữ liệu ủa phương tiện lớn Chuỗi ủặc trưng do S Baluja và M Covell ủề xuất dựa trờn cụng trỡnh của J Haitsma

[10, 11] nhưng cú cải tiến nõng cao ủể cú thể ủại diện cho mẫu tớn hiệu õm thanh cú ủộ dài lớn hơn

Ứng dụng của kỹ thuật thị giác máy cho bài toán nhận dạng nhạc số

Kỹ thuật tính toán chuỗi đặc trưng dựa trên cửa sổ gối kết hợp học máy của Yanke xem xét ảnh phổ của mỗi bài hát như một ảnh 2-D, chuyển đổi từ bài toán nhận dạng âm nhạc sang bài toán khôi phục ảnh gốc Bằng cách áp dụng thuật toán boosting theo cặp trên tập các thuộc tính Viola-Jones, hệ thống học được một tập các đặc trưng cho phép chỉ mục hiệu quả Trong quá trình nhận dạng, từ một bản thu âm ngắn của bài hát gốc, hệ thống áp dụng thuật toán xác thực hình học kết hợp với mô hình kỳ vọng cực đại để định danh bài hát gốc Hệ thống mà Y Ke xây dựng có khả năng nhận dạng nhanh chóng và chính xác bài hát gốc từ một bản thu âm tương đối ngắn, ngay cả trong điều kiện thiết bị ghi âm kém và có nhiều tiếng ồn.

1.4.1 Biểu diễn bài hát dưới dạng một spectrogram

Khi nhận diện một bản nhạc bị nhiễu, hệ thống cần nhanh chóng tìm ra bài hát tương ứng trong cơ sở dữ liệu lớn chứa meta-data và fingerprint Để đạt được tính chính xác cao, hệ thống phải phân biệt được các bài hát tương tự, vì chất lượng âm thanh từ các nguồn khác nhau có thể ảnh hưởng đến khả năng nhận diện Thêm vào đó, mỗi bản nhạc truy vấn có thể có độ dài và vị trí bắt đầu ngẫu nhiên, yêu cầu hệ thống xử lý các yếu tố cục bộ và dịch chuyển thời gian Cuối cùng, khả năng lập chỉ mục hiệu quả là cần thiết để đảm bảo việc tìm kiếm kết quả nhanh chóng và chính xác trong cơ sở dữ liệu hàng nghìn bài hát.

Các tín hiệu âm thanh 1-D nguyên bản thường bị biến đổi khi gặp nhiễu, khiến cho việc tính toán các đặc trưng trở nên khó khăn Y Ke đã áp dụng phương pháp chuyển đổi tín hiệu âm thanh thành các ảnh 2-D theo tần số, gọi là ảnh phổ (spectrogram), bằng cách sử dụng biến đổi Fourier ngắn (short-term Fourier transform) Với các spectrogram này, có thể dễ dàng nhận ra sự tương đồng giữa các phiên bản khác nhau của cùng một bài hát, ngay cả khi tín hiệu gốc bị biến đổi Hình 1.4 minh họa các snippet dài 10 giây của ba bài hát: bản gốc của Melloncamp, Waterworld, và bản thu âm của Melloncamp, được biểu diễn theo biên độ, tần số và mô hình nhị phân, cho thấy sự giống nhau giữa hai phiên bản của Melloncamp và sự khác biệt giữa Melloncamp và Waterworld khi được biểu diễn theo tần số và mô hình nhị phân.

Hỡnh 1 4 Biểu diễn õm thanh theo biờn ủộ, tần số và mó nhị phõn

Việc chuyển đổi tín hiệu âm thanh theo miền thời gian sang các spectrogram giúp nhận biết sự giống và khác nhau giữa các tín hiệu âm thanh, nhưng phương pháp so sánh dựa trên sự tương tự thường chậm và không chính xác Y Ke đề xuất một hệ thống học tập để xây dựng một tập các bộ lọc, cho phép giữ lại thông tin cần thiết cho mỗi bài hát và phân biệt giữa các bài hát khác nhau Thay vì cố gắng xây dựng thủ công các bộ lọc này, Y Ke định nghĩa một lớp các mẫu lọc và áp dụng kỹ thuật học máy để chọn ra tập con các mẫu lọc phù hợp nhất Tập các mẫu lọc được Viola và Jones phát triển được Y Ke sử dụng trong việc xây dựng các mẫu lọc cho hệ thống của mình.

Hỡnh 1 5 Cỏc ủặc trưng hỡnh chữ nhật ủược biểu diễn trong mối quan hệ với các cửa sổ tìm kiếm bao xung quanh

Các tác giả đã sử dụng ba loại đặc trưng như hình 1.5 Đặc trưng với hai hình chữ nhật được xác định bằng sự khác biệt giữa tổng các điểm ảnh trong hai hình chữ nhật có kích thước bằng nhau, nằm kề nhau theo trục tung hoặc trục hoành Đối với đặc trưng có ba hình chữ nhật, giá trị được tính bằng tổng các điểm ảnh trong hình chữ nhật trung tâm trừ đi tổng các điểm ảnh trong hai hình chữ nhật bên ngoài Đặc trưng với bốn hình chữ nhật tính toán sự khác nhau về kích thước điểm ảnh giữa hai cặp hình chữ nhật chéo nhau.

Các đặc trưng hình chữ nhật sẽ được tính toán nhanh chóng bằng cách sử dụng phương pháp biểu diễn ảnh gọi là "integral image" Theo đó, integral image tại một vị trí cụ thể là tổng số các điểm ảnh ở phía trên và bên trái của vị trí đó.

! " #!$ " #$ với là intergral image và là ảnh gốc Khi sử dụng 2 công thức sau:

(% là tổng lũy tích hàng, % và ), các intergral image sẽ ủược tớnh toỏn hiệu quả

Trong hệ thống của Y Ke, mỗi bộ lọc cú thể thay ủổi theo dải tần số từ 1 tới

Trong nghiên cứu, khoảng thời gian từ 1 frame (11.6 ms) đến 82 frame (951 ms) đã cho ra khoảng 25,000 bộ lọc ban đầu Từ tập hợp các bộ lọc này, Y Ke đã chọn ra 32 bộ lọc tiêu biểu nhất cùng với ngưỡng tương ứng để tạo ra một vector.

M bit, hay còn gọi là ủặc trưng (sub-fingerprint, descriptor), không chứa đủ thông tin cần thiết để xác định chính xác bài hát gốc từ truy vấn trong một cơ sở dữ liệu lớn Thay vào đó, các signature, là tập hợp các ủặc trưng liên tiếp, mới là đơn vị cơ bản cho việc so sánh và tìm kiếm bài hát.

1.4.2 Tớnh toỏn ủặc trưng bởi thuật toỏn Boosting theo cặp (pairware boosting)

Khi xây dựng đặc trưng cho mỗi bài hát, cần đảm bảo rằng các bản nhạc từ cùng một bài hát sẽ tạo ra những đặc trưng tương tự, trong khi các bản nhạc từ các bài hát khác nhau sẽ cho đặc trưng khác nhau Hệ thống cần phải học được một phân lớp, với hai ảnh phổ bất kỳ và chỉ ra rằng hai ảnh phổ đó thuộc về cùng một bài hát gốc hay hai bài hát khác nhau Một phương pháp phổ biến để xây dựng đặc trưng trong bài toán nhận dạng đối tượng là Adaboost, được Y Ke sử dụng và thay đổi để xây dựng tập các bộ lọc của mình Mỗi bộ phân lớp đóng vai trò quan trọng trong quá trình này.

(classifier) bao gồm , phân lớp yếu (weak classifier), - và một hệ số / Một weak classifier lại bao gồm một bộ lọc và ngưỡng , với

Nếu hai mẫu tạo ra các giá trị tương ứng được tính toán bởi bộ lọc ở cùng phía với ngưỡng, chúng được coi là nằm tại cùng một vị trí trong cùng một bản nhạc; ngược lại, chúng được xem là hai đoạn audio khác nhau Cụng thức gọn nhón mà Y Ke sử dụng khác với thuật toán Adaboost truyền thống ở chỗ nhón được gọn theo cặp của các giá trị lọc Khi các mẫu lọc này được học bởi hệ thống, một ảnh phổ sẽ được chuyển thành một vector, bit, điều này cho phép việc chỉ mục hiệu quả dựa trên thuật toán băm.

Cách ủng trọng số của thuật toán Adaboost nguyên bản không mang lại hiệu quả tốt khi áp dụng cho hệ thống trích chọn của Y Ke, vì thường không có bộ phân lớp nào thực hiện việc gán nhãn tốt hơn so với việc gán nhãn ngẫu nhiên cho các cặp mẫu được chọn khác nhau Điều này cho thấy rằng khi chúng ta có mẫu được chọn ngẫu nhiên từ tập phân phối 3, bộ lọc và ngưỡng, kết quả có thể không đạt yêu cầu mong muốn.

4 5, với 6 5 6 Nếu ta chọn ủộc lập và ngẫu nhiờn hai mẫu khỏc nhau và từ 3, khả năng và nằm ở hai phớa khỏc nhau của ủược chỉ ra bởi:

Khả năng các bộ hai mẫu khác nhau được gán nhãn sai là giống nhau chiếm ít nhất một nửa các mẫu được xét trong trường hợp kích thước mẫu lớn, điều này phản ánh sự yếu kém của điều kiện bộ phân lớp trong Adaboost Để khắc phục vấn đề này, Y Ke đã áp dụng thuật toán phân lớp theo cặp bất đối xứng, trong đó chỉ những bộ mẫu giống nhau được gán lại trọng số, đồng thời trọng số của các bộ giống nhau cũng như khác nhau được chuẩn hóa sao cho tổng trọng số bằng một phần hai Thuật toán boosting theo cặp được mô tả như sau: đầu vào là một chuỗi gồm mẫu.

1 Tính toán tỉ lệ lỗi:

2 Gán hệ số cho - : / BCD EFGG FGG H H

3 Cập nhật trọng số cho những cặp phù hợp nhau:

48 Thực hiện normalize các trọng số như sau:

Hàm phân lớp cuối cùng:

Để kiểm tra thuật toán tính đặc trưng của mình, Y Ke đã tạo ra một tập dữ liệu gồm khoảng một trăm nghìn mẫu dương và một triệu mẫu âm Mẫu dương bao gồm các bộ đặc trưng giống nhau từ các bản nhạc 15 giây, trong khi mẫu âm chứa các bộ đặc trưng khác nhau Y Ke đã kiểm tra ba kiểu đặc trưng: đặc trưng của Haitsma và Kaller (H-K), đặc trưng cải tiến từ H-K, và đặc trưng được tính bởi thuật toán boosting Tất cả các đặc trưng đều có độ dài giống nhau (32-bits), và Y Ke đã thay đổi khoảng cách Hamming từ 0 đến 32 để tạo ra đường cong ROC cho mỗi kiểu đặc trưng Kết quả cho thấy rằng Boosted thực hiện tính đặc trưng tốt hơn H-K trên toàn bộ đường cong ROC H-K Wide, được cải tiến từ H-K bằng cách mở rộng độ rộng của bộ lọc từ 2 frame lên 54 frame, cho kết quả tốt hơn H-K, nhưng Boosted vẫn là thuật toán tính đặc trưng hiệu quả nhất.

Hỡnh 1 6 So sỏnh phương phỏp tớnh toỏn ủặc trưng của Yanke (thuật toán Pairwise Boosting) với thuật toán của Haitsma và Haitsma cải tiến

1.4.3 Học mô hình tiếng ồn (“Ocllusion Model”) với thuật toán EM (Expectation Maximization)

Việc tìm kiếm bản nhạc gốc từ các bản thu âm được thực hiện thông qua việc so sánh các signature Sự tương đồng giữa bản nhạc gốc và bản thu âm được xác định dựa trên số bit khác nhau giữa các đặc trưng tương ứng thuộc hai signature Để xác định xem một đặc trưng có phải do bài hát nào đó trong cơ sở dữ liệu tạo ra hay chỉ là dạng nhiễu (occlusion), hệ thống của Y Ke áp dụng một mô hình phụ thuộc tương đối đơn giản Theo mô hình này, khả năng một đặc trưng được tạo ra bởi các occlusion phụ thuộc vào đặc trưng trước đó (về mặt thời gian) không bị occlusion Cụ thể, với mỗi signature G G G Q 9 G bao gồm đặc trưng, khả năng G được tạo ra bởi snippet gốc với signature R sẽ được tính toán.

GER thể hiện sự khác biệt giữa đặc trưng của bản nhạc thu âm (G) và bản nhạc gốc (R), khi đặc trưng KUV được tạo ra từ tín hiệu gốc, +U trong trường hợp ngược lại Sự khác biệt giữa hai đặc trưng GER là một vectơ, xác định độ chênh lệch giá trị giữa đặc trưng của bản nhạc gốc và bản nhạc thu âm Nếu chúng ta mô hình hóa phân bố của GER như một biến ngẫu nhiên Bernoulli độc lập, ta cần ước lượng XX tham số: W& cho mỗi 4: GER S: và 4: GER S:, cùng với một tham số chuyển cho mỗi 4: S:E và 4: S:E Do dữ liệu huấn luyện không xác định được đặc trưng nào thuộc về bài hát trong cơ sở dữ liệu, chúng ta cần một mô hình để ước lượng đồng thời các tham số, vì vậy thuật toán EM là lựa chọn phù hợp.

Tổng kết chương

Hệ thống nhận dạng âm nhạc của Y Ke cho kết quả tìm kiếm khá khả quan với các tập dữ liệu kiểm tra Tuy nhiên, hệ thống này gặp khó khăn trong việc mở rộng và triển khai thực tế do một số nguyên nhân.

Cơ sở dữ liệu bài hát trong hệ thống được lưu trữ dưới dạng file nhị phân có cấu trúc, không sử dụng hệ quản trị cơ sở dữ liệu nào Điều này gây khó khăn cho hệ thống khi phải vận hành với số lượng bài hát lớn, đồng thời ảnh hưởng đến các yếu tố như bảo mật, phân quyền và tốc độ truy vấn, vì không nhận được hỗ trợ từ các hệ quản trị cơ sở dữ liệu hiện đại.

Cơ sở dữ liệu bài hát của hệ thống được lưu trữ dưới dạng file nhị phân có cấu trúc, điều này gây ra khó khăn khi cần bổ sung hoặc thay đổi thông tin quan trọng cho một bài hát trong cơ sở dữ liệu.

Phần tìm kiếm bản nhạc được thực hiện qua các hàm C++, đòi hỏi người sử dụng cần hiểu cách lưu trữ dữ liệu của Y để có thể sử dụng lại các hàm này.

Luận văn này tập trung vào việc xây dựng các hàm mở rộng C trong PostgreSQL để tìm kiếm bản nhạc thông qua các câu truy vấn SQL đơn giản Mặc dù nhiều hệ quản trị cơ sở dữ liệu khác như MySQL và Oracle cũng hỗ trợ tính năng xây dựng hàm mở rộng, chúng tôi chọn PostgreSQL vì đây là hệ quản trị cơ sở dữ liệu mã nguồn mở, cung cấp nhiều tính năng mở rộng, cho phép người dùng định nghĩa các kiểu dữ liệu, bao gồm cả kiểu có cấu trúc và các toán tử mới Chương 2 sẽ cung cấp cái nhìn sâu hơn về PostgreSQL và quy trình xây dựng hàm mở rộng trong hệ thống này.

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU POSTGRESQL

PostgreSQL là hệ quản trị cơ sở dữ liệu quan hệ - đối tượng (ORDBM) dựa trên phiên bản POSTGRES 4.2, được phát triển tại Bộ môn Khoa học Máy tính, Đại học California, Berkeley POSTGRES đã giới thiệu nhiều khái niệm quan trọng, ảnh hưởng đến các hệ cơ sở dữ liệu thương mại hiện nay.

PostgreSQL là một hệ mó nguồn mở ủược phỏt triển từ những mó Berkeley ban ủầu, nú cung cấp cỏc chuẩn SQL:2003 và nhiều tớnh năng hiện ủại khỏc:

• các truy vấn phức tạp (complex queries)

• toàn vẹn thao tác (transactional integrity)

• ủiều khiển trựng hợp thời gian ủa phiờn bản (multiversion concurrency control)

Ngoài ra, PostgreSQL cú thể ủược mở rộng bởi người sử dụng theo cỏc cỏch khác nhau, chẳng hạn như thêm mới:

• các hàm kết hợp (aggregate functions)

• cỏc phương phỏp ủỏnh chỉ mục (index methods)

• các ngôn ngữ thủ tục (procedural languages)

PostgreSQL là một hệ quản trị cơ sở dữ liệu nguồn mở, cho phép người dùng sử dụng, thay đổi và phân phối miễn phí cho nhiều mục đích khác nhau, bao gồm cá nhân, thương mại và giáo dục.

PostgreSQL chứng tỏ tính tin cậy cao khi sử dụng, với mỗi phiên bản mới được xem xét cẩn thận trước khi phát hành Phiên bản beta chỉ được phát hành sau khi đã được kiểm tra tối thiểu trong một tháng Nhờ vào cộng đồng người dùng rộng lớn, các lỗi trong quá trình vận hành có thể được khắc phục nhanh chóng.

Hiệu năng của PostgreSQL được cải tiến liên tục qua từng phiên bản phát hành, và các tiêu chuẩn mới nhất của nó có thể so sánh một cách tích cực với các sản phẩm thương mại khác.

Vắn tắt về lịch sử PostgreSQL

Hệ quản trị cơ sở dữ liệu quan hệ PostgreSQL có nguồn gốc từ dự án POSTGRES, được phát triển tại Đại học California, Berkeley Từ năm 1977 đến 1985, hệ cơ sở dữ liệu Ingres cũng được phát triển tại UCB và trở thành sản phẩm xuất khẩu phổ biến, được sử dụng rộng rãi trên các máy tính UNIX cho giảng dạy và nghiên cứu Để phục vụ mục đích thương mại, mã Ingres được tổ chức bởi tập đoàn Ingres, trở thành một trong những hệ quản trị cơ sở dữ liệu quan hệ thương mại đầu tiên.

Vào những năm 1986 đến 1994, tại UCB, các nhà phát triển đã nghiên cứu một hệ quản trị cơ sở dữ liệu quan hệ mang tên Postgres Năm 1994, các tính năng SQL được bổ sung vào Postgres và tên gọi được đổi thành Postgres95 Đến năm 1996, Postgres trở nên nổi tiếng và được đổi tên lần cuối thành PostgreSQL, thể hiện sự tuân thủ chuẩn ngôn ngữ truy vấn.

Hiện nay, PostgreSQL được phát triển tương tự như các phần mềm mã nguồn mở khác như Perl, Apache và PHP Các phiên bản mới nhất của PostgreSQL có thể được cập nhật tại trang web http://www.postgresql.org.

Kiến trúc của PostgreSQL

Một trong những điểm mạnh của PostgreSQL xuất phát từ kiến trúc của nó Tương tự như các hệ cơ sở dữ liệu thương mại khác, PostgreSQL có thể được sử dụng trong môi trường máy chủ/máy khách, mang lại nhiều lợi ích cho người sử dụng và nhà phát triển.

Trái tim của một cài đặt PostgreSQL là tiến trình thao tác với cơ sở dữ liệu tại máy chủ Tiến trình này hoạt động trên một máy chủ riêng biệt, và các ứng dụng muốn truy cập dữ liệu lưu trữ trong cơ sở dữ liệu phải thông qua tiến trình này Điều này là cần thiết vì các chương trình máy khách không thể truy cập trực tiếp vào dữ liệu, ngay cả khi chúng chạy trên cùng một máy tính với tiến trình cơ sở dữ liệu.

Kiến trúc máy chủ/máy khách cho phép các ứng dụng được phân phối một cách dễ dàng Người dùng có thể sử dụng mạng máy tính để phân tách máy chủ và máy khách, phát triển các ứng dụng trên máy khách trong môi trường tối ưu nhất cho họ, ví dụ như cài đặt cơ sở dữ liệu trên UNIX và tạo các chương trình chạy trên Microsoft Windows Hình 2.1 minh họa một ứng dụng PostgreSQL phổ biến.

Trong ứng dụng PostgreSQL, nhiều máy khách kết nối với máy chủ qua mạng TCP/IP, có thể là mạng LAN hoặc Internet Mỗi máy khách sẽ kết nối lần lượt đến một tiến trình máy chủ cơ sở dữ liệu, được gọi là postmaster Sau đó, postmaster sẽ tạo ra các tiến trình riêng biệt để phục vụ nhu cầu truy cập dữ liệu của từng máy khách.

Việc xử lý dữ liệu tập trung tại máy chủ thay vì quản lý truy cập từ các máy khách đến một thư mục chia sẻ trên máy chủ cho phép PostgreSQL duy trì tính toàn vẹn dữ liệu hiệu quả, ngay cả khi có nhiều người truy cập dữ liệu đồng thời.

Chương trình máy khách sử dụng giao thức kết nối được quy định bởi PostgreSQL, nhưng có thể cài đặt phần mềm cung cấp giao diện chuẩn như ODBC hoặc JDBC Tiện ích của ODBC cho phép nhiều ứng dụng hiện hành, bao gồm Microsoft Office như Excel và Access, truy cập cơ sở dữ liệu PostgreSQL.

Kiến trúc máy chủ/máy khách của PostgreSQL cho phép phân chia công việc hiệu quả, với máy chủ đóng vai trò là kho lưu trữ và truy cập dữ liệu an toàn Các ứng dụng đồ họa phức tạp được triển khai trên máy khách, trong khi một kiến trúc đầu cuối trên nền tảng web được phát triển để truy cập dữ liệu và hiển thị kết quả dưới dạng trang web trên trình duyệt chuẩn, không cần cài đặt phần mềm máy khách bổ sung.

Các hàm mở rộng trong ngôn ngữ C

Hiện nay, PostgreSQL cung cấp bốn kiểu hàm sau:

Các hàm theo ngữ ngữ truy vấn trong SQL thực hiện một chuỗi các câu lệnh truy vấn và trả về kết quả của truy vấn cuối cùng trong danh sách.

PostgreSQL hỗ trợ việc định nghĩa các hàm bằng ngôn ngữ thủ tục như PL/pgSQL và PL/Tcl, cho phép người dùng viết hàm bằng các ngôn ngữ khác ngoài SQL và C Các ngôn ngữ thủ tục này không được xây dựng sẵn trong máy chủ PostgreSQL mà được cung cấp dưới dạng các module cụ thể có thể nạp vào.

PostgreSQL được lựa chọn làm ngôn ngữ truy vấn chính thức nhờ tính khả chuyển và dễ học Mỗi câu lệnh SQL được thực hiện riêng biệt bởi hệ quản trị cơ sở dữ liệu phía server, yêu cầu ứng dụng phía client gửi truy vấn, chờ xử lý và nhận kết quả Quá trình này tiêu tốn tài nguyên mạng và bộ nhớ, đặc biệt là thời gian thực thi khi client và server trên hai máy khác nhau Sử dụng hàm PL/pgSQL cho phép nhóm các tính toán và câu lệnh truy vấn tại cơ sở dữ liệu phía server, giúp giảm thời gian giao tiếp và tính toán, từ đó nâng cao hiệu năng hệ thống.

Hàm nội tại (internal function) là các hàm được viết bằng ngôn ngữ C và được liên kết tĩnh với máy chủ PostgreSQL Thông thường, các hàm nội tại sẽ được khai báo trong quá trình khởi tạo các cụm cơ sở dữ liệu (database cluster), tuy nhiên người sử dụng có thể sử dụng câu lệnh CREATE FUNCTION để tạo mới một hàm nội tại.

C functions, also known as C-language functions, are compiled into dynamically loadable objects or shared libraries, which can be called on demand by a server These dynamic objects differentiate C language functions from internal functions.

Thông thường, có hai quy tắc khác nhau được sử dụng để gọi đến các hàm C Quy tắc gần đây hay được áp dụng (phiên bản 1) yêu cầu phải thực hiện macro.

PG_FUNCTION_INFO_V1() là một macro quan trọng trong việc định nghĩa hàm trong PostgreSQL, trong khi phiên bản trước (0) không yêu cầu gọi macro này Tên ngôn ngữ của hàm được chỉ định là C trong câu lệnh CREATE FUNCTION, áp dụng cho cả hai cách gọi hàm.

Lần đầu tiên một hàm do người dùng định nghĩa được gọi trong một phiên khi trình tải động thực hiện nạp một đối tượng có thể tải vào bộ nhớ để máy chủ thực hiện lời gọi hàm Để tạo hàm cho một hàm viết bằng C, người dùng cần chỉ định rõ hai thông tin: tên của tệp đối tượng có thể tải và tên của hàm C trong đối tượng đó Nếu tên của hàm C không được chỉ định, trình biên dịch sẽ giả định rằng nó trùng với tên của hàm SQL.

Thuật toỏn sau ủược sử dụng ủể ủịnh vị một shared object file dựa vào tờn ủược ủưa ra trong cõu lệnh CREATE FUNCTION:

• Nếu tờn dưới dạng ủường dẫn tuyệt ủối, nú sẽ ủược nạp

• Nếu tờn bắt ủầu với chuỗi $libdir, chuỗi ủược thay thế bởi tờn của thư mục chứa thư viện PostgreSQL

• Nếu tờn khụng chứa ủường dẫn thư mục, object file sẽ ủược tỡm kiếm trong thư mục ủược xỏc ủịnh là giỏ trị của biến dynamic_library_path

Dynamic loader sẽ chỉ giữ lại tên file mà không tìm thấy file được chỉ định, trừ khi có thông tin đầy đủ trong đường dẫn hoặc tên file chứa đường dẫn thư viện.

Sau khi thực hiện chuỗi các sự kiện mà vẫn không tìm thấy file, phần mở rộng tên file thường được thêm vào (thường là so) và chuỗi sự kiện được lặp lại Trong tất cả các trường hợp này, tên file thường được ghi lại trong bảng danh mục của hệ thống để khi cần, thủ tục tương tự sẽ được áp dụng.

Sau khi gọi ủầu tiờn, các tệp đối tượng được nạp động sẽ được lưu trữ trong bộ nhớ, và các lời gọi hàm tiếp theo trong cùng phiên sẽ được thực hiện dựa trên một bảng tra cứu Để nạp lại một đối tượng, chẳng hạn sau khi biên dịch lại, người dùng có thể sử dụng câu lệnh LOAD hoặc bắt đầu một phiên làm việc mới.

Các thư viện dựng chung nên được cài đặt trong thư viện của PostgreSQL Để xác định đường dẫn thực tế của thư viện mà biến $libdir đại diện cho, hãy sử dụng lệnh pg_config pkglibdir.

2.3.2 Các kiểu dữ liệu cơ sở trong C

Kiểu dữ liệu cơ sở tuõn theo một trong ba dạng sau ủõy:

• Truyền bởi giỏ trị, ủộ dài cố ủịnh (pass by value, fixed-length)

• Truyền bởi tham chiếu, ủộ dài cố ủịnh (pass by reference, fixed-length)

• Truyền bởi tham chiếu, ủộ dài thay ủổi (pass by reference, variable- length)

Kiểu by-value chỉ có độ dài 1, 2 hoặc 4 byte (có thể là 8 byte nếu sizeof(Datum) là 8) Cần lưu ý rằng kiểu long có độ lớn 4 byte trên một số máy và 8 byte trên các máy khác, trong khi kiểu int thường là 4 byte trên hầu hết các máy cài đặt hệ điều hành Unix Một khai báo chấp nhận kiểu int4 trên một máy Unix có thể được thực hiện như sau:

/* 4-byte integer, passed by value */ typedef int int4;

Kiểu cú ủộ dài cố ủịnh (fixed-length) cũng cú thể ủược truyền bởi tham chiếu như ủịnh nghĩa kiểu Point trong PostgreSQL như sau:

/* 16-byte structure, passed by reference */ typedef struct { double x, y;

Trong PostgreSQL, con trỏ tới kiểu dữ liệu này được sử dụng khi truyền tham số cho hàm Để trả về giá trị với kiểu dữ liệu này, cần cấp phát bộ nhớ thích hợp bằng câu lệnh palloc, ghi vào bộ nhớ đã chỉ định và trả về một con trỏ tới bộ nhớ đó.

Các kiểu dữ liệu có độ dài thay đổi cần được truyền qua tham chiếu và bắt đầu bằng một trường độ dài 4 bytes Dữ liệu trong kiểu này phải được lưu trữ trong bộ nhớ ngay sau trường độ dài Trường độ dài thể hiện kích thước tổng thể của cấu trúc dữ liệu, bao gồm cả kích thước của trường độ dài này (4 bytes).

Chỳng ta cú thể ủịnh nghĩa kiểu text như sau: typedef struct { int4 length; char data[1];

Xây dựng cơ sở dữ liệu các fingerprint

Hệ thống sẽ tính toán đặc trưng cho mỗi bài hát từ tập hợp các bài hát trong cơ sở dữ liệu và lưu trữ chúng Quá trình này cũng được áp dụng khi nhận một bản nhạc truy vấn Đầu tiên, mỗi bài hát định dạng WAV (Waveform Audio File Format) sẽ được chuyển đổi thành dạng âm đơn (mono) và giảm mẫu xuống 5512.5 KHz Tiếp theo, biến đổi Fourier ngắn sẽ được áp dụng với kích thước cửa sổ 2048 mẫu (0,372 giây) và độ dịch cửa sổ là 64 mẫu (11,6 mili giây), với dải năng lượng trong khoảng từ 300 Hz đến 2000 Hz.

Miền tần số 33 khoảng ủều nhau cho phép truyền tải dễ dàng qua điện thoại di động Hệ thống áp dụng 32 bộ lọc học và ngưỡng tương ứng để tạo ra đặc trưng 32-bit cho mỗi khoảng 11,6 giây của tín hiệu Đối với một bài hát có độ dài trung bình 200 giây, cần khoảng 70Kb để biểu diễn đặc trưng của nó.

Việc lưu trữ file nhạc định dạng WAV tiêu tốn nhiều tài nguyên bộ nhớ, do đó, hệ thống sử dụng thư viện ffmpeg để chuyển đổi bài hát từ định dạng MP3 sang WAV, giúp tính toán đặc trưng từ tập hợp bài hát MP3 hiệu quả hơn.

3.1.1 Thiết kế cơ sở dữ liệu bài hát trong PostgreSQL

Tìm kiếm trong cơ sở dữ liệu meta-data/fingerprint là một nhiệm vụ phức tạp, đặc biệt khi xử lý khoảng 250 triệu đặc trưng từ 10.000 bài hát có độ dài trung bình 5 phút Để nhận diện một chuỗi đặc trưng từ bài hát chưa biết, hệ thống phải so sánh trên toàn bộ 250 triệu đặc trưng, một công việc tốn thời gian ngay cả với máy tính hiện đại Do đó, khi xây dựng chiến lược tìm kiếm, chúng tôi giả định rằng chuỗi đặc trưng truy vấn sẽ có ít nhất một đặc trưng trùng khớp với bài hát trong cơ sở dữ liệu Cơ sở dữ liệu fingerprint sẽ bao gồm một bảng tra cứu (LUT) chứa tất cả giá trị cụ thể của một đặc trưng 32 bit, với mỗi mục (entry) dẫn đến danh sách các con trỏ tương ứng Tuy nhiên, trong các hệ thống tìm kiếm thực tế với giới hạn bộ nhớ, việc sử dụng bảng tra cứu với nhiều entry thường không khả thi và thực tế, do đó, bảng băm thường được áp dụng thay cho bảng tra cứu để tối ưu hóa hiệu suất.

Hình 3 1 Tổ chức cơ sở dữ liệu theo LUT

Cơ sở dữ liệu của hệ thống nhận dạng âm nhạc bao gồm các quan hệ chính như bài hát và đặc trưng Quan hệ bài hát chứa các thuộc tính như định danh bài hát (song_id), tên bài hát (song_name), đường dẫn thư mục (link), chuỗi đặc trưng (fingerprint) được tổ chức dưới dạng mảng giá trị nguyên dương 32 bit, và độ dài của chuỗi đặc trưng Trong khi đó, quan hệ đặc trưng (sub_fingerprint) bao gồm các thuộc tính như định danh của đặc trưng (subfingerprint_id), định danh bài hát (song_id), vị trí của đặc trưng trong chuỗi (frame) và giá trị của đặc trưng (sub_fingerprint) Để tăng tốc độ tìm kiếm, hệ thống thực hiện chỉ mục cho các thuộc tính song_id, frame và sub_fingerprint, với thực nghiệm cho thấy rằng chỉ mục trên trường sub_fingerprint đặc biệt giúp cải thiện đáng kể tốc độ tìm kiếm.

Hình 3 2 Mô hình cơ sở dữ liệu

3.1.2 Xõy dựng cỏc hàm mở rộng trong PostgreSQL ủể tỡm kiếm bản nhạc

Dựa trên phương pháp nhận dạng âm nhạc của Y Ke và Haitasma, chúng tôi đã phát triển hai hàm mở rộng cần thiết cho quá trình nhận dạng âm nhạc.

Hàm Find_near_neighbour nhận đầu vào là một chuỗi đặc trưng truy vấn và tìm kiếm trong cơ sở dữ liệu các bài hát có chứa ít nhất một đặc trưng từ chuỗi truy vấn Kết quả trả về là tập hợp các bài hát phù hợp, cùng với vị trí của các đặc trưng chung trong mỗi bài hát Tuy nhiên, số lượng bài hát có thể rất lớn, dẫn đến việc tính toán độ tương tự trên toàn bộ tập này không khả thi trong thời gian tìm kiếm Do đó, thuật toán RANSAC được áp dụng để giới hạn số lượng bài hát tiềm năng, trong đó một bài hát được lựa chọn nếu chuỗi đặc trưng của nó chứa ít nhất một đặc trưng từ chuỗi truy vấn.

Hàm Find_near_neighbour thực hiện tìm kiếm bằng cách so sánh tập hợp các bài hát và vị trí của đặc trưng chung trong bài hát Hàm này tính toán khoảng cách Hamming giữa chuỗi đặc trưng của các bài hát và chuỗi đặc trưng truy vấn để đưa ra tỷ lệ bit lỗi, tức là tỷ số giữa số lượng 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 Kết quả trả về là tên bài hát có tỷ lệ bit lỗi nhỏ nhất Thuật toán RANSAC cũng được áp dụng trong hàm tìm kiếm này để cải thiện tốc độ tìm kiếm của hệ thống.

Với hai hàm mở rộng được cài đặt trực tiếp trên server, chúng ta có thể thực hiện tìm kiếm bài hát gốc cho bất kỳ 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 thể loại nhạc là rất quan trọng để tạo ra 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 và các snippet truy vấn đều được thu âm qua micro có chất lượng kém, trong môi trường có nhiều tiếng ồn gây nhiễu.

Kết quả thực nghiệm

Chúng tôi xây dựng một hệ thống nhận dạng âm nhạc dựa trên chuỗi đặc trưng với cơ sở dữ liệu gồm 597 bài hát và tiến hành kiểm tra kết quả tìm kiếm trên hai tập dữ liệu T1 và T2 Tập dữ liệu T1 bao gồm 956 snippet được thu âm trong môi trường nhiều nhiễu như tiếng ồn ban ngày, tiếng rè của loa và micro kém chất lượng, cùng với tiếng gió từ quạt máy T2 bao gồm toàn bộ các snippet trong T1 đã được tiền xử lý bằng cách tăng biến động tín hiệu nhưng không khử nhiễu.

Chúng tôi đã thực hiện kiểm tra kết quả thực nghiệm trên ba bộ dữ liệu huấn luyện: bộ dữ liệu YanKe và hai bộ dữ liệu tự tạo là HL1 và HL2 Bộ dữ liệu HL1 không bao gồm các snippet từ hai tập dữ liệu T1 và T2, trong khi HL2 chứa một số snippet có trong T1.

Khi thực hiện quá trình tiền xử lý (T1) cho việc huấn luyện YanKe, HL1 và HL2, chúng tôi nhận thấy rằng việc tiền xử lý các bản nhạc truy vấn bằng cách tăng thêm biến số có ảnh hưởng tích cực Kiểm tra với tập dữ liệu T2, chúng tôi thu được kết quả tương ứng đạt 94.3%.

Hình 3 3 So sánh kết quả thực nghiệm với các bộ dữ liệu huấn nhau

Như vậy, cả 2 bộ dữ liệu huấn luyện HL1 v nghiệm tốt hơn hẳn so với dữ liệu học của Yan Ke ủối với 2 tập dữ liệu v T2

Kết quả thực nghiệm cho thấy độ chính xác của việc tìm kiếm với các bộ dữ liệu huấn luyện khác nhau đạt 86.7%, 89.5% và 90% cho các bộ dữ liệu YanKe, HL1 và HL2 Đồng thời, việc tiền xử lý các bản nhạc truy vấn đã cải thiện độ chính xác của kết quả tìm kiếm Khi kiểm tra với tập dữ liệu T2, chúng tôi ghi nhận độ chính xác đạt 94.3% với YanKe và 98% với HL1 Cả hai bộ dữ liệu huấn luyện HL1 và HL2 đều cho kết quả tốt hơn so với dữ liệu học của YanKe.

Tập dữ liệu tìm kiếm

Trong quá trình thực nghiệm, chúng tôi đã tiến hành so sánh kết quả với các bộ dữ liệu huấn luyện khác nhau Kết quả cho thấy việc tiền xử lý các bản nhạc truy vấn mang lại hiệu quả đáng kể, với 98% độ chính xác tương ứng với bộ dữ liệu học của Yan Ke cho hai bộ HL1 và HL2 Ngoài ra, các kết quả thực nghiệm với các bộ dữ liệu huấn luyện khác cũng cho thấy sự khác biệt rõ rệt so với dữ liệu học của Yan Ke, đặc biệt là với hai tập dữ liệu vào T1.

Biểu ủồ so sỏnh kết quả thực nghiệm với cỏc bộ

Chúng tôi đã tiến hành so sánh tốc độ tìm kiếm giữa hệ thống nhận dạng mới và hệ thống của Y Ke bằng cách sử dụng bộ dữ liệu kiểm tra gồm 100 bản nhạc thu âm dài 30 giây Kết quả cho thấy, mặc dù có một số trường hợp đặc biệt không tìm thấy bản nhạc gốc do sai khác với bản thu âm, hệ thống mới vẫn cho kết quả trả về nhanh hơn hẳn hệ thống của Y Ke Cụ thể, thời gian tìm kiếm trung bình của hệ thống mới nhanh hơn 3,6 lần so với hệ thống của Y Ke.

Hình 3 4 So sánh thời gian tìm kiếm trên mỗi bản nhạc thu với hệ thống nhận dạng mới (Nhạc số) và hệ thống của Y.Ke (Y Ke)

Ngày đăng: 17/12/2023, 01:50