பைதான் மூலம் டிஜிட்டல் ஒலியின் உலகத்தை ஆராயுங்கள். இந்த விரிவான வழிகாட்டி ஒலி பகுப்பாய்வு மற்றும் தொகுப்பு, Librosa மற்றும் SciPy போன்ற முக்கிய நூலகங்கள், மற்றும் டெவலப்பர்கள் மற்றும் ஆர்வலர்களுக்கான நடைமுறை குறியீடு உதாரணங்கள் ஆகியவற்றை உள்ளடக்கியது.
பைதான் ஆடியோ செயலாக்கம்: ஒலி பகுப்பாய்வு மற்றும் தொகுப்பு பற்றிய ஒரு ஆழமான ஆய்வு
ஒலி என்பது மனித அனுபவத்தின் அடிப்படை பகுதியாகும். நாம் விரும்பும் இசை முதல், நாம் அடையாளம் காணும் குரல்கள் வரை, நமது சூழலின் சுற்றுப்புற ஒலிகள் வரை, ஆடியோ தரவு பணக்கார, சிக்கலான மற்றும் ஆழமான அர்த்தம் கொண்டது. டிஜிட்டல் யுகத்தில், இந்த தரவை கையாளும் மற்றும் புரிந்துகொள்ளும் திறன் பொழுதுபோக்கு, செயற்கை நுண்ணறிவு மற்றும் அறிவியல் ஆராய்ச்சி போன்ற பல்வேறு துறைகளில் ஒரு முக்கியமான திறமையாகிவிட்டது. டெவலப்பர்கள் மற்றும் தரவு விஞ்ஞானிகளுக்கு, டிஜிட்டல் சிக்னல் செயலாக்கத்திற்கான (DSP) ஒரு வலுவான நூலகங்களின் தொகுப்பை வழங்கும் பைதான் இந்த பணிக்கு ஒரு சக்திவாய்ந்த கருவியாக உருவெடுத்துள்ளது.
ஆடியோ செயலாக்கத்தின் இதயத்தில் இரண்டு நிரப்பு துறைகள் உள்ளன: ஒலி பகுப்பாய்வு மற்றும் ஒலி தொகுப்பு. அவை டிஜிட்டல் ஒலியின் யின் மற்றும் யாங்:
- பகுப்பாய்வு என்பது பிரிக்கும் செயல்முறையாகும். இது ஏற்கனவே உள்ள ஆடியோ சிக்னலை எடுத்து, அதன் இருந்து அர்த்தமுள்ள தகவலைப் பிரித்தெடுக்கிறது. இது "இந்த ஒலி எதனால் ஆனது?" என்ற கேள்விக்கு பதிலளிக்கிறது.
- தொகுப்பு என்பது உருவாக்கும் செயல்முறையாகும். இது கணித மாதிரிகள் மற்றும் வழிமுறைகளைப் பயன்படுத்தி புதிதாக ஒரு ஆடியோ சிக்னலை உருவாக்குகிறது. இது "இந்த ஒலியை நான் எப்படி உருவாக்குவது?" என்ற கேள்விக்கு பதிலளிக்கிறது.
இந்த விரிவான வழிகாட்டி உங்களை இரண்டு உலகங்களிலும் ஒரு பயணத்திற்கு அழைத்துச் செல்லும். நாம் கோட்பாட்டு அடித்தளங்களை ஆராய்வோம், அத்தியாவசிய பைதான் கருவிகளை அறிமுகப்படுத்துவோம், மேலும் நீங்கள் இயக்கி மாற்றக்கூடிய நடைமுறை குறியீடு உதாரணங்கள் வழியாகச் செல்வோம். நீங்கள் ஆடியோ அம்சங்களை பகுப்பாய்வு செய்ய விரும்பும் ஒரு தரவு விஞ்ஞானியாக இருந்தாலும், அல்காரிதமிக் கலவையில் ஆர்வமுள்ள ஒரு இசைக்கலைஞராக இருந்தாலும், அல்லது அடுத்த சிறந்த ஆடியோ செயலியை உருவாக்கும் ஒரு டெவலப்பராக இருந்தாலும், இந்த கட்டுரை நீங்கள் தொடங்க தேவையான அடித்தளத்தை உங்களுக்கு வழங்கும்.
பகுதி 1: பிரித்தெடுக்கும் கலை: பைதான் மூலம் ஒலி பகுப்பாய்வு
ஒலி பகுப்பாய்வு என்பது ஒரு துப்பறிவாளராக இருப்பதைப் போன்றது. உங்களுக்கு ஒரு ஆதாரம் கொடுக்கப்படுகிறது - ஒரு ஆடியோ கோப்பு - அதன் இரகசியங்களை வெளிக்கொணர உங்கள் கருவிகளைப் பயன்படுத்துவது உங்கள் வேலை. என்ன குறிப்புகள் இசைக்கப்பட்டன? யார் பேசினார்கள்? ஒலி எந்த சூழலில் பதிவு செய்யப்பட்டது? இவை ஒலி பகுப்பாய்வு பதிலளிக்க உதவும் கேள்விகள்.
டிஜிட்டல் ஒலியின் முக்கிய கருத்துக்கள்
ஒலியை பகுப்பாய்வு செய்வதற்கு முன், கணினியில் அது எவ்வாறு குறிப்பிடப்படுகிறது என்பதை நாம் புரிந்துகொள்ள வேண்டும். ஒரு அனலாக் ஒலி அலை தொடர்ச்சியான சிக்னல் ஆகும். அதை டிஜிட்டலாக சேமிக்க, நாம் அதை மாதிரியாக்கம் (sampling) என்ற செயல்முறை மூலம் மாற்ற வேண்டும்.
- மாதிரியெடுப்பு விகிதம் (Sampling Rate): இது ஒரு வினாடிக்கு எடுக்கப்படும் ஆடியோ சிக்னலின் மாதிரிகளின் (snapshot) எண்ணிக்கை. இது ஹெர்ட்ஸில் (Hz) அளவிடப்படுகிறது. இசைக்கு ஒரு பொதுவான மாதிரியெடுப்பு விகிதம் 44,100 Hz (44.1 kHz), அதாவது ஒவ்வொரு வினாடிக்கும் ஒலியின் வீச்சின் 44,100 snapshotகள் எடுக்கப்படுகின்றன.
- பிட் ஆழம் (Bit Depth): இது ஒவ்வொரு மாதிரியின் தெளிவுத்திறனை தீர்மானிக்கிறது. ஒரு உயர் பிட் ஆழம் ஒரு பெரிய டைனமிக் வரம்பை (மிக மென்மையான மற்றும் மிக உரத்த ஒலிகளுக்கு இடையிலான வேறுபாடு) அனுமதிக்கிறது. 16-பிட் ஆழம் CDகளுக்கு தரநிலையாகும்.
இந்த செயல்முறையின் விளைவாக எண்களின் வரிசை உருவாகிறது, இதை நாம் ஒரு அலைவடிவம் (waveform) ஆக குறிப்பிடலாம்.
அலைவடிவம்: வீச்சு மற்றும் நேரம்
ஒலியின் மிக அடிப்படையான பிரதிநிதித்துவம் அலைவடிவம் ஆகும். இது வீச்சு (சத்தம்) எதிராக நேரத்தின் இரு பரிமாண வரைபடமாகும். ஒரு அலைவடிவத்தைப் பார்ப்பது ஒலியின் இயக்கவியலைப் பற்றிய ஒரு பொதுவான உணர்வை உங்களுக்குத் தரலாம், ஆனால் அதன் டோனல் உள்ளடக்கம் பற்றி அது அதிகம் சொல்லாது.
நிறமாலை (Spectrum): அதிர்வெண் மற்றும் சுருதி
ஒரு ஒலியின் டோனல் குணாதிசயங்களைப் புரிந்துகொள்ள, நாம் நேர களத்திலிருந்து (அலைவடிவம்) அதிர்வெண் களத்திற்கு செல்ல வேண்டும். இது வேகமான ஃபூரியர் உருமாற்றம் (Fast Fourier Transform - FFT) எனப்படும் ஒரு வழிமுறையைப் பயன்படுத்தி அடையப்படுகிறது. FFT ஆனது அலைவடிவத்தின் ஒரு பகுதியை அதன் தனிப்பட்ட சைன் அலைகளாகப் பிரிக்கிறது, ஒவ்வொன்றும் ஒரு குறிப்பிட்ட அதிர்வெண் மற்றும் வீச்சைக் கொண்டிருக்கும். இதன் விளைவாக ஒரு நிறமாலை (spectrum), வீச்சு எதிராக அதிர்வெண்ணின் வரைபடம் உருவாகிறது. இந்த வரைபடம் எந்த அதிர்வெண்கள் (அல்லது சுருதிகள்) ஒலியில் உள்ளன மற்றும் அவை எவ்வளவு வலிமையானவை என்பதை வெளிப்படுத்துகிறது.
டிம்பர் (Timbre): ஒலியின் "நிறம்"
ஒரே குறிப்பை (அடிப்படை அதிர்வெண்) வாசிக்கும் ஒரு பியானோவும் ஒரு கிதாரும் ஏன் மிகவும் வித்தியாசமாக ஒலிக்கின்றன? பதில் டிம்பர் (timbre) ஆகும். டிம்பர் என்பது அடிப்படை அதிர்வெண்ணின் முழு எண் மடங்குகள் ஆகும் ஹார்மோனிக்ஸ் (harmonics) அல்லது மேல் ஒலிகள் (overtones)-ன் இருப்பு மற்றும் தீவிரம் ஆகியவற்றால் தீர்மானிக்கப்படுகிறது. இந்த ஹார்மோனிக்ஸின் தனித்துவமான கலவையானது ஒரு கருவிக்கு அதன் தனித்துவமான ஒலி நிறத்தை அளிக்கிறது.
ஒலி பகுப்பாய்வுக்கான அத்தியாவசிய பைதான் நூலகங்கள்
பைத்தானின் பலம் அதன் விரிவான மூன்றாம் தரப்பு நூலகங்களின் தொகுப்பில் உள்ளது. ஒலி பகுப்பாய்வுக்கு, சில தனித்து நிற்கின்றன.
- Librosa: பைத்தானில் ஒலி மற்றும் இசை பகுப்பாய்வுக்கான இது முதன்மையான நூலகமாகும். இது ஒலியை ஏற்றுவதற்கும், காட்சிப்படுத்துவதற்கும், வேகம், சுருதி மற்றும் குரோமடிக் பிரதிநிதித்துவம் போன்ற பரந்த அளவிலான உயர்-நிலை அம்சங்களை பிரித்தெடுப்பதற்கும் ஒரு பரந்த கருவித்தொகுப்பை வழங்குகிறது.
- SciPy: அறிவியல் பைதான் தொகுப்பில் ஒரு முக்கிய நூலகம், SciPy ஒரு சக்திவாய்ந்த `signal` தொகுதியைக் கொண்டுள்ளது. இது வடிகட்டுதல், ஃபூரியர் உருமாற்றங்கள் மற்றும் நிறமாலைகளைக் கையாளுதல் போன்ற குறைந்த-நிலை DSP பணிகளுக்கு சிறந்தது. இது `.wav` கோப்புகளை படிப்பதற்கும் எழுதுவதற்கும் ஒரு எளிய வழியையும் வழங்குகிறது.
- pydub: உயர்-நிலை, எளிய கையாளுதல்களுக்கு, `pydub` அற்புதமானது. இது மிகவும் உள்ளுணர்வு API உடன் ஒலியை வெட்டுவதற்கும், இணைப்பதற்கும், மேல் வைப்பதற்கும், எளிய விளைவுகளைப் பயன்படுத்துவதற்கும் உங்களை அனுமதிக்கிறது. இது முன்-செயலாக்க பணிகளுக்கு சிறந்தது.
- NumPy & Matplotlib: ஒலி-குறிப்பிட்டவை அல்ல என்றாலும், இவை இன்றியமையாதவை. NumPy என்பது ஆடியோ தரவை வைத்திருப்பதற்கான அடிப்படை தரவு கட்டமைப்பை (N-பரிமாண வரிசை) வழங்குகிறது, மற்றும் Matplotlib என்பது வரைதல் மற்றும் காட்சிப்படுத்துதலுக்கான தரநிலையாகும்.
நடைமுறை பகுப்பாய்வு: அலைவடிவங்களிலிருந்து நுண்ணறிவுகளுக்கு
நாம் கைகளை அழுக்காகக் கொள்வோம். முதலில், தேவையான நூலகங்களை நீங்கள் நிறுவியுள்ளீர்கள் என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்:
pip install librosa matplotlib numpy scipy
நீங்கள் வேலை செய்ய ஒரு ஆடியோ கோப்பும் தேவைப்படும். இந்த உதாரணங்களுக்கு, உங்களிடம் `audio_sample.wav` என்ற கோப்பு இருப்பதாக நாங்கள் கருதுகிறோம்.
ஆடியோவை ஏற்றுதல் மற்றும் காட்சிப்படுத்துதல்
நமது முதல் படி எப்போதும் ஆடியோ தரவை ஒரு NumPy வரிசையில் ஏற்றுவது. Librosa இதை மிகவும் எளிதாக்குகிறது.
import librosa
import librosa.display
import matplotlib.pyplot as plt
import numpy as np
# உங்கள் ஆடியோ கோப்பின் பாதை வரையறுக்கவும்
file_path = 'audio_sample.wav'
# ஆடியோ கோப்பை ஏற்றவும்
# y என்பது ஆடியோ நேரத் தொடர் (ஒரு numpy வரிசை)
# sr என்பது மாதிரியெடுப்பு விகிதம்
y, sr = librosa.load(file_path)
# அலைவடிவத்தை வரையவும்
plt.figure(figsize=(14, 5))
librosa.display.waveshow(y, sr=sr)
plt.title('Audio Waveform')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.grid(True)
plt.show()
இந்த குறியீடு உங்கள் ஆடியோ கோப்பை ஏற்றி அதன் அலைவடிவத்தைக் காட்டுகிறது. காலப்போக்கில் பதிவின் உரத்த மற்றும் மென்மையான பகுதிகளை நீங்கள் உடனடியாகக் காணலாம்.
அதிர்வெண் உள்ளடக்கத்தை பிரித்தெடுத்தல்: நிறமாலை வரைபடம் (Spectrogram)
ஒரு அலைவடிவம் பயனுள்ளதாக இருக்கும், ஆனால் ஒரு நிறமாலை வரைபடம் எங்களுக்கு மிகவும் வளமான பார்வையை அளிக்கிறது. ஒரு நிறமாலை வரைபடம் என்பது காலப்போக்கில் மாறும் ஒரு சிக்னலின் நிறமாலையை காட்சிப்படுத்துகிறது. கிடைமட்ட அச்சு நேரத்தை குறிக்கிறது, செங்குத்து அச்சு அதிர்வெண்ணை குறிக்கிறது, மற்றும் நிறம் ஒரு குறிப்பிட்ட நேரத்தில் ஒரு குறிப்பிட்ட அதிர்வெண்ணின் வீச்சைக் குறிக்கிறது.
# குறுகிய-நேர ஃபூரியர் உருமாற்றத்தை (STFT) கணக்கிடவும்
D = librosa.stft(y)
# வீச்சை டெசிபல்களாக மாற்றவும் (ஒரு மிகவும் உள்ளுணர்வு அளவுகோல்)
DB = librosa.amplitude_to_db(np.abs(D), ref=np.max)
# நிறமாலை வரைபடத்தை வரையவும்
plt.figure(figsize=(14, 5))
librosa.display.specshow(DB, sr=sr, x_axis='time', y_axis='log')
plt.colorbar(format='%+2.0f dB')
plt.title('Log-Frequency Power Spectrogram')
plt.show()
ஒரு நிறமாலை வரைபடத்துடன், நீங்கள் இசை துண்டில் உள்ள குறிப்புகள், ஒரு நபரின் பேச்சில் உள்ள ஃபோர்மென்ட்கள், அல்லது ஒரு இயந்திரத்தின் ஹம்மின் சிறப்பியல்பு அதிர்வெண் கையொப்பத்தை நீங்கள் உண்மையில் பார்க்க முடியும்.
அர்த்தமுள்ள அம்சங்களை பிரித்தெடுத்தல்
பெரும்பாலும், நாம் சிக்கலான ஆடியோ சிக்னலை அதன் முக்கிய பண்புகளை விவரிக்கும் ஒரு சில எண்கள் அல்லது வெக்டர்களாக சுருக்க விரும்புகிறோம். இவை அம்சங்கள் (features) என்று அழைக்கப்படுகின்றன, மேலும் அவை ஆடியோவுக்கான இயந்திர கற்றல் மாதிரிகளின் உயிர்நாடியாக இருக்கின்றன.
பூஜ்ஜிய-கடப்பு விகிதம் (Zero-Crossing Rate - ZCR): இது சிக்னல் அடையாளம் மாறும் (நேர்மறையிலிருந்து எதிர்மறை அல்லது நேர்மாறாக) விகிதம் ஆகும். அதிக ZCR பெரும்பாலும் சத்தம் அல்லது தாள ஒலிகளைக் குறிக்கிறது (சிம்பல்கள் அல்லது நிலையானவை போன்றவை), அதே நேரத்தில் குறைந்த ZCR டோனல், மெல்லிசை ஒலிகளுக்கு (ஒரு புல்லாங்குழல் அல்லது பாடிய உயிரெழுத்து போன்றவை) பொதுவானது.
zcr = librosa.feature.zero_crossing_rate(y)
print(f"Average Zero-Crossing Rate: {np.mean(zcr)}")
ஸ்பெக்ட்ரல் சென்ட்ராய்டு (Spectral Centroid): இந்த அம்சம் நிறமாலையின் "நிறை மையத்தை" குறிக்கிறது. இது ஒரு ஒலியின் பிரகாசத்தின் அளவீடு ஆகும். அதிக ஸ்பெக்ட்ரல் சென்ட்ராய்டு அதிக அதிர்வெண் உள்ளடக்கம் கொண்ட ஒலியைக் குறிக்கிறது (ஒரு ட்ரம்பெட் போன்றவை), அதே நேரத்தில் குறைந்த சென்ட்ராய்டு ஒரு இருண்ட ஒலியைக் குறிக்கிறது (ஒரு செல்லோ போன்றவை).
spectral_centroids = librosa.feature.spectral_centroid(y=y, sr=sr)[0]
# காலப்போக்கில் ஸ்பெக்ட்ரல் சென்ட்ராய்டை வரைதல்
frames = range(len(spectral_centroids))
t = librosa.frames_to_time(frames, sr=sr)
plt.figure(figsize=(14, 5))
librosa.display.waveshow(y, sr=sr, alpha=0.4)
plt.plot(t, spectral_centroids, color='r') # ஸ்பெக்ட்ரல் சென்ட்ராய்டை சிவப்பில் காண்பி
plt.title('Spectral Centroid')
plt.show()
மெல்-அதிர்வெண் செப்ஸ்ட்ரல் குணகங்கள் (Mel-Frequency Cepstral Coefficients - MFCCs): இது பேச்சாளர் அங்கீகாரம் மற்றும் இசை வகை வகைப்பாடு ஆகியவற்றில், குறிப்பாக ஆடியோ வகைப்பாடு பணிகளுக்கு இது மிக முக்கியமான அம்சமாகும். MFCCகள் என்பது ஒரு ஒலியின் குறுகிய-கால சக்தி நிறமாலையின் ஒரு சுருக்கமான பிரதிநிதித்துவமாகும், இது அதிர்வெண்ணின் நேரியல் அல்லாத மெல் அளவுகோலில் ஒரு பதிவு சக்தி நிறமாலையின் நேரியல் கொசைன் உருமாற்றத்தை அடிப்படையாகக் கொண்டது. இது ஒரு நீண்ட விளக்கம், ஆனால் முக்கிய யோசனை என்னவென்றால், அவை மனித கேட்கும் உணர்வைப் பிரதிபலிக்கும் வகையில் வடிவமைக்கப்பட்டுள்ளன, இது மனிதனைப் போன்ற புரிதல் தேவைப்படும் பணிகளுக்கு அவற்றை மிகவும் பயனுள்ளதாக ஆக்குகிறது.
mfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13)
# MFCCகளை காட்சிப்படுத்துதல்
plt.figure(figsize=(14, 5))
librosa.display.specshow(mfccs, sr=sr, x_axis='time')
plt.colorbar()
plt.title('MFCCs')
plt.show()
சுருதி மற்றும் டெம்போவைக் கண்டறிதல்
Librosa இசை-குறிப்பிட்ட பகுப்பாய்வுக்கான உயர்-நிலை செயல்பாடுகளையும் வழங்குகிறது.
டெம்போ மற்றும் பீட் டிராக்கிங்: நாம் எளிதாக உலகளாவிய டெம்போவை (நிமிடத்திற்கு பீட்களில்) மதிப்பிடலாம் மற்றும் ஆடியோவில் உள்ள பீட்களின் நிலைகளை கண்டறியலாம்.
# டெம்போவை மதிப்பிட்டு பீட் பிரேம்களைக் கண்டறியவும்
tempo, beat_frames = librosa.beat.beat_track(y=y, sr=sr)
print(f'Estimated tempo: {tempo:.2f} beats per minute')
# பீட் பிரேம்களை நேரமாக மாற்றவும்
beat_times = librosa.frames_to_time(beat_frames, sr=sr)
இது பனிப்பாறையின் முனை மட்டுமே. Librosa ரிதம், ஹார்மோனி மற்றும் டோனாலிட்டி பகுப்பாய்வுக்கான டஜன் கணக்கான அம்சங்களை வழங்குகிறது, இது இசை தகவல் மீட்டெடுப்பு (MIR) க்கு மிகவும் சக்திவாய்ந்த கருவியாக அமைகிறது.
பகுதி 2: உருவாக்கும் கைவினை: பைதான் மூலம் ஒலி தொகுப்பு
பகுப்பாய்வு விஷயங்களை பிரித்தெடுப்பது என்றால், தொகுப்பு என்பது புதிதாக உருவாக்குவது. பைதான் மூலம், நீங்கள் ஒரு டிஜிட்டல் இசைக்கருவி தயாரிப்பாளராக மாறலாம், சில வரிக் குறியீடுகளுடன் ஒருபோதும் இல்லாத ஒலிகளை உருவாக்கலாம். முக்கிய யோசனை என்னவென்றால், எண்களின் ஒரு NumPy வரிசையை உருவாக்குவது, அதை இயக்கும்போது நீங்கள் வடிவமைத்த ஒலி அலையை உருவாக்கும்.
அடிப்படை தொகுப்பு நுட்பங்கள்
ஒலியை தொகுக்க பல வழிகள் உள்ளன, ஒவ்வொன்றும் அதன் சொந்த குணாதிசயத்துடன். இங்கே சில அடிப்படை அணுகுமுறைகள்:
- கூட்டல் தொகுப்பு (Additive Synthesis): மிக எளிமையான மற்றும் உள்ளுணர்வு முறை. ஃபூரியரின் தேற்றத்தை அடிப்படையாகக் கொண்டது, இது எந்தவொரு சிக்கலான காலமுறை அலைவடிவத்தையும் எளிய சைன் அலைகளின் (ஹார்மோனிக்ஸ்) கூட்டுத்தொகையாக குறிப்பிட முடியும் என்று கூறுகிறது. வெவ்வேறு அதிர்வெண்கள், வீச்சுகள் மற்றும் கட்டங்களின் சைன் அலைகளை சேர்ப்பதன் மூலம், நீங்கள் நம்பமுடியாத பணக்கார மற்றும் சிக்கலான டிம்பர்களை உருவாக்கலாம்.
- கழித்தல் தொகுப்பு (Subtractive Synthesis): இது கூட்டலின் எதிர். நீங்கள் ஹார்மோனிக்காக பணக்கார அலைவடிவத்துடன் (ஒரு சதுர அலை அல்லது ரம்ப அலை போன்றவை) தொடங்கி, பின்னர் அதிர்வெண்களை துண்டிக்க அல்லது குறைக்க வடிகட்டிகளைப் பயன்படுத்துகிறீர்கள். இது பெரும்பாலான கிளாசிக் அனலாக் சிந்தசைசர்களின் அடிப்படையாகும்.
- அதிர்வெண் மாடுலேஷன் (Frequency Modulation - FM) தொகுப்பு: ஒரு ஆஸிலேட்டரின் ( "கேரியர்") அதிர்வெண் மற்றொரு ஆஸிலேட்டரின் ( "மாடுலேட்டர்") வெளியீட்டால் மாடுலேட் செய்யப்படும் ஒரு மிகவும் திறமையான மற்றும் சக்திவாய்ந்த நுட்பம். இது மிகவும் சிக்கலான, ஆற்றல்மிக்க, மற்றும் பெரும்பாலும் உலோக அல்லது மணி போன்ற ஒலிகளை உருவாக்க முடியும்.
ஒலி தொகுப்புக்கான அத்தியாவசிய பைதான் நூலகங்கள்
தொகுப்பிற்கு, எங்கள் கருவித்தொகுப்பு எளிமையானது ஆனால் சக்தி வாய்ந்தது அல்ல.
- NumPy: இது மிக முக்கியமானது. நமது ஒலி அலைகளை பிரதிநிதித்துவப்படுத்தும் எண்களின் வரிசைகளை உருவாக்கவும் கையாளவும் நாங்கள் NumPy ஐப் பயன்படுத்துவோம். அதன் கணித செயல்பாடுகள் சைன், சதுரம் மற்றும் முக்கோண அலைகள் போன்ற அலைவடிவங்களை உருவாக்குவதற்கு அவசியம்.
- SciPy: `scipy.io.wavfile.write` செயல்பாட்டைப் பயன்படுத்தி எங்கள் NumPy வரிசைகளை எந்த மீடியா பிளேயராலும் இயக்கக்கூடிய நிலையான `.wav` ஆடியோ கோப்புகளாக சேமிப்போம்.
நடைமுறை தொகுப்பு: குறியீட்டிலிருந்து ஒலியை உருவாக்குதல்
ஒலியை உருவாக்கத் தொடங்குவோம். SciPy மற்றும் NumPy தயாராக இருப்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்.
ஒரு தூய டோனை உருவாக்குதல் (சைன் அலை)
நாம் உருவாக்கக்கூடிய மிக எளிய ஒலி ஒரு தூய டோன் ஆகும், இது ஒரு குறிப்பிட்ட அதிர்வெண்ணில் ஒரு சைன் அலை மட்டுமே.
import numpy as np
from scipy.io.wavfile import write
# --- தொகுப்பு அளவுருக்கள் ---
sr = 44100 # மாதிரியெடுப்பு விகிதம்
duration = 3.0 # வினாடிகள்
frequency = 440.0 # Hz (A4 குறிப்பு)
# நேர வரிசையை உருவாக்கவும்
# இது 0 முதல் 'duration' வரை, ஒரு வினாடிக்கு 'sr' புள்ளிகளுடன் ஒரு வரிசையை உருவாக்குகிறது
t = np.linspace(0., duration, int(sr * duration), endpoint=False)
# சைன் அலையை உருவாக்கவும்
# ஒரு சைன் அலைக்கான சூத்திரம்: amplitude * sin(2 * pi * frequency * time)
amplitude = np.iinfo(np.int16).max * 0.5 # அதிகபட்ச 16-பிட் முழு எண் மதிப்பில் பாதியைப் பயன்படுத்தவும்
data = amplitude * np.sin(2. * np.pi * frequency * t)
# 16-பிட் தரவாக மாற்றி .wav கோப்பில் எழுதவும்
write('sine_wave_440hz.wav', sr, data.astype(np.int16))
print("Generated 'sine_wave_440hz.wav' successfully.")
இந்த குறியீட்டை நீங்கள் இயக்கினால், அது அதே கோப்பகத்தில் ஒரு `.wav` கோப்பை உருவாக்கும். அதைத் திறந்தால், ஒரு சரியான A4 ஒலியைக் கேட்பீர்கள்!
உறைகள் (ADSR) மூலம் ஒலியை வடிவமைத்தல்
எங்கள் தூய டோன் சற்று சலிப்பாக இருக்கிறது; அது திடீரென தொடங்கி திடீரென நிற்கிறது. உண்மையான ஒலிகளுக்கு ஒரு ஆற்றல்மிக்க வடிவம் உண்டு. ஒரு உறை (envelope) ஐப் பயன்படுத்தி இதை நாம் கட்டுப்படுத்தலாம். மிகவும் பொதுவான வகை ADSR உறை:
- தாக்குதல் (Attack): ஒலி பூஜ்ஜியத்திலிருந்து அதன் உச்ச நிலைக்கு உயர எடுக்கும் நேரம்.
- மறைவு (Decay): உச்சத்திலிருந்து தாங்குதல் நிலைக்கு குறைய எடுக்கும் நேரம்.
- தாங்குதல் (Sustain): குறிப்பு செயலில் இருக்கும்போது ஒலி நடைபெறும் நிலை.
- வெளியீடு (Release): குறிப்பு வெளியிடப்பட்ட பிறகு ஒலி பூஜ்ஜியத்திற்கு மங்க எடுக்கும் நேரம்.
எங்கள் சைன் அலைக்கு ஒரு எளிய நேரியல் தாக்குதலையும் வெளியீட்டையும் பயன்படுத்துவோம்.
# --- உறை அளவுருக்கள் ---
attack_time = 0.1 # வினாடிகள்
release_time = 0.5 # வினாடிகள்
# உறையை உருவாக்கவும்
attack_samples = int(sr * attack_time)
release_samples = int(sr * release_time)
sustain_samples = len(t) - attack_samples - release_samples
attack = np.linspace(0, 1, attack_samples)
# எளிமைக்காக, நாம் மறைவை தவிர்த்து, தாங்குதல் நிலையை 1 ஆக வைப்போம்
sustain = np.ones(sustain_samples)
release = np.linspace(1, 0, release_samples)
envelope = np.concatenate([attack, sustain, release])
# எங்கள் சைன் அலை தரவுக்கு உறையை பயன்படுத்தவும்
enveloped_data = data * envelope
# புதிய ஒலியை ஒரு கோப்பில் எழுதவும்
write('enveloped_sine_wave.wav', sr, enveloped_data.astype(np.int16))
print("Generated 'enveloped_sine_wave.wav' successfully.")
இந்த புதிய ஒலி மெதுவாகவும் மென்மையாகவும் மங்கி, மிகவும் இசை ரீதியாகவும் இயற்கையாகவும் ஒலிக்கும்.
கூட்டல் தொகுப்புடன் சிக்கலான தன்மையை உருவாக்குதல்
இப்போது, ஹார்மோனிக்ஸைச் சேர்ப்பதன் மூலம் ஒரு வளமான டிம்பரை உருவாக்குவோம். ஒரு சதுர அலை, எடுத்துக்காட்டாக, அதன் அடிப்படை அதிர்வெண் மற்றும் அதன் அனைத்து ஒற்றைப்படை ஹார்மோனிக்ஸையும் கொண்டுள்ளது, வீச்சுகள் விகிதாசாரமாக குறைகின்றன. ஒன்றை தோராயமாக செய்வோம்.
# --- கூட்டல் தொகுப்பு ---
fundamental_freq = 220.0 # A3 குறிப்பு
# அடிப்படை டோனுடன் தொடங்கவும்
final_wave = np.sin(2. * np.pi * fundamental_freq * t)
# ஒற்றைப்படை ஹார்மோனிக்ஸைச் சேர்க்கவும்
num_harmonics = 10
for i in range(3, num_harmonics * 2, 2):
harmonic_freq = fundamental_freq * i
harmonic_amplitude = 1.0 / i
final_wave += harmonic_amplitude * np.sin(2. * np.pi * harmonic_freq * t)
# அலைவடிவத்தை வெட்டுவதைத் தடுக்க சாதாரணமயமாக்கவும் (amplitude > 1)
final_wave = final_wave / np.max(np.abs(final_wave))
# முந்தைய உறையை எங்கள் பயன்படுத்தவும்
rich_sound_data = (amplitude * final_wave) * envelope
# கோப்பில் எழுதவும்
write('additive_synthesis_sound.wav', sr, rich_sound_data.astype(np.int16))
print("Generated 'additive_synthesis_sound.wav' successfully.")
இந்த புதிய கோப்பைக் கேளுங்கள். இது எளிய சைன் அலையை விட மிகவும் வளமான மற்றும் சிக்கலானதாக ஒலிக்கும், ஒரு சதுர அலையின் சத்தமான ஒலிக்கு இணையாக செல்லும். நீங்கள் கூட்டல் தொகுப்பைச் செய்துள்ளீர்கள்!
பகுதி 3: ஒருங்கிணைந்த உறவு: பகுப்பாய்வு மற்றும் தொகுப்பு எங்கு ஒன்றிணைகின்றன
நாம் பகுப்பாய்வு மற்றும் தொகுப்பை தனித்தனி தலைப்புகளாகக் கருதினாலும், அவற்றின் உண்மையான சக்தி ஒன்றாகப் பயன்படுத்தப்படும்போது மட்டுமே வெளிப்படும். அவை ஒரு பின்னூட்ட வளையத்தை உருவாக்குகின்றன, அங்கு புரிதல் உருவாக்கத்தை தெரிவிக்கிறது, மற்றும் உருவாக்கம் புரிதலுக்காக புதிய பொருட்களை வழங்குகிறது.
உலகங்களுக்கு இடையிலான பாலம்: மறுதொகுப்பு (Resynthesis)
இரண்டு சந்திக்கும் மிக உற்சாகமான பகுதிகளில் ஒன்று மறுதொகுப்பு (resynthesis). செயல்முறை இப்படித்தான்:
- பகுப்பாய்வு: ஒரு நிஜ-உலக ஒலியை (எ.கா., ஒரு வயலின் பதிவு) எடுத்து அதன் முக்கிய ஒலி அம்சங்களை - அதன் ஹார்மோனிக் உள்ளடக்கம், அதன் சுருதி ஏற்ற இறக்கங்கள், அதன் வீச்சு உறை - பிரித்தெடுக்கவும்.
- மாதிரி: இந்த அம்சங்களின் அடிப்படையில் ஒரு கணித மாதிரியை உருவாக்கவும்.
- தொகுப்பு: இந்த மாதிரியின் அடிப்படையில் ஒரு புதிய ஒலியை உருவாக்க உங்கள் தொகுப்பு இயந்திரத்தைப் பயன்படுத்தவும்.
இது மிகவும் யதார்த்தமான செயற்கை கருவிகளை உருவாக்க அல்லது ஒரு ஒலியின் பண்புகளை எடுத்து அவற்றை மற்றொன்றிற்குப் பயன்படுத்த அனுமதிக்கிறது (எ.கா., ஒரு கிதாரை ஒரு மனித குரலின் ஸ்பெக்ட்ரல் உறையைப் பயன்படுத்தி "பேச" வைப்பது).
ஆடியோ விளைவுகளை உருவாக்குதல்
கிட்டத்தட்ட அனைத்து டிஜிட்டல் ஆடியோ விளைவுகளும் - ரிவெர்ப், டிலே, டிஸ்டார்ஷன், கோரஸ் - பகுப்பாய்வு மற்றும் தொகுப்பின் கலவையாகும்.
- டிலே/எதிரொலி (Delay/Echo): இது ஒரு எளிய செயல்முறை. அமைப்பு உள்வரும் ஆடியோவை பகுப்பாய்வு செய்கிறது, அதை ஒரு இடையகத்தில் (நினைவகத்தின் ஒரு பகுதி) சேமிக்கிறது, பின்னர் அதை தாமதமாக வெளியீட்டு ஓட்டத்தில் தொகுக்கிறது, பெரும்பாலும் குறைக்கப்பட்ட வீச்சில்.
- டிஸ்டார்ஷன் (Distortion): இந்த விளைவு உள்ளீட்டு சிக்னலின் வீச்சை பகுப்பாய்வு செய்கிறது. அது ஒரு குறிப்பிட்ட வரம்பை மீறினால், அது ஒரு கணித செயல்பாட்டை (ஒரு "அலைவடிவ ஷேப்பர்") பயன்படுத்துவதன் மூலம் ஒரு புதிய வெளியீட்டை தொகுக்கிறது, இது அலைவடிவத்தை வெட்டி அல்லது மாற்றி, வளமான புதிய ஹார்மோனிக்ஸ்களைச் சேர்க்கிறது.
- ரிவெர்ப் (Reverb): இது ஒரு பௌதீக இடத்தின் ஒலியை உருவகப்படுத்துகிறது. இது ஆயிரக்கணக்கான சிறிய, மங்கும் எதிரொலிகளின் (பிரதிபலிப்புகள்) தொகுப்பு ஆகும், அவை ஒரு உண்மையான அறையின் ஒலி பண்புகளின் பகுப்பாய்வின் அடிப்படையில் மாதிரியாக்கப்படுகின்றன.
இந்த ஒருங்கிணைப்பின் நிஜ-உலக பயன்பாடுகள்
பகுப்பாய்வு மற்றும் தொகுப்புக்கு இடையிலான தொடர்பு தொழில் முழுவதும் புதுமைகளை இயக்குகிறது:
- பேச்சு தொழில்நுட்பம்: உரை-க்கு-பேச்சு (TTS) அமைப்புகள் மனிதனைப் போன்ற பேச்சை தொகுக்கின்றன, பெரும்பாலும் பதிவு செய்யப்பட்ட மனித பேச்சின் பரந்த தரவுகளின் ஆழமான பகுப்பாய்வின் அடிப்படையில் பயிற்சி அளிக்கப்படுகின்றன. இதற்கு நேர்மாறாக, தானியங்கி பேச்சு அங்கீகாரம் (ASR) அமைப்புகள் பயனரின் குரலைப் பகுப்பாய்வு செய்து அதை உரையாக டிரான்ஸ்கிரிப்ட் செய்கின்றன.
- இசை தகவல் மீட்டெடுப்பு (MIR): Spotify இன் அமைப்புகள் போன்ற அமைப்புகள் தங்கள் இசை பட்டியலின் ஆழமான பகுப்பாய்வைப் பயன்படுத்தி பாடல்களின் அம்சங்களை (டெம்போ, வகை, மனநிலை) புரிந்துகொள்கின்றன. இந்த பகுப்பாய்வு பின்னர் புதிய பிளேலிஸ்ட்களை தொகுக்க அல்லது இசையை பரிந்துரைக்க பயன்படுத்தப்படலாம்.
- உருவாக்கும் கலை மற்றும் இசை: நவீன AI மாதிரிகள் இசை அல்லது ஒலிகளின் பெரும் தரவுத்தொகுப்புகளை பகுப்பாய்வு செய்து, அதே பாணியில் முற்றிலும் புதிய, அசல் படைப்புகளை தொகுக்க முடியும். இது பகுப்பாய்வு-பின்னர்-தொகுப்பு முன்னுதாரணத்தின் நேரடி பயன்பாடாகும்.
- விளையாட்டு ஆடியோ: மேம்பட்ட விளையாட்டு ஆடியோ என்ஜின்கள் நிகழ்நேரத்தில் ஒலிகளை தொகுக்கின்றன. அவை விளையாட்டின் இயற்பியல் என்ஜினை (எ.கா., ஒரு காரின் வேகம்) பகுப்பாய்வு செய்து, அந்த அளவுருக்களை ஒரு தொடர்புடைய என்ஜின் ஒலியை தொகுக்கப் பயன்படுத்தலாம், இது ஒரு சரியான பதிலளிக்கக்கூடிய மற்றும் ஆற்றல்மிக்க ஆடியோ அனுபவத்தை உருவாக்குகிறது.
முடிவுரை: டிஜிட்டல் ஒலியில் உங்கள் பயணம்
நாம் பிரித்தெடுப்பிலிருந்து உருவாக்கம் வரை, ஒலியைப் புரிந்துகொள்வதிலிருந்து அதை உருவாக்குவது வரை பயணம் செய்துள்ளோம். ஒலி பகுப்பாய்வு என்பது ஆழமாகக் கேட்க, ஒலியின் ephemeral பண்புகளை அளவிட, மற்றும் அவற்றை தரவுகளாக மாற்ற கருவிகளை வழங்குகிறது என்பதை நாம் பார்த்தோம். ஒலி தொகுப்பு நமக்கு பூஜ்ஜியத்திலிருந்து புதிய ஒலி உலகங்களை கணித தர்க்கத்தின் மூலம் உருவாக்க ஒலி வண்ணங்களின் ஒரு தட்டுகளை வழங்குகிறது என்பதையும் நாம் பார்த்தோம்.
முக்கியமான விஷயம் என்னவென்றால், இவை எதிரிடை சக்திகள் அல்ல, மாறாக ஒரே நாணயத்தின் இரண்டு பக்கங்கள். சிறந்த ஆடியோ பயன்பாடுகள், மிக நுட்பமான ஆராய்ச்சி, மற்றும் மிக ஆக்கப்பூர்வமான கலை முயற்சிகள் பெரும்பாலும் இந்த இரண்டு துறைகளின் சந்திப்பில் வாழ்கின்றன. பகுப்பாய்வு மூலம் நாம் பிரித்தெடுக்கும் அம்சங்கள் நமது தொகுப்பிகளின் அளவுருக்களாக மாறும். தொகுப்பிகள் மூலம் நாம் உருவாக்கும் ஒலிகள் நமது பகுப்பாய்வு மாதிரிகளுக்கான தரவுகளாக மாறும்.
பைதான் மற்றும் Librosa, SciPy, மற்றும் NumPy போன்ற அதன் அற்புதமான நூலகங்களின் தொகுப்புடன், இந்த கவர்ச்சிகரமான உலகில் ஆராய்வதற்கான நுழைவு தடை ஒருபோதும் குறைவாக இருந்ததில்லை. இந்த கட்டுரையில் உள்ள உதாரணங்கள் ஒரு தொடக்கப் புள்ளியாக மட்டுமே உள்ளன. உண்மையான உற்சாகம் நீங்கள் இந்த நுட்பங்களை இணைக்கத் தொடங்கும் போது, ஒன்றின் வெளியீட்டை மற்றொன்றின் உள்ளீட்டில் செலுத்தும் போது, மற்றும் ஒலியின் தன்மை பற்றி உங்கள் சொந்த கேள்விகளைக் கேட்கும் போது தொடங்குகிறது.
எனவே, உங்களுக்கு ஆர்வமுள்ள ஒரு ஒலியை ஏற்றவும். அதன் நிறமாலையை பகுப்பாய்வு செய்யவும். அதைப் பிரதிபலிக்கும் ஒரு ஒலியை தொகுக்க முயற்சிக்கவும். ஆயிரம் ஒலிகளின் பயணம் ஒரு வரி குறியீட்டில் தொடங்குகிறது.