对加噪音前后的音频信号进行频谱分析

一、对纯净音频进行频谱分析

1、打开要进行分析的wav文件:

wf = wave.open("F:\\pycharm\\audio.wav", "rb")

2、创建PyAudio对象

p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                channels=wf.getnumchannels(),
                rate=wf.getframerate(),
                output=True)
numframes = wf.getnumframes()
framerate = wf.getframerate()

3、读取完整的帧数据

str_data = wf.readframes(numframes)
wf.close()

4、修改采样点数和起始位置从而进行不同位置和长度的音频波形分析

N = 44100
start = 0  
df = framerate / (N - 1)  
freq = [df * n for n in range(0, N)]  
wave_data2 = wave_data[0][start:start + N]
c = numpy.fft.fft(wave_data2) * 2 / N

5、将频率在4000以下的频谱显示出来

while freq[d] > 4000:
    d -= 10
pylab.plot(freq[:d - 1], abs(c[:d - 1]), 'r')
pylab.show()

结果如下所示:在这里插入图片描述

二、对混入噪声后的音频进行频谱分析

与前面的方法一样,但是出现了错误,具体如下:

在这里插入图片描述
出错原因:是wav格式的问题;Wav格式有很多种,但是wave.open()中支持的是pcm的格式,因此需要进行格式的转变。

三、解决方法

1、在window系统下下载sox;用它做格式转换。
sox的安装教程
按照如上教程安装成功并配置环境变量后,cmd 输入sox 查看是否成功安装。
如下说明sox已成功安装:
在这里插入图片描述
2、在python中安装sox包
Python包sox,提取码:3ii4。
在cmd下按如下方式安装:
在这里插入图片描述
3、在对音频进行转换时,需要在音频文件所在路径下进行,有如下两种方式
(1)利用cd到音频文件所在路径
在这里插入图片描述
(2)直接在音频文件所在路径打开cmd命令窗口
在这里插入图片描述
输入sox noiseaudio.wav -b 16 -e signed-integer 00.wav进行转换
在这里插入图片描述
成功后再用上述方法绘制频谱,结果如下:
在这里插入图片描述

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值