Saya mencari algoritme untuk menyelesaikan masalah berikut: Diberi tangkapan suara .wav yang berisik (sedikit suara angin + gesekan pada mikrofon), bagaimana cara mendeteksi BPM dari ketukan drum lembut?
Saya telah mencoba googling subjek, tetapi hasilnya cukup buruk, karena jumlah tinggi perangkat lunak terkait mp3 untuk kedua analisis dan generasi id sidik jari. Tidak ada dari mereka yang memberikan informasi tentang bagaimana cara melakukannya.
Saya mengetahui algoritma untuk menghilangkan noise, tapi itu masih membuat saya kesulitan mendeteksi BPM. Dan tergantung pada bagaimana masalah BPM diselesaikan, ada kemungkinan bahwa saya bahkan tidak perlu denoise (karena drum cenderung berada di frekuensi yang lebih rendah dan kebisingan lebih tinggi, low-pass sederhana mungkin cukup pra-pemrosesan).
sumber
Jawaban:
Salah satu metode yang bekerja jika ada ketukan drum yang relatif kuat adalah dengan mengambil besarnya STFT dari bentuk gelombang, dan kemudian secara otomatis menghubungkannya hanya dalam dimensi waktu. Puncak fungsi auto-korelasi akan menjadi irama, atau bagian dari itu.
Ini sama dengan memecah sinyal menjadi banyak pita frekuensi yang berbeda, menemukan amplop masing-masing, menginkorelasikan masing-masing amplop, dan kemudian menjumlahkannya. Kebisingan dan bagian-bagian lain dari musik dirata-rata oleh operasi korelasi silang.
Ini karena ketukan drum menghasilkan suara berumur pendek di banyak frekuensi (garis vertikal), sementara bagian musik lainnya berumur panjang hanya pada beberapa frekuensi (garis horizontal), dan kebisingan berumur panjang tetapi acak di semua frekuensi. Anda dapat melihat pengulangan beat jika Anda melihat STFT:
Saya datang dengan ini untuk proyek sekolah untuk menemukan nilai BPM tunggal untuk seluruh file musik, tetapi bisa disesuaikan dengan aliran audio dengan mengubah BPM juga. Anda perlu memproses potongan yang setidaknya dua kali selama periode BPM yang Anda cari.
sumber
Korelasi otomatis tentu merupakan metode dasar yang bagus untuk itu. Ada beberapa hal yang dapat Anda lakukan untuk berpotensi meningkatkan ini lebih lanjut:
sumber