5 điểm bởi fcbayernmuller 2024-01-29 | 5 bình luận | Chia sẻ qua WhatsApp

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 libfftw3 cho 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

 
mdisprgm 2024-01-29

Có lý do gì đặc biệt khiến bạn chọn C++ thay vì Rust không ạ?

 
cosine20 2024-01-29

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ế.

 
fcbayernmuller 2024-01-29

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.

 
cosine20 2024-01-29

À, 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

 
fcbayernmuller 2024-01-29

Cảm ơn~!!!