एक शोर .wav फ़ाइल में ड्रम bpm का पता लगाना


12

मैं निम्नलिखित समस्या को हल करने के लिए एल्गोरिथम (ओं) की तलाश कर रहा हूं: एक शोर को देखते हुए। wav साउंड कैप्चर (माइक्रोफ़ोन पर कुछ हवा + घर्षण शोर), एक सॉफ्ट ड्रम बीट के BPM का पता कैसे लगाएं?

मैंने इस विषय को देखने का प्रयास किया है, लेकिन विश्लेषण और फिंगरप्रिंट आईडी जनरेशन दोनों के लिए एमपी से संबंधित सॉफ्टवेयर की अधिक मात्रा के कारण परिणाम काफी खराब हैं। उनमें से कोई भी वास्तव में यह कैसे करें के बारे में जानकारी की आपूर्ति करता है।

मुझे शोर निकालने के लिए एल्गोरिदम के बारे में पता है, लेकिन यह अभी भी मुझे बीपीएम का पता लगाने की समस्या के साथ छोड़ देता है। और इस बात पर निर्भर करता है कि बीपीएम समस्या कैसे हल की जाती है, यह संभव है कि मुझे भी इनकार करने की आवश्यकता नहीं है (क्योंकि ड्रम कम आवृत्तियों और उच्च में शोर करता है, एक सरल कम-पास पर्याप्त पूर्व प्रसंस्करण हो सकता है)।


जवाबों:


13

एक विधि जो काम करती है अगर वहाँ एक अपेक्षाकृत मजबूत ड्रम बीट है, तो तरंग के एसटीएफटी का परिमाण लेना है, और फिर इसे केवल समय आयाम में ऑटो-संबद्ध करें। ऑटो-सहसंबंध समारोह का शिखर हरा या उसके एक उप-निर्माता होगा।

यह सिग्नल को अलग-अलग आवृत्ति बैंडों में विभाजित करने के बराबर है, प्रत्येक के आयाम लिफाफे को ढूंढना, प्रत्येक लिफाफे को स्वतःसंबंधित करना और फिर उन्हें समेटना। क्रॉस-सहसंबंध ऑपरेशन द्वारा शोर और संगीत के अन्य हिस्सों को औसतन निकाला जाता है।

ऐसा इसलिए है क्योंकि ड्रम बीट्स कई आवृत्तियों (ऊर्ध्वाधर रेखाओं) पर अल्पकालिक ध्वनि उत्पन्न करते हैं, जबकि संगीत के अन्य भाग केवल कुछ आवृत्तियों (क्षैतिज रेखाओं) पर लंबे समय तक जीवित रहते हैं, और शोर सभी आवृत्तियों पर लंबे समय तक रहता है लेकिन यादृच्छिक होता है। यदि आप STFT को देखते हैं, तो आप दोहराव को देख सकते हैं:

यहाँ छवि विवरण दर्ज करें

मैं एक स्कूल प्रोजेक्ट के लिए पूरी संगीत फ़ाइलों के लिए एकल बीपीएम मान खोजने के लिए आया था, लेकिन इसे बदलते बीपीएम के साथ ऑडियो की एक धारा के लिए भी अनुकूलित किया जा सकता है। आपको उन चंक्सों को संसाधित करने की आवश्यकता होगी जो कम से कम दो बार बीपीएम की अवधि के रूप में आप देख रहे हैं।


एफएफटी आवधिक संकेतों को खोजने के लिए एक आम तौर पर उपयोगी तकनीक है। थोड़ी सी चालाकी हो सकती है यदि संकेत उतना नियमित नहीं है जितना आप चाहें: एक ड्रमर किसी गीत के दौरान गति बढ़ा सकता है या धीमा कर सकता है - जानबूझकर या नहीं - और यह एफएफटी परिणामों के साथ गड़बड़ कर सकता है आवृत्ति डोमेन में।
रीथंक

1
@ रीथंक: यदि बीपीएम समय के साथ बदलता है, तो आपको इसे चंक्स में करने की आवश्यकता होगी, और प्रत्येक के लिए बीपीएम ढूंढें।
एंडोलिथ

ध्यान दें कि धड़कन आम तौर पर संगीत से जुड़ा होता है, और आप इस तस्वीर में संगीत का एक और हिस्सा भी देखते हैं: क्षैतिज रेखाएं, जो बीट पर ऊंचाई बदलती हैं। इसलिए मूल रूप से तीन ऊर्जा योगदान हैं: बीट्स (ऊर्ध्वाधर), नोट्स (क्षैतिज) और शोर (शेष)।
MSalters

@MSalters: नोट भी सहसंबद्ध कर सकते हैं, हालांकि
Endolith

4

ऑटो-सहसंबंध निश्चित रूप से उसके लिए एक अच्छा बुनियादी तरीका है। संभावित रूप से इसे और बढ़ाने के लिए आप कुछ चीजें कर सकते हैं:

  1. यदि आप अपने ड्रम के फ्रिक्वेंसी स्पेक्ट्रम को जानते हैं, तो बैंडपास सिग्नल को फिल्टर कर देता है, ताकि ड्रम से संबंधित केवल फ्रीक्वेंसी बनी रहे। ड्रम के आधार पर यह काफी संकीर्ण हो सकता है और शोर के विशाल बहुमत से छुटकारा पाना चाहिए।
  2. फिर संकेत के समय डोमेन लिफाफे की गणना करें ("हानिपूर्ण चोटी" ऐसा करने का सबसे आसान तरीका है) एक समय निरंतर के साथ जो ड्रम बीट्स की लंबाई से लगभग मेल खाता है।
  3. फिर ऑटो-सहसंबंध करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.