फ्री पायथन लाइब्रेरी के माध्यम से रियल-टाइम ऑडियो और संगीत विश्लेषण

ऑबियो एक ओपन सोर्स पायथन ऑडियो प्रोसेसिंग लाइब्रेरी है जिसे सॉफ्टवेयर डेवलपर्स पिच डिटेक्शन, बीट ट्रैकिंग, एमएफसीसी एक्सट्रैक्शन और रियल-टाइम ऑडियो प्रोसेसिंग के लिए उपयोग करते हैं।

ऑबियो क्या है?

आधुनिक ऑडियो एप्लिकेशन—जैसे संगीत उत्पादन उपकरण, ऑडियो विश्लेषण प्लेटफ़ॉर्म, और रीयल-टाइम साउंड प्रोसेसिंग सिस्टम—ध्वनि संकेतों का विश्लेषण करने के प्रभावी तरीकों की आवश्यकता रखते हैं। इस उद्देश्य के लिए एक लोकप्रिय ओपन-सोर्स समाधान ऑबियो है, जो एक हल्की लेकिन शक्तिशाली लाइब्रेरी है, जिसे ऑडियो संकेतों से सार्थक जानकारी निकालने के लिए डिज़ाइन किया गया है। ऑबियो एक ओपन-सोर्स लाइब्रेरी है जो ऑडियो संकेतों से एनोटेशन और संगीत विशेषताएँ निकालती है। यह ऑडियो स्ट्रीम का विश्लेषण करता है और नोट ऑनसेट्स, पिच, बीट्स और टेम्पो जैसे घटनाओं की पहचान करता है। यह मुख्यतः उच्च प्रदर्शन के लिए C में लिखा गया है और Linux, macOS, और Windows पर काम करता है।

यह लाइब्रेरी बहुत आसान है और रीयल‑टाइम ऑडियो प्रोसेसिंग का समर्थन करती है। यह लाइब्रेरी संगीतात्मक घटनाओं का पता लगा सकती है जैसे ड्रम की ध्वनि कब होती है, संगीत नोट की आवृत्ति और ट्रैक का टेम्पो या रिदम। यह ऑफ़लाइन (ऑडियो फ़ाइलें) और रीयल‑टाइम ऑडियो स्ट्रीम दोनों में काम कर सकती है, जिससे यह ऑडियो संपादकों, डिजिटल वाद्ययंत्रों और ध्वनि विश्लेषण उपकरणों के लिए उपयुक्त बनती है। पिच डिटेक्शन, बीट ट्रैकिंग, ऑनसेट डिटेक्शन, MFCC एक्सट्रैक्शन और रीयल‑टाइम सिग्नल प्रोसेसिंग के समर्थन के साथ, यह डेवलपर्स को उन्नत ऑडियो एप्लिकेशन बनाने के लिए आवश्यक टूल प्रदान करती है।

Previous Next

ऑबियो के साथ शुरुआत

Aubio को स्थापित करने का सबसे आसान तरीका Python Package Index (PyPI) का उपयोग करना है। कृपया पूर्ण स्थापना के लिए निम्नलिखित कमांड का उपयोग करें।

ऑबियो का उपयोग करके इंस्टॉल करें

pip install aubio 

गिटहब से ऑबियो इंस्टॉल करें

go get -u github.com/aubio/aubio.git 

पायथन के माध्यम से ऑनसेट डिटेक्शन

Aubio लाइब्रेरी की सबसे उपयोगी विशेषताओं में से एक है ऑनसेट डिटेक्शन, जो यह पहचानता है कि संगीत नोट या ध्वनि घटना कब शुरू होती है। ऑनसेट डिटेक्शन नए ध्वनि या संगीत नोट के शुरू होने का सटीक क्षण खोजता है। संगीत में, "onset" नोट के अटैक को कहा जाता है — वह क्षण जब ड्रम बजता है, गिटार स्ट्रिंग को छेड़ा जाता है, या आवाज़ एक अक्षर शुरू करती है। Aubio विभिन्न उपयोग मामलों के लिए कई ऑनसेट डिटेक्शन एल्गोरिदम शामिल करता है। निम्नलिखित उदाहरण दर्शाता है कि कैसे Python कोड का उपयोग करके ऑडियो फ़ाइल में ऑनसेट्स का पता लगाया जाए।

Python लाइब्रेरी के माध्यम से ऑडियो फ़ाइल में ऑनसेट्स का पता कैसे लगाएँ?


import aubio
import numpy as np

# Configuration
filename = "audio_sample.wav"
win_s = 512        # FFT window size
hop_s = 256        # Hop size (frames between analysis windows)

