vibra, klien Shazam layanan pengenal lagu berbasis C++
(github.com/BayernMuller)vibra
- Ini adalah proyek yang mengimplementasikan klien dalam C++ yang berkomunikasi dengan server Shazam, layanan pengenal lagu.
- Berjalan sekitar 2 kali lebih cepat dibanding songrec, klien Shazam open source berbasis Rust yang sudah ada.
- Dapat membaca file wav dan mengambil data untuk mengetahui lagu apa yang cocok dengan file tersebut.
- Lagu yang sedang direkam melalui mikrofon juga bisa dikenali dengan memasukkan raw PCM data melalui stdin.
- Membutuhkan libfftw3 untuk fingerprinting dan libcurl untuk berkomunikasi dengan server Shazam.
- Cepat karena memproses data PCM seperti downsampling file wav dan konversi channel secara efisien.
- Memiliki sedikit library dependensi dan mudah dibangun, sehingga bisa dimanfaatkan pada perangkat embedded.
5 komentar
Apakah ada alasan Anda memilih C++ alih-alih Rust?
Terima kasih sudah berbagi! Saya pribadi penasaran bagaimana Anda melakukan peningkatan performanya.
Kalau di Raspberry Pi 4 butuh waktu sekitar 1 detik, itu benar-benar performa yang praktis.
Sebenarnya, Rust Songrec terlalu tidak efisien karena untuk data PCM yang diterima, proses downsampling, konversi ke mono, dan konversi ke 16-bit semuanya dilakukan secara terpisah.
Jadi saya memperbaiki bagian yang menelusuri seluruh data PCM di setiap proses. Tentu saja, perbedaan antara bahasa C++ dan Rust juga tampaknya cukup besar.
Ah, jadi di kode Rust ketiga proses itu ditangani secara terpisah ya. Memperbaiki itu juga pasti bukan pekerjaan mudah, hebat sekali Anda
' v)b`Terima kasih~!!!