110 lượt xem
Ẩn danh
Ngày 9 Tháng 05
Hi mọi người, con app Shazam thì chắc cũng nhiều người biết rồi, tính năng chính của nó là khi mình ấn nút thì app sẽ dùng mic ghi âm một đoạn âm thanh khoảng 10 giây sau đó sẽ giúp mình tìm được đoạn âm thanh đó là của bài hát nào. Tự dưng mình tò mò không biết làm sao để nó có thể tìm chính xác được bài hát chỉ với đoạn ghi âm 10 giây đó nhỉ? Nguyên lý hoạt động đằng sau nó là gì ta?
Đánh giá câu hỏi ngay!
Hãy ấn ↑Up Vote với những câu hỏi cụ thể và chi tiết
Hãy ấn ↓Down Vote với những câu hỏi chưa rõ ràng Careerly sẽ nhắc người hỏi chỉnh sửa lại.
3 câu trả lời
BEST
Đây là cách shazam hoạt động (đơn giản hóa): Đầu tiên, app sẽ ghi lại đoạn âm thanh khoảng 10 giây. Sau đó, chuyển đoạn âm thanh ghi được thành một đoạn audio fingerprint. Tiếp theo, tìm trong kho dữ liệu của Shazam bằng fingerprint đó và trả về kết quả. Kho dữ liệu của Shazam có hơn 15 tỷ bài hát. Audio fingerprint được tạo ra từ biểu đồ audio spectrogram, bạn có thể thấy nó ở đâu đó các phần mềm ghi âm hoặc biên tập video. Dĩ nhiên để tìm kiếm được thì dữ liệu này cần được lưu ở một định dạng tối ưu. Có thể là thế này: ``` 287121152, 1275791411, 539499396, 185209916, 319820588, 1244475492, 1751526233, 1862426472, 306596106, 204033582, 1242574602, 50341460, 773194334, 339627067, 2014447110, 738722113, 587801446, 320160293 ``` 🥑 Q & A Q: Vậy trong môi trường nhiều tiếng ồn thì sao? A: Shazam sẽ tạo audio fingerprint dựa trên những note có khả năng là nhạc mà thôi, bỏ qua những note tạp âm. Do vậy vẫn có khả năng shazam detect sai bài hát. Q: Làm sao tiết kiệm được dữ liệu, khi có hàng tỷ bài hát? A: Ta biết mỗi bài hát đều có thể nặng khoảng vài MB tới cả GB, khi đó ta cần một kĩ thuật để nén lại dữ liệu âm thanh. Có thể nén theo vài thông số như sample rate, bit depth và số lượng channel: stereo hay mono. Bạn có thể để ý nhạc với sample rate 320Kbps sẽ nghe có lượng chi tiết cao hơn nhiều 128kbps (Youtube có sample rate là 192kbps). Theo đó, dữ liệu âm thanh có thể được nén tới hàng chục lần mà vẫn đảm bảo độ chính xác tương đối. Thực tế nếu bạn làm việc với vài phần mềm biên tập video rồi, bạn sẽ thấy nó đã có sẵn khả năng lọc ồn từ lâu, cơ chế này còn hoạt động tốt hơn khi có sự xuất hiện của AI. 🥑 Tham khảo: Phần mềm opensource cho việc tạo audio fingerprint: https://github.com/AddictedCS/soundfingerprinting Đọc thêm: - https://www.makeuseof.com/how-does-shazam-work/ - https://emysound.com/blog/open-source/2020/06/12/how-audio-fingerprinting-works.html
BEST
Hi bạn! Mình có thấy bạn trên trả lời rồi nhưng mình vẫn note bổ sung 1 vài thứ mình research được cho bạn và mọi người Hiện tại, mình có search trên github thì cũng không thấy Shazam opensource nên đa số thông tin này mình research được thấy ok chứ không hề biết chắc chắn họ đang dùng gì. Shazam thì sử dụng thuật toán audio fingerprinting. Thuật toán này tuân theo nguyên tắc của fingerprint - thường được sử dụng trong công nghệ nhận diện vân tay vì độ bảo mật và trùng vân tay tỉ lệ 1 / 64 tỉ vân tay Trở lại với cách hoạt động của Shazam. Đầu tiên, bạn click ghi âm và fill âm thanh vào hệ thống của Shazam sẽ lấy sóng âm của âm thanh. Sau khi lấy được sóng âm => chuyển các ảnh sóng âm này về fingerfrint => chuyển về server xử lý Ở server nhận diện thì họ sẽ đi so sánh fingerprint với dữ liệu trong database của họ. Việc so sánh sẽ so sánh cùng lúc trên nhiều database chia nhỏ và trong từng kho dữ liệu họ sẽ lưu data dưới dạng bảng băm Hash table ( Cơ chế của Hash index trong sql ). Việc chia nhỏ tìm kiếm và lưu dữ liệu như vậy sẽ giúp họ nhận diện nhanh chóng hơn. Còn việc cơ chế so sánh fingerprint khớp nhau như thế nào thì mình đoán họ dùng độ tương đồng, thuật toán học máy: kNN,... Hoặc 1 cơ chế nào đó. Toàn bộ thông tin trên mình xem ở video này nhé: https://youtu.be/kMNSAhsyiDg
Thuật toán cơ bản của Shazam từng được công bố rồi nè bạn có thể tham khảo thêm nếu muốn: https://www.ee.columbia.edu/~dpwe/papers/Wang03-shazam.pdf
Đăng ký ngay bây giờ để đọc toàn bộ câu trả lời!
Cộng đồng lập trình viên sẽ giải đáp tường tận cho bạn.
Bạn đã có tài khoản rồi?
Đăng ký ngay bây giờ để đọc toàn bộ câu trả lời!
Cộng đồng lập trình viên sẽ giải đáp tường tận cho bạn.