python與numpy使用的一些小tips(2)
1,保存語音
from scipy.io import wavfilenwavfile.write(path, rate, speech)n
- path:包含路徑和要存儲的名稱
- rate:存儲的頻率
- speech:要存儲的語音矩陣
附:os.path.join(testspeechdir, AG_{0:03d}.wav.format(epoch)):在testspeechdir路徑下存儲名稱是epoch
需要注意的是:
- speech的形狀可以是一位的如shape為(32768,)或者二維的如(32768,1)。但不可以是三維的,因為深度學習的第一維是batch,要非常的注意。
- 如果保存的語音值不是在0到1之間,就要將其數據類型轉化為int。在0到1時float類型是可以的
講兩段語音放在一起保存
testA = SpeechGenerator(testimgdirA,speechlen)ntestB = SpeechGenerator(testimgdirB,speechlen)nA_speech_batch = next(testA)nB_speech_batch = next(testB)nC_speech_batch = np.concatenate([A_speech_batch,B_speech_batch],axis=1)nC = ulaw2lin(C_speech_batch)nprint(C_speech_batch.shape)nprint(A_speech_batch)nprint(B_speech_batch)nwavfile.write(os.path.join(testspeechdir, AG_{0:03d}.wav.format(7)), 16000, C[0])n輸出:n(1, 65536, 1)n(1, 32768, 1)n(1, 32768, 1)n
2,對語音進行濾波
from scipy import signalnB_speech_batch = next(testB)nb,a = signal.butter(3,0.05,low)nC_speech_batch = signal.filtfilt(b,a,B_speech_batch[0,:,0])n
- signal.butter對於第二參數是0到1之間(當其他參數是默認值時)
- 對信號的要求是一維的【scipy.signal.butter】
3,相對路徑
以下為建立路徑所使用的幾個特殊符號,及其所代表的意義。
- "./":代表目前所在的目錄
- "../":代表上一層目錄
歡迎關注公眾號:huangxiaobai880
https://www.zhihu.com/video/924617160326799360推薦閱讀:
※python二進位文件的讀取
※Python:一篇文章掌握Numpy的基本用法
※Numpy中Meshgrid函數介紹及2種應用場景
※如何用python numpy產生一個正態分布隨機數的向量或者矩陣?