এখানে matplotlib.specgram পরামিতি রয়েছে
matplotlib.mlab.specgram(x,
NFFT=256,
Fs=2,
detrend=<function detrend_none at 0x1dd6410>,
window=<function window_hanning at 0x1e0b1b8>,
noverlap=128,
pad_to=None,
sides='default',
scale_by_freq=None)
প্রশ্ন বর্ণনায় প্রদত্ত প্যারামিটারগুলিকে তুলনীয় mpl.specgram পরামিতিগুলিতে রূপান্তর করতে হবে। নিম্নলিখিতটি ম্যাপিংয়ের একটি উদাহরণ:
View range: 0-8000Hz Fs=16000
Window length: 0.005s NFFT = int(Fs*0.005) = 80
noverlap = int(Fs*0.0025) = 40
Dynamic range: 70dB n/a
Time steps: 1000 n/a
Frequency steps: 250
Window shape: Gaussian default window is hanning change to gaussian
আপনি যদি 8 এমএস ব্যবহার করেন তবে আপনি 2 এফএফটি (128) পাওয়ার পাবেন। নীচে তাদের ওয়েবসাইট থেকে প্রাত সেটিংসের বিবরণ দেওয়া হল
পরিসর দেখুন (হার্জেড) : প্রদর্শনের জন্য ফ্রিকোয়েন্সিগুলির ব্যাপ্তি। মানটি নীচে 0 Hz এবং শীর্ষে 5000 Hz z যদি এই সর্বাধিক ফ্রিকোয়েন্সিটি সাউন্ডের Nyquist ফ্রিকোয়েন্সি (যা তার নমুনা সংক্রান্ত অর্ধেকের অর্ধেকের চেয়ে বেশি) হয় তবে বর্ণালীতে কিছু মান শূন্য হবে এবং উচ্চতর ফ্রিকোয়েন্সি সাদা রঙে আঁকা হবে। আপনি যদি 44100 হার্জেড একটি সাউন্ড রেকর্ড করেন এবং 0 হার্জ থেকে 25000 হার্জ থেকে দেখার পরিসরটি সেট করেন তবে আপনি এটি দেখতে পারেন।
উইন্ডোর দৈর্ঘ্য : বিশ্লেষণ উইন্ডোর সময়কাল। যদি এটি 0.005 সেকেন্ড হয় (মান), প্রাত প্রতিটি ফ্রেমের জন্য শব্দের অংশটি 0.0025 সেকেন্ডের আগে এবং সেই ফ্রেমের কেন্দ্রের পরে 0.0025 সেকেন্ডের মধ্যে ব্যবহার করে (গাউসিয় উইন্ডোগুলির জন্য, প্রাত আসলে এর চেয়ে কিছুটা বেশি ব্যবহার করে)। উইন্ডোটির দৈর্ঘ্য বর্ণালী বিশ্লেষণের ব্যান্ডউইথথ নির্ধারণ করে, যেমন খাঁটি সাইন ওয়েভের বর্ণালীতে অনুভূমিক রেখার প্রস্থ (নীচে দেখুন)। গাউসির উইন্ডোর জন্য -3 ডিবি ব্যান্ডউইথটি 2 * স্কয়ার্ট (6 * এলএন (2)) / (π * উইন্ডো দৈর্ঘ্য), বা 1.2982804 / উইন্ডো দৈর্ঘ্য। একটি broad-band' spectrogram (bandwidth 260 Hz), keep the standard window
length of 5 ms; to get a
সংকীর্ণ-ব্যান্ড 'স্পেকট্রামগ্রাম (ব্যান্ডউইথ 43 হার্জেড) পেতে, এটি 30 এমএস (0.03 সেকেন্ড) এ সেট করুন। অন্যান্য উইন্ডো আকারগুলি কিছুটা আলাদা মান দেয়।
ডায়নামিক রেঞ্জ (ডিবি) : ডায়নামিক রেঞ্জের ডিবি সর্বাধিকের নীচে (সম্ভবত গতিশীল সংক্ষেপণের পরে, অ্যাডভান্সড স্পেকট্রগ্রাম সেটিংস দেখুন ...) সমস্ত মান সাদাতে আঁকা হবে। এর মধ্যে মানগুলির মধ্যে ধূসর বর্ণের উপযুক্ত ছায়া রয়েছে। সুতরাং, যদি স্পেকট্রামের সর্বোচ্চ শিখরের উচ্চতা 30 ডিবি / এইচজেড হয় এবং গতিশীল পরিসীমা 50 ডিবি (যা মান মান), তবে -20 ডিবি / এইচজেডের নীচের মানগুলি সাদা রঙে আঁকা হবে এবং এর মধ্যে মানগুলি হবে -20 ডিবি / হার্জেড এবং 30 ডিবি / এইচজেড বিভিন্ন ধূসর ছায়ায় আঁকা হবে।
প্রাত সেটিংসের লিঙ্ক
ওপির প্রশ্নটি প্রাত স্প্যাগগ্রাম এবং এমপিএল (ম্যাটপ্লোটিলিব) স্প্যাগগ্রামের মধ্যে বিপরীত পার্থক্য সম্পর্কিত হতে পারে। প্রাতের একটি ডায়নামিক রেঞ্জ সেটিংস রয়েছে যা বিপরীতে প্রভাব ফেলে। এমপিএল ফাংশনটির অনুরূপ সেটিং / প্যারামিটার নেই। এমপিএল.স্পেকগ্রামটি 2D অ্যারে পাওয়ার লেভেলের অ্যারেটি (স্পেকট্রগ্রাম) প্রদান করে যা ডায়নামিক রেঞ্জটি রিটার্ন অ্যারেতে প্রয়োগ করা যেতে পারে এবং পুনরায় প্লট করা যায়।
নীচে প্লটগুলি তৈরি করার জন্য নীচে একটি কোড স্নিপেট। উদাহরণটি হ'ল 20Hz-8000Hz থেকে চিপযুক্ত ~ 1m15s এর বক্তৃতা।
import numpy
import pylab
import wave
import array
pylab.close('all')
w1 = wave.open('example_no_noise.wav')
w2 = wave.open('example_noise.wav')
# hmmm, probably a better way to do this, scipy.io function?
x1 = numpy.array(array.array('h', w1.readframes(w1.getnframes())))
x2 = numpy.array(array.array('h', w2.readframes(w2.getnframes())))
x1 = x1 / (2.**(16-1)) # normalize
x2 = x2 / (2.**(16-1)) # normalize
Fs = 16000.
NFFT = int(Fs*0.005) # 5ms window
noverlap = int(Fs*0.0025)
pylab.figure(1)
pylab.specgram(x1, NFFT=NFFT, Fs=Fs, noverlap=noverlap,
cmap=pylab.get_cmap('Greys'))
pylab.title('Full 1m15s example min noise')
pylab.figure(2)
pylab.specgram(x2, NFFT=NFFT, Fs=Fs, noverlap=noverlap,
cmap=pylab.get_cmap('Greys'))
pylab.title('Full 1m15s example more noise')
pylab.figure(3); n=2100*176;
pylab.specgram(x2[n:n+256*256], NFFT=NFFT, Fs=Fs, noverlap=noverlap,
cmap=pylab.get_cmap('Greys'))
pylab.title('Full ~4s example min noise')
pylab.figure(4); pylab.plot(x1[n:n+256*256])