- Shazam से प्रेरित हाई-स्पीड ऑडियो पहचान और आइडेंटिफिकेशन सिस्टम का Rust इम्प्लीमेंटेशन ओपन सोर्स
- स्पीड, दक्षता और सरलता पर केंद्रित डिज़ाइन, और CLI के जरिए ऑडियो फ़ाइलों की indexing और search संभव
मुख्य विशेषताएँ और फायदे
- हाई-स्पीड indexing और search गति: सैकड़ों ऑडियो फ़ाइलों को तेज़ी से प्रोसेस कर सकता है
- सरल CLI कमांड:
index और search कमांड के जरिए सहज उपयोग
- Rust आधारित हाई-परफ़ॉर्मेंस इम्प्लीमेंटेशन: सिस्टम resources का कुशल उपयोग
- Shazam जैसी ऑडियो फिंगरप्रिंटिंग विधि अपनाई गई
आंतरिक कार्यप्रणाली
पूर्व-प्रसंस्करण (Preprocessing)
- स्टीरियो को मोनो में बदलना (बाएँ/दाएँ चैनल का औसत)
- गणना भार कम करने के लिए downsampling: 44.1kHz → 11.025kHz
- downsampling से पहले Nyquist frequency से ऊपर की आवृत्तियाँ हटाने के लिए IIR low-pass filter लागू
स्पेक्ट्रोग्राम रूपांतरण
- Short-Time Fourier Transform(STFT) का उपयोग
- 1024 सैंपल का Hamming window
- 50% overlap
- time-frequency domain में बदलकर peaks निकाले जाते हैं
- हर time window को frequency bands में बाँटा जाता है, और हर band में केवल सबसे अधिक amplitude सुरक्षित रखा जाता है
- औसत से कम amplitude हटाकर केवल feature peaks रखे जाते हैं
फिंगरप्रिंट डेटा स्टोरेज विधि
- peaks को hash के रूप में बनाकर स्टोर किया जाता है
- एक anchor peak के आधार पर आसपास के peaks की relative position को tuple के रूप में स्टोर किया जाता है
(anchor freq, peak freq, delta time) के रूप में संरचित
- 32-bit या 64-bit integer में बदला जा सकता है
search और sorting एल्गोरिद्म
- इनपुट sample से फिंगरप्रिंट बनाया जाता है
- डेटाबेस में candidate फिंगरप्रिंट खोजकर उन्हें समय क्रम में sort किया जाता है
- Longest Increasing Subsequence आधारित समयिक निरंतरता विश्लेषण
- sliding window का उपयोग कर सबसे घने matching peak interval की खोज
- matching score की गणना कर परिणामों को उच्च स्कोर के क्रम में sort किया जाता है
अभी कोई टिप्पणी नहीं है.