vibra, ứng dụng khách Shazam bằng C++ cho dịch vụ nhận diện bài hát
(github.com/BayernMuller)vibra
- Đây là một dự án hiện thực bằng C++ một ứng dụng khách giao tiếp với máy chủ của dịch vụ nhận diện bài hát Shazam.
- Hoạt động nhanh hơn khoảng 2 lần so với ứng dụng khách Shazam mã nguồn mở bằng Rust hiện có là songrec.
- Có thể đọc tệp wav và tải dữ liệu để xác định đó là bài hát nào.
- Cũng có thể nhận diện bài hát đang được ghi qua micro bằng cách đưa raw PCM data vào qua stdin.
- Cần
libfftw3cho fingerprinting vàlibcurlđể giao tiếp với máy chủ Shazam. - Nhanh nhờ xử lý hiệu quả dữ liệu PCM như downsampling tệp wav, chuyển đổi kênh, v.v.
- Có ít thư viện phụ thuộc và dễ build nên có thể tận dụng trên các thiết bị nhúng.
5 bình luận
Có lý do gì đặc biệt khiến bạn chọn C++ thay vì Rust không ạ?
Cảm ơn bạn đã chia sẻ! Cá nhân mình khá tò mò bạn đã cải thiện hiệu năng như thế nào.
Nếu trên Raspberry Pi 4 mà mất khoảng chưa đến 1 giây thì đúng là hiệu năng rất thực tế.
Thực ra Rust Songrec quá kém hiệu quả, vì với dữ liệu PCM đầu vào thì việc giảm tần số lấy mẫu, chuyển sang mono và chuyển sang 16bit đều được xử lý riêng rẽ.
Vì vậy tôi đã cải thiện phần phải duyệt toàn bộ dữ liệu PCM ở từng công đoạn. Tất nhiên khác biệt giữa hai ngôn ngữ C++ và Rust có lẽ cũng khá lớn.
À, thì ra trong mã Rust ba quá trình đó đã được xử lý riêng biệt nhỉ. Chắc việc cải thiện điều đó cũng chẳng phải chuyện bình thường đâu, thật sự rất đáng nể ' v')b
Cảm ơn~!!!