• 大小: 2.78KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-03-27
  • 语言: 其他
  • 标签: 其他  

资源简介


按照信噪比公式SNR=10lg(PS/PN),其中Ps和Pn分别代表纯语音和纯噪声的平均功率,对纯语音和纯噪声进行批量合成。只需要将纯语音和纯噪声设置好路径,代码修改路径和信噪比即可批量合成。其中纯语音和纯噪声得都是单声道并且采样率相同的.wav文件。 修改:为防止削波现象,建议将含噪语音除以(1+k)

资源截图

代码片段和文件信息

import soundfile as sf
import os
import numpy as np
import math
import random


# 对纯语音数据添加噪声数据
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(

评论

共有 条评论