Python繪制語譜圖+時域波形


 1 """Python繪制語譜圖"""
 2 """Python繪制時域波形"""
 3 
 4 # 導入相應的包
 5 import numpy, wave
 6 import matplotlib.pyplot as plt
 7 import numpy as np
 8 import os
 9 
10 filepath = 'G:/實戰培訓/Python生成語譜圖/ReNoise/Prim10/'  # 添加路徑
11 filename = os.listdir(filepath)  # 得到文件夾下的所有文件名
12 
13 for i in range(len(filename)):
14     f = wave.open(filepath + filename[i], 'rb')  # 調用wave模塊中的open函數,打開語音文件。
15     params = f.getparams()  # 得到語音參數
16     nchannels, sampwidth, framerate, nframes = params[:4]  # nchannels:音頻通道數,sampwidth:每個音頻樣本的字節數,framerate:采樣率,nframes:音頻采樣點數
17     strData = f.readframes(nframes)  # 讀取音頻,字符串格式
18     wavaData = np.fromstring(strData, dtype=np.int16)  # 得到的數據是字符串,將字符串轉為int型
19     wavaData = wavaData * 1.0/max(abs(wavaData))  # wave幅值歸一化
20     wavaData = np.reshape(wavaData, [nframes, nchannels]).T  # .T 表示轉置
21     f.close()
22 
23     #(1)繪制語譜圖
24     plt.figure()
25     plt.specgram(wavaData[0], Fs=framerate, scale_by_freq=True, sides='default')  # 繪制頻譜
26     plt.xlabel('Time(s)')
27     plt.ylabel('Frequency')
28     plt.title("Spectrogram_{}".format(i+1))
29     plt.savefig('G:/實戰培訓/Python生成語譜圖/語譜圖/{}.jpg'.format(filename[i][:-4]))
30     plt.show()
31 
32     #(2)繪制時域波形
33     time = np.arange(0, nframes) * (1.0 / framerate)
34     time = np.reshape(time, [nframes, 1]).T
35     plt.plot(time[0, :nframes], wavaData[0, :nframes], c="b")
36     plt.xlabel("time(seconds)")
37     plt.ylabel("amplitude")
38     plt.title("Original wave")
39     plt.savefig('G:/實戰培訓/Python生成語譜圖/語譜圖/{}_.jpg'.format(filename[i][:-4]))  # 保存繪制的圖形
40     plt.show()
Python繪制語譜圖+時域波形

繪制圖形展示:2019-07-06 11:39:41


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM