Máy nhận ra bài hát sau vài giây nhờ "dấu vân tay âm thanh": một bản tóm tắt cực gọn của đoạn nhạc, chỉ giữ lại vị trí những nốt nổi bật nhất theo thời gian và tần số. Điện thoại thu vài giây nhạc, tạo dấu vân tay rồi gửi đi so với kho dấu vân tay của hàng triệu bản ghi. Khi nhiều điểm khớp nhau theo đúng nhịp thời gian, máy biết đó là bài nào, kể cả khi quán cà phê đang ồn.
Vì sao không so trực tiếp file nhạc
Cách ngây thơ nhất là thu đoạn nhạc rồi so từng mẫu âm thanh với mọi bài hát đã lưu. Cách này hỏng ngay vì ba lý do:
- Quá nặng: một bài hát vài phút là hàng triệu con số. So với hàng chục triệu bài thì không máy chủ nào trả lời kịp trong vài giây.
- Không biết bắt đầu từ đâu: người dùng có thể bấm nút ở giây thứ 10 hay phút thứ 3 của bài.
- Tiếng thu được đã bị "bẩn": lẫn tiếng người nói, tiếng ly chén, tiếng xe; loa quán méo tiếng; micro điện thoại cắt mất phần trầm. Dãy số thu được khác xa file gốc.
Vì vậy, các hệ thống nhận diện bài hát không so âm thanh thô mà so những đặc điểm bền vững, ít bị tiếng ồn làm thay đổi. Đó là ý tưởng của dấu vân tay âm thanh.
Bước 1: biến âm thanh thành "bản đồ" thời gian – tần số
Máy cắt đoạn nhạc thành những lát rất ngắn, cỡ vài phần trăm giây, rồi phân tích mỗi lát gồm những tần số nào, mạnh yếu ra sao. Xếp các lát cạnh nhau sẽ được một hình gọi là phổ đồ: trục ngang là thời gian, trục dọc là tần số từ trầm đến bổng, độ đậm là độ mạnh.
Nhìn phổ đồ một bài hát, người ta thấy rõ tiếng trống là những vệt dọc ngắn, giọng hát là những đường cong uốn lượn, tiếng bass là các vệt đậm ở phía dưới. Đây cũng là kiểu hình mà người ghi âm tiếng chim hay dùng để phân biệt các loài.
Bước 2: chỉ giữ những "đỉnh núi"
Năm 2003, kỹ sư Avery Wang, đồng sáng lập một dịch vụ nhận diện bài hát ra đời đầu những năm 2000, công bố một bài báo tại hội nghị quốc tế về truy xuất thông tin âm nhạc, mô tả cách làm đã trở thành kinh điển. Ý chính rất gọn:
Trên phổ đồ, chỉ giữ lại những điểm mạnh nổi trội hơn hẳn xung quanh, như những đỉnh núi cao nhất trên bản đồ địa hình. Kết quả là một tập điểm thưa thớt, trông như bản đồ sao trên trời, nên thường được gọi là bản đồ chòm sao.
Vì sao chọn đỉnh? Vì tiếng ồn quán xá thường yếu hơn tiếng nhạc ở những điểm mạnh nhất của bài. Tiếng ồn có thể che mất phần lớn chi tiết, nhưng đỉnh núi vẫn còn đó. Micro điện thoại cắt phần trầm thì mất một số đỉnh, nhưng phần lớn các đỉnh khác vẫn đúng vị trí.
Bước 3: ghép cặp đỉnh thành "mã băm"
Một đỉnh đứng riêng chỉ có hai thông tin: tần số và thời điểm. Quá ít để phân biệt hàng chục triệu bài. Mẹo ở đây là ghép cặp: lấy một đỉnh làm mốc, ghép nó với vài đỉnh ở ngay sau trong một khung nhỏ. Mỗi cặp tạo thành một bộ ba số:
- tần số đỉnh mốc,
- tần số đỉnh thứ hai,
- khoảng thời gian giữa hai đỉnh.
Bộ ba này được nén thành một con số gọi là mã băm, kèm theo thời điểm của đỉnh mốc trong bài. Một đoạn nhạc vài giây tạo ra hàng trăm mã như vậy. Toàn bộ kho nhạc cũng được xử lý trước theo cùng cách, lưu thành một danh mục khổng lồ: mã nào xuất hiện ở bài nào, ở giây thứ mấy.
Điểm hay của khoảng thời gian giữa hai đỉnh là nó không phụ thuộc vào lúc người dùng bấm nút. Bấm ở giây 10 hay phút thứ 3, hai nốt cách nhau bao lâu thì vẫn cách nhau bấy lâu.
Bước 4: tìm bài có nhiều cặp khớp đúng nhịp
Khi nhận được mã băm từ điện thoại, máy chủ tra danh mục. Rất nhiều bài sẽ có vài mã trùng do ngẫu nhiên. Để lọc, hệ thống kiểm tra thêm một điều: với bài đúng, các mã khớp phải giữ cùng một độ lệch thời gian. Nếu đoạn thu bắt đầu ở giây 45 của bài, thì mọi mã khớp đều phải lệch đúng khoảng 45 giây so với vị trí trong đoạn thu.
Đếm số mã khớp theo từng độ lệch, bài đúng sẽ có một "cột" vọt hẳn lên ở một độ lệch duy nhất; các bài trùng ngẫu nhiên thì rải rác, không có cột nào nổi bật. Chỉ cần vài chục cặp khớp thẳng hàng là đủ chắc chắn. Vì tra danh mục là việc máy tính làm rất nhanh, toàn bộ quá trình mất vài giây.
Làm được gì và không làm được gì
| Tình huống | Nhận ra được không | Vì sao |
|---|---|---|
| Bản ghi gốc phát qua loa quán ồn | Thường được | Các đỉnh mạnh vẫn nổi trên tiếng ồn |
| Bản ghi gốc nhưng nghe qua điện thoại khác | Thường được | Mất một số đỉnh nhưng đủ cặp khớp |
| Ca sĩ khác hát lại (cover) | Thường không | Bản ghi khác hẳn, đỉnh ở chỗ khác |
| Bản biểu diễn trực tiếp | Hay thất bại | Tốc độ, phối khí, giọng khác bản thu |
| Ngân nga, huýt sáo giai điệu | Không, với cách dấu vân tay | Cần công nghệ khác: so giai điệu |
| Bài chưa có trong kho | Không | Không có dấu vân tay để so |
Điểm này hay gây thắc mắc: dấu vân tay âm thanh nhận ra một bản ghi cụ thể, không nhận ra một bài hát nói chung. Tìm bài bằng cách ngân nga dùng hướng khác: chuyển giai điệu thành chuỗi lên xuống của cao độ rồi so với kho giai điệu, cho phép người hát sai tông, sai nhịp đôi chút.
Dấu vân tay âm thanh còn dùng ở đâu
- Nền tảng chia sẻ video: tự phát hiện video tải lên có dùng nhạc, đoạn phim có bản quyền để xử lý theo thoả thuận với chủ sở hữu.
- Theo dõi phát sóng: các tổ chức quản lý quyền tác giả và nhà quảng cáo dùng để kiểm tra bài hát, đoạn quảng cáo nào đã được phát trên đài, trên truyền hình, bao nhiêu lần.
- Lọc trùng lặp trong kho nhạc, kho tư liệu âm thanh lớn.
- Nhận diện tiếng chim: các ứng dụng nhận diện tiếng chim dùng hướng khác, học từ rất nhiều bản ghi để nhận dạng loài, vì mỗi con chim hót mỗi lần một khác, không có "bản ghi gốc" để so như bài hát.
Góc nhìn hôm nay: tai người và máy nghe khác nhau thế nào
Máy nhận ra bản ghi chính xác đến kinh ngạc nhưng chịu thua một người hát lại bằng giọng khác. Tai người thì ngược lại: có thể không nhớ tên bài, nhưng nghe ai đó ngân nga vài câu là nhận ra ngay dù sai tông. Đó là vì người nghe bằng giai điệu, nhịp điệu và ý nghĩa, còn máy nghe bằng vị trí các điểm mạnh trên phổ đồ.
Khi dùng ứng dụng nhận diện bài hát, nên nhớ ứng dụng cần quyền truy cập micro. Hãy chỉ cấp quyền cho ứng dụng tin cậy, và xem lại trong cài đặt điện thoại những ứng dụng nào đang được dùng micro. Ai muốn tự thấy dấu vân tay âm thanh trông thế nào có thể mở một đoạn nhạc trong phần mềm biên tập âm thanh miễn phí, bật chế độ xem phổ đồ và tìm những "đỉnh núi" nổi bật.
Câu hỏi thường gặp
Dấu vân tay âm thanh là gì?
Dấu vân tay âm thanh là bản tóm tắt gọn của một đoạn âm thanh, thường giữ lại vị trí các điểm mạnh nổi bật trên phổ đồ theo thời gian và tần số. Nó đủ đặc trưng để phân biệt hàng triệu bản ghi và ít bị tiếng ồn làm thay đổi.
Ứng dụng nhận diện bài hát hoạt động thế nào?
Ứng dụng thu vài giây nhạc, tạo dấu vân tay từ các cặp đỉnh trên phổ đồ, rồi gửi đi so với kho dấu vân tay. Bài nào có nhiều cặp khớp cùng một độ lệch thời gian chính là bài đang phát.
Vì sao ứng dụng không nhận ra bài khi mình tự hát?
Vì dấu vân tay âm thanh nhận ra một bản ghi cụ thể chứ không nhận ra giai điệu. Giọng hát của mình tạo phổ đồ khác hẳn bản thu gốc. Tìm bài bằng cách ngân nga cần công nghệ khác là so giai điệu.
Vì sao nhận diện bài hát vẫn chạy được ở chỗ ồn?
Vì hệ thống chỉ dựa vào những điểm mạnh nhất của bản nhạc, thường nổi hơn tiếng ồn xung quanh. Chỉ cần một phần các điểm này khớp đúng nhịp thời gian là đủ nhận ra bài.
Ai nghĩ ra cách nhận diện bài hát bằng dấu vân tay?
Có nhiều nhóm nghiên cứu về dấu vân tay âm thanh từ khoảng cuối thập niên 1990. Cách ghép cặp đỉnh trên phổ đồ được biết đến rộng rãi qua bài báo năm 2003 của kỹ sư Avery Wang.