使用python对wav文件进行加噪

更新时间:2023-05-27 16:51:54 阅读: 评论:0

使⽤python对wav⽂件进⾏加噪
对纯净语⾳加噪主要为了测试去噪算法的效果,本⼩程序根据信噪⽐的定义,批量得到不同信噪⽐的带噪语⾳(仅供参考)注:使⽤soundfile要下载PySoundFile这个包
import soundfile as sf
import numpy as np
import sys
import os
import re
def add_noi(noidir,cleandir,snr):
# noisy
splitdir=re.split(r"\\",noidir)
wavdir="" # 所有wav⽂件所在路径
for i in range(len(splitdir) - 1):
wavdir += splitdir[i] + '/'
noisydir=wavdir+"noisy/"  # 带噪语⾳存储路径
os.mkdir(noisydir)
# noi
for noiwav in os.listdir(noidir):
云水谣土楼noi, fs = sf.read(noidir+'/'+noiwav)
noisy_splitdir=noisydir+"add_"+noiwav[:-4]+"/"
os.mkdir(noisy_splitdir)
# clean
口腔囊肿for cleanwav in os.listdir(cleandir):
clean, Fs = sf.read(cleandir+"/"+cleanwav)
# add noi
if fs == Fs and len(clean) <= len(noi):
# 纯净语⾳能量
按摩梳子cleanenergy = np.sum(np.power(clean,2))
# 随机索引与clean长度相同的noi信号
老同ind = np.random.randint(1, len(noi) - len(clean) + 1)
心满意足noilen=noi[ind:len(clean) + ind]
# 噪声语⾳能量
noienergy = np.sum(np.power(noilen,2))
# 噪声等级系数
夏朝文物
noiratio = np.sqrt((cleanenergy / noienergy) / (np.power(10, snr * 0.1)))
# 随机索引与clean长度相同的noi信号
noisyAudio = clean + noi[ind:len(clean)+ind] * noiratio
# write wav
noisywavname=noisy_splitdir+cleanwav[:-4]+"_"+noiwav[:-4]+"_snr"+str(snr)+".wav"
十大经典穿越军事小说
sf.write(noisywavname, noisyAudio, 16000)
却行
el:
print("fs of clean and noi is unequal or the length of clean is longer than noi's\n")
noidir="C:\\Urs\\benla\\Desktop\\新建⽂件夹\\noi"
cleandir="C:\\Urs\\benla\\Desktop\\新建⽂件夹\\clean"
snr=5
add_noi(noidir,cleandir,snr)
**
结果:
**
⽣成的带噪语⾳:
加噪前:
加噪后:

本文发布于:2023-05-27 16:51:54,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/793570.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:噪声   测试   效果   算法   批量
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图