畫頻譜圖+圖中的y軸縮放,由1000改爲1kHz

import wave
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
from matplotlib.ticker import FuncFormatter

path = "/mnt/d/data/projects/get_mceps/SF3-TM1"

name_list = ['A.wav','B.wav','X1.wav','X3.wav']

 

def changey(temp, position):
    return int(temp/1000)

plt.figure(figsize=(20,8),dpi=200)
pic_name = ['(a)','(b)','(c)','(d)']
for i in range(len(name_list)):
    wav_file = path + '/'+ name_list[i]
    fw = wave.open(wav_file,'r')
    soundInfo = fw.readframes(-1)
    soundInfo = np.fromstring(soundInfo,np.int16)
    f = fw.getframerate()
    print(f)
    plt.subplot(2,2,(i+1))
    plt.subplots_adjust(left=None, bottom=None, right=None, top=None,wspace=None, hspace=0.3)
    plt.specgram(soundInfo,Fs = f, scale_by_freq = True, sides = 'default',cmap='gist_rainbow_r')
    plt.gca().yaxis.set_major_formatter(FuncFormatter(changey))
    plt.ylabel('Frequency(kHz)',fontdict={ 'size':20})
    plt.xlabel('time(seconds)',fontdict={ 'size':20})
    plt.xticks(size = 16)
    plt.yticks(size = 16)
    currentAxis=plt.gca()
    if i!=1:
        rect=patches.Rectangle((1.3, 10),1.4,3500,linewidth=4,edgecolor='r',facecolor='none',ls='--')
        
    else:
        rect=patches.Rectangle((0.93, 10),1.1,3500,linewidth=4,edgecolor='r',facecolor='none',ls='--')
    currentAxis.add_patch(rect)
    if i!=1:
        rect=patches.Rectangle((3.2, 10),0.4,2500,linewidth=4,edgecolor='b',facecolor='none',ls='--')
        
    else:
        rect=patches.Rectangle((2.25, 10),0.36,2500,linewidth=4,edgecolor='b',facecolor='none',ls='--')
    currentAxis.add_patch(rect)

    if i!=1:
        rect=patches.Rectangle((4.3, 10),0.7,1800,linewidth=4,edgecolor='m',facecolor='none',ls='--')
        plt.text(5.8,9000,pic_name[i],fontdict={'weight':'roman','size':24})
    else:
        rect=patches.Rectangle((3.27, 10),0.7,1800,linewidth=4,edgecolor='m',facecolor='none',ls='--')
        plt.text(4.8,9000,pic_name[i],fontdict={'weight':'roman','size':24})
    currentAxis.add_patch(rect)
plt.savefig('./sf3-tm1-english-5-7'+'.jpg')
plt.show()

實驗結果如下所示,爲了防止被盜用,因此做了塗抹

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章