這兩天覆現代碼。先構造數據集,純淨語音、不一樣噪聲、不一樣SNR的混合語音。其中純淨語音由兩部分組成,IEEE corpus和TIMIT。html
一開始我用MATLAB中的audioread讀取音頻文件,合成後用audiowrite保存下來。沒有任何問題。python
後來,師姐讓我換成python處理,無論是wave仍是scipy.io中的wavfile,在讀取TIMIT的原始WAV時都會報錯。linux
經過上述問答以及TIMIT語料庫的官方說明文件,咱們能夠發現TIMIT中的WAV文件是:shell
咱們用notepad++打開任意一個數據集中的wav文件,能夠看到如下內容做爲開頭:工具
而以一樣方式打開普通的wav文件,則開頭內容爲:post
將SPHERE文件轉換成WAV文件。編碼
網上能夠找到許多方法,在此我採用了Dystopia在基於各類分類算法的說話人識別(年齡段識別)一文中的方法。
url
Kaldi中tools下有SPHERE文件轉換工具sph2pipe.exespa
轉換工具:sph2pipe_v2.5,若是安裝過Kaldi的話,能夠直接使用 $KALDI_ROOT/tools/sph2pipe_v2.5/sph2pipe,若是沒有安裝的話,能夠單獨下載:http://sourceforge.net/projects/kaldi/files/sph2pipe_v2.5.tar.gz
若是是在Windows環境下的話直接使用sph2pipe.exe便可,若是是在linux環境下的話,則須要進行GCC編碼:gcc -o sph2pipe *.c -lm
1 #encoding="utf-8" 2 import os 3 import os.path 4 rootdir = "/data/Datasets/yuanpp/TIMIT" 5 timitpath = "/data/Datasets/yuanpp/TIMIT" 6 targetpath = "/data/Datasets/yuanpp/TIMIT_convert" 7 sph2pipepath = "/home/yuanpeipei/sph2pipe_v2.5/sph2pipe" 8 f = open('./make_sph2pipe_file.txt','w') 9 for root,dirs,files in os.walk(rootdir): 10 for fn in files: 11 if fn[len(fn)-3:len(fn)]=='wav': 12 sourcefile = timitpath+root[len(rootdir):]+"/"+fn 13 targetfile = targetpath + "/" + fn 14 s = sph2pipepath + " -f wav " + sourcefile+" "+targetfile+"\n" 15 f.write(s) 16 f.close()
生成make_sph2pipe_file.txt文件,內容爲命令行。
1 /home/yuanpeipei/sph2pipe_v2.5/sph2pipe -f wav /data/Datasets/yuanpp/TIMIT/pure_utterance/validation/S_125_06.wav /data/Datasets/yuanpp/TIMIT_convert/S_125_06.wav 2 /home/yuanpeipei/sph2pipe_v2.5/sph2pipe -f wav /data/Datasets/yuanpp/TIMIT/pure_utterance/validation/S_130_03.wav /data/Datasets/yuanpp/TIMIT_convert/S_130_03.wav 3 /home/yuanpeipei/sph2pipe_v2.5/sph2pipe -f wav /data/Datasets/yuanpp/TIMIT/pure_utterance/validation/S_60_10.wav /data/Datasets/yuanpp/TIMIT_convert/S_60_10.wav 4 /home/yuanpeipei/sph2pipe_v2.5/sph2pipe -f wav /data/Datasets/yuanpp/TIMIT/pure_utterance/validation/S_130_06.wav /data/Datasets/yuanpp/TIMIT_convert/S_130_06.wav 5 ... ...
1 #!/bin/sh 2 while read line 3 do 4 $line 5 done < make_sph2pipe_file.txt
便可。
參考資料: