语音合成

利用噪声和纯净语音合成带特定噪声的语音数据。例如:将说话的声音和风声混合在一起,产生带有风声的语音数据。
信噪比计算公式:
S N R = 10 ⋅ l o g 10 p s p n SNR=10\cdot log_{10} \frac{p_s}{p_n} SNR=10log10pnps
p s : p_s: ps:信号能量
p n : p_n: pn:噪声能量

def ge_NoiseData(clean_data, noise_data, snr):
  """
  利用纯净语音和噪声产生混合语音
  clean_data:纯净语音
  noise_data:噪音数据
  snr:信噪比 dB
  """

  clean_pwr = sum(abs(clean_data)**2) 
  noise_pwr = sum(abs(noise_data)**2) #计算音频信号能量
  
  #语音合成要保证两段信号的长度相等
  if len(noise_data) < len(clean_data):
      tmp = (len(clean_data) // len(noise_data)) + 1
      noise_data = np.array(noise_data * tmp)
      noise_data = noise_data[:len(clean_data)]
  else:
      noise_data = noise_data[:len(clean_data)]
      
  noise_data = noise_data - np.mean(noise_data)
  coeff = np.sqrt( (clean_pwr / (10**(snr / 10))) / noise_pwr ) #噪声系数计算
  new_data = clean_data + coeff * noise_data
  
  return new_data
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值