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
Ý kiến Hacker News
Cách tiếp cận dựa trên hàm băm hiệu quả của Shazam
Sức hấp dẫn kỳ diệu bền bỉ của Shazam
Video của Wall Street Journal giải thích cách Shazam hoạt động
Giải thích về Chromaprint và AcoustID
Một bài viết thú vị về Shazam và xử lý tín hiệu số
Các thuật toán tương tự có thể áp dụng cho những loại media khác
Tầm quan trọng của website Every Noise At Once
Tính trực quan của quá trình nhận diện âm nhạc
Phép biến đổi Fourier được dùng trong nhận diện âm nhạc