Как уменьшить масштаб спектрограммы matplotlib в python3

Я анализирую спектрограммы файлов.wav. Но после того, как код наконец заработал, я столкнулся с небольшой проблемой. После сохранения спектрограмм более 700 файлов.wav я понимаю, что все они по сути выглядят одинаково!!! Это не потому, что они представляют собой один и тот же аудиофайл, а потому, что я не знаю, как изменить масштаб графика, чтобы он был меньше (чтобы я мог различить различия).

Я уже пытался решить эту проблему, посмотрев эту статью в Stackru. Изменение масштаба графика с помощью коэффициента matplotlib

Я покажу график двух разных.wav файлов ниже

Это.wav #1 Это спектрограмма одного файла.wav

Это.wav #2

Верьте или нет, это два разных файла.wav, но они выглядят очень похожими. И компьютер, в особенности, не сможет уловить различия в этих двух файлах.wav, если масштаб будет таким широким.

Мой код ниже

def individualWavToSpectrogram(myAudio, fileNameToSaveTo):
print(myAudio)
#Read file and get sampling freq [ usually 44100 Hz ]  and sound object
samplingFreq, mySound = wavfile.read(myAudio)

#Check if wave file is 16bit or 32 bit. 24bit is not supported
mySoundDataType = mySound.dtype

#We can convert our sound array to floating point values ranging from -1 to 1 as follows

mySound = mySound / (2.**15)

#Check sample points and sound channel for duel channel(5060, 2) or  (5060, ) for mono channel

mySoundShape = mySound.shape
samplePoints = float(mySound.shape[0])

#Get duration of sound file
signalDuration =  mySound.shape[0] / samplingFreq

#If two channels, then select only one channel
#mySoundOneChannel = mySound[:,0]

#if one channel then index like a 1d array, if 2 channel index into 2 dimensional array
if len(mySound.shape) > 1:
    mySoundOneChannel = mySound[:,0]
else:
    mySoundOneChannel = mySound

#Plotting the tone

# We can represent sound by plotting the pressure values against time axis.
#Create an array of sample point in one dimension
timeArray = numpy.arange(0, samplePoints, 1)

#
timeArray = timeArray / samplingFreq

#Scale to milliSeconds
timeArray = timeArray * 1000

plt.rcParams['agg.path.chunksize'] = 100000


#Plot the tone
plt.plot(timeArray, mySoundOneChannel, color='Black')
#plt.xlabel('Time (ms)')
#plt.ylabel('Amplitude')
print("trying to save")
plt.savefig('/Users/BillyBobJoe/Desktop/' + fileNameToSaveTo + '.jpg')
print("saved")
#plt.show()
#plt.close()

Как я могу изменить этот код, чтобы повысить чувствительность графиков, чтобы различия между двумя WAV-файлами стали более четкими?

Спасибо!

[ОБНОВЛЕНИЕ] Я пытался использовать
plt.xlim((0, 16000))

Но это только добавляет пробел справа от графика, как

Мне нужен способ изменить масштаб каждой единицы. так что график заполняется при изменении оси х от 0 до 16000

1 ответ

Решение

Если вопрос заключается в следующем: как ограничить масштаб по оси X, скажем, от 0 до 1000, вы можете сделать следующее:

plt.xlim((0, 1000))

Другие вопросы по тегам