資源簡介
按照信噪比公式SNR=10lg(PS/PN),其中Ps和Pn分別代表純語音和純噪聲的平均功率,對純語音和純噪聲進行批量合成。只需要將純語音和純噪聲設置好路徑,代碼修改路徑和信噪比即可批量合成。其中純語音和純噪聲得都是單聲道并且采樣率相同的.wav文件。 修改:為防止削波現(xiàn)象,建議將含噪語音除以(1+k)
代碼片段和文件信息
import?soundfile?as?sf
import?os
import?numpy?as?np
import?math
import?random
#?對純語音數(shù)據(jù)添加噪聲數(shù)據(jù)
def?Get_Data(Voice?noise?Vn?snr):
????Data?Fs?=?sf.read(Voice)
????data?fs?=?sf.read(noise)
????if?fs?==?Fs?and?len(Data)<=len(data):
????????Average_Energy?=?np.sum(Data?**?2)?/?len(Data)
????????average_energy?=?np.sum(data?**?2)?/?len(data)
????????k?=?math.sqrt(Average_Energy?/?average_energy?/?10?**?(snr?*?0.1))
????????print(Average_Energy?average_energy?k)
????????num?=?random.randint(8000len(data)-len(Data)-8000)
????????Data_new?=?Data?+?data[num:len(Data)+num]?*?k
????????print(Vn)
????????sf.write(Vn?Data_new?8000)
????????return?Data?data?Data_new
????else:
????????print(‘error:?fs!=Fs?or?len(Voice)>len(noise)‘)
????????return?0?0?0
def?main(Voicedir?Noisedir?snr):
????#?遍歷噪聲文件
????for?files?in?os.listdir(Noisedir):
????????Noise_wav?=?os.path.join(Noisedir?files)
????????new_dir?=?Noisedir?+?‘_‘?+?files.split(‘.‘)[0]?+?‘_‘?+?str(
- 上一篇:EXCEL讀取和寫入
- 下一篇:Power world搭建的IEEE
評論
共有 條評論