2 điểm bởi GN⁺ 2023-12-06 | 1 bình luận | Chia sẻ qua WhatsApp

Tiêu đề tóm tắt: Nguyên lý công nghệ nhận diện nhạc của Shazam

Shazam là gì?

  • Shazam là ứng dụng dùng để nhận diện nhạc đang phát xung quanh.
  • Mở ứng dụng và ghi âm vài giây trong khi nhạc đang phát, sau đó tìm kiếm trong cơ sở dữ liệu.
  • Trước đây dịch vụ từng được cung cấp qua số điện thoại, và do giới hạn chất lượng cuộc gọi nên đây là một bài toán nhận diện nhạc khó.

Vì sao nhận diện nhạc lại khó?

  • Với những người không quen xử lý tín hiệu, đây là một vấn đề khó do tính phức tạp của tín hiệu âm thanh.
  • Cách brute-force để tìm một đoạn cụ thể của bài hát trong toàn bộ track là rất chậm, và hình dạng tín hiệu có thể thay đổi lớn do tiếng ồn nền, hiệu ứng tần số, v.v.

Tổng quan hệ thống

  • Shazam được chia thành hai luồng: đăng ký bài hát và nhận diện; cả hai đều có các bước chung như tính spectrogram, tìm peak trong spectrogram và băm các peak.
  • Luồng đăng ký lưu hash vào cơ sở dữ liệu, còn luồng nhận diện so sánh với các hash trong cơ sở dữ liệu để xác định bài hát đang phát.

Tính spectrogram

  • Để thu được spectrogram của âm thanh, cần hiểu phép biến đổi Fourier.
  • Phép biến đổi Fourier cho biết những tần số nào tồn tại trong âm thanh, từ đó tạo ra spectrogram biểu diễn sự thay đổi tần số theo thời gian.

Spectrogram

  • Để biểu diễn tốt hơn các tần số thay đổi theo thời gian, bài hát được chia thành các phần nhỏ và áp dụng phép biến đổi Fourier.
  • Spectrogram là đồ thị 3D gồm thời gian (trục X), tần số (trục Y) và cường độ (trục Z/màu sắc).

Tạo fingerprint

  • Từ spectrogram, tìm các peak biểu thị những tần số lớn nhất để trích xuất fingerprint riêng của âm thanh.
  • Các peak này phù hợp để tạo fingerprint vì chúng có thể chịu được nhiễu hoặc các biến dạng khác.

Tìm peak

  • Các peak trong spectrogram biểu thị những tần số mạnh nhất của tín hiệu, và cần được phân bố đều để dùng trong fingerprint âm thanh.
  • Dùng kỹ thuật maximum filter để làm nổi bật các peak trong spectrogram và xác định vị trí của chúng.

Hashing

  • Tạo hash bằng cách ghép cặp các peak trong spectrogram, nhờ đó tăng tính duy nhất.
  • Hash được lưu trong cơ sở dữ liệu cùng với tần số của hai peak và độ lệch thời gian giữa chúng.

Matching

  • Giải thích quá trình tìm fingerprint khớp với mẫu âm thanh đã cho trong bộ sưu tập fingerprint của cơ sở dữ liệu.
  • Tìm kiếm hash, nhóm theo từng bài hát, sau đó kiểm tra các hash trùng khớp để chọn ra track có số lượng khớp nhiều nhất.

Kết luận

  • Shazam trải qua các bước như tính spectrogram, trích xuất peak, tạo cặp hash và lưu fingerprint để đăng ký và nhận diện bài hát.

Ý kiến của GN⁺

  • Điểm quan trọng nhất của bài viết này là giải thích quy trình phức tạp mà Shazam dùng để nhận diện nhạc theo cách dễ hiểu.
  • Việc chia nhỏ các chi tiết kỹ thuật theo từng bước để ngay cả kỹ sư phần mềm mới vào nghề cũng có thể hiểu được là điều thú vị và hấp dẫn.

1 bình luận

 
GN⁺ 2023-12-06
Ý kiến Hacker News
  • Cách tiếp cận dựa trên hàm băm hiệu quả của Shazam

    Khi Shazam ra mắt vào năm 2008, việc phát triển một phương pháp chuyển bài hát thành hàm băm theo cách hiệu quả về mặt tính toán là một hướng đi sáng suốt. Nếu ra mắt một dịch vụ tương tự ngày nay, có lẽ người ta sẽ mặc định chọn cách làm R&D để huấn luyện mô hình, nhưng điều đó có thể kém hiệu quả và tốn kém. Vì số lượng bài hát là hữu hạn, cách tiếp cận dựa trên hàm băm có thể cho hiệu năng tốt hơn nhiều.

  • Sức hấp dẫn kỳ diệu bền bỉ của Shazam

    Shazam là một trong số ít sản phẩm vẫn mang lại cảm giác như phép màu suốt hơn 20 năm, và đó là điều mà những người làm kỹ thuật nên hướng tới.

  • Video của Wall Street Journal giải thích cách Shazam hoạt động

    Có một video rất hay do Wall Street Journal thực hiện, giải thích cách Shazam tạo ra dấu vân tay âm thanh độc đáo.

  • Giải thích về Chromaprint và AcoustID

    Chromaprint hoạt động dựa trên các mẫu thay đổi cao độ thay vì các giá trị cực đại của phổ, và được dùng trong cơ sở dữ liệu mở quy mô lớn mang tên AcoustID để liên kết bản ghi MusicBrainz với dấu vân tay âm thanh. Dù không nhận được mức hỗ trợ thương mại như Shazam, thật ấn tượng khi cơ sở dữ liệu này vẫn chứa rất nhiều nhạc.

  • Một bài viết thú vị về Shazam và xử lý tín hiệu số

    Đây là phần nhập môn rất tốt về cách Shazam hoạt động và về xử lý tín hiệu số, là bài đọc nên xem đối với những ai muốn hiểu cách nhận diện dấu vân tay âm thanh vận hành.

  • Các thuật toán tương tự có thể áp dụng cho những loại media khác

    Không chỉ nhận diện dấu vân tay âm thanh, còn có những thuật toán xấp xỉ tương tự có thể áp dụng cho các loại media khác, và ai muốn hiểu về hashing trong thế giới thực nên đọc kỹ bài viết này.

  • Tầm quan trọng của website Every Noise At Once

    Every Noise At Once là một website đáng kinh ngạc, áp dụng đối sánh thuật toán vào việc phân loại thể loại nhạc và các nhánh tiểu thể loại phát sinh khi xuất hiện các đặc trưng bài hát mới. Dịch vụ này có nguy cơ ngừng hoạt động vì vấn đề hosting, và đó sẽ là một mất mát lớn đối với World Wide Web.

  • Tính trực quan của quá trình nhận diện âm nhạc

    Hệ thống này nhận diện các mảnh giai điệu và ghép chúng theo đúng thứ tự theo cách rất giống với quá trình nhận thức của con người, phù hợp với cách chúng ta nghe vài nốt nhạc rồi nhận ra bài hát.

  • Phép biến đổi Fourier được dùng trong nhận diện âm nhạc

    Có đề cập đến phép biến đổi Fourier thường được dùng trong nhận diện âm nhạc; nó cũng từng được sử dụng trong phiên bản mã nguồn mở tên là Echoprint, nhưng dịch vụ đã bị ngừng sau khi được Spotify mua lại.