# Open the audio source
src = aubio.source(filename, hop_size=hop_s)
samplerate = src.samplerate

# Create the onset detector (using 'complex' method)
onset = aubio.onset("complex", win_s, hop_s, samplerate)

# Set detection threshold (0.0 to 1.0 — lower = more sensitive)
onset.set_threshold(0.3)

onsets = []

# Process audio frame by frame
while True:
    samples, read = src()                # Read one hop of audio
    if onset(samples):                   # Returns True when onset detected
        print(f"Onset at: {onset.get_last_s():.3f} seconds")
        onsets.append(onset.get_last_s())
    if read < hop_s:                     # End of file
        break

print(f"\nTotal onsets detected: {len(onsets)}")

पिच डिटेक्शन समर्थन

पिच डिटेक्शन ओपन सोर्स Aubio लाइब्रेरी की एक और महत्वपूर्ण क्षमता है। पिच डिटेक्शन ध्वनि की मूल आवृत्ति (F0) की पहचान करता है — मूल रूप से, "यह कौन सा संगीत नोट है?" यह किसी भी ट्यूनर, मेलोडी एक्सट्रैक्टर, या वोकल विश्लेषण टूल का मूल है। Aubio कई पिच डिटेक्शन एल्गोरिदम जैसे yin, yinfft, mcomb, fcomb आदि का समर्थन करता है। यहाँ एक सरल उदाहरण है जो दर्शाता है कि Python एप्लिकेशनों में रीयल-टाइम पिच डिटेक्शन कैसे किया जाए।

Python के माध्यम से रीयल-टाइम पिच डिटेक्शन कैसे करें?


import aubio
import numpy as np

samplerate = 44100
win_s = 1024
hop_s = 512

pitch_o = aubio.pitch("yin", win_s, hop_s, samplerate)
pitch_o.set_unit("Hz")
pitch_o.set_silence(-40)

samples = np.random.rand(hop_s).astype(np.float32)
pitch = pitch_o(samples)

print("Detected pitch:", pitch)

पायथन के माध्यम से टेम्पो ट्रैकिंग और बीट डिटेक्शन

ओपन सोर्स Aubio लाइब्रेरी Python एप्लिकेशनों के भीतर संगीत में लयात्मक पैटर्न का विश्लेषण कर सकती है और बीट और टेम्पो का पता लगा सकती है। Aubio ऑडियो को सुन सकती है और साथ में टैप कर सकती है — BPM (बीट्स पर मिनट) में टेम्पो का पता लगाते हुए व्यक्तिगत बीट टाइमस्टैम्प को सटीक रूप से पहचानती है। यह DJ सॉफ़्टवेयर से लेकर संगीत सिंक्रोनाइज़ेशन तक के लिए अत्यंत मूल्यवान है। लाइब्रेरी ऑडियो सिग्नल में स्पेक्ट्रल परिवर्तन और लयात्मक पैटर्न का विश्लेषण करके बीट स्थान निर्धारित करती है।

पायथन के माध्यम से साउंड फ़ाइल पढ़ना और लिखना

Python लाइब्रेरी Aubio अपने source और sink ऑब्जेक्ट्स के माध्यम से ऑडियो फ़ाइल I/O को रैप करती है, कई फ़ॉर्मैट्स (WAV, FLAC, OGG, libav या ffmpeg के माध्यम से MP3) को सपोर्ट करती है और सैंपल रेट परिवर्तन को स्वचालित रूप से संभालती है। यहाँ एक सरल उदाहरण है जो दिखाता है कि सॉफ़्टवेयर डेवलपर्स Python कमांड्स का उपयोग करके ऑडियो फ़ाइल को पढ़ना, प्रोसेस करना और लिखना कैसे कर सकते हैं।

Python के माध्यम से ऑडियो फ़ाइलें पढ़ना, प्रोसेस करना और लिखना कैसे करें?


import aubio
import numpy as np

input_file = "input.wav"
output_file = "output.wav"
target_samplerate = 22050    # Downsample to 22.05 kHz
hop_s = 512

# Open source — resamples automatically to target samplerate
src = aubio.source(input_file, samplerate=target_samplerate, hop_size=hop_s)
actual_sr = src.samplerate
num_channels = src.channels

# Open sink for writing
sink = aubio.sink(output_file, actual_sr, channels=1)

while True:
    samples, read = src()

    # Write mono (sink expects 1D array for mono output)
    if num_channels > 1:
        mono = samples.reshape(num_channels, -1).mean(axis=0)
    else:
        mono = samples

    sink(mono[:read], read)

    if read < hop_s:
        break

del sink   # Flushes and closes file
print(f"Written {output_file} at {actual_sr} Hz")

 हिन्दी