使用Python对音频进行频谱分析
来源:互联网 发布:合肥市行知学校在哪 编辑:程序博客网 时间:2024/05/16 10:11
原文链接:http://blog.sina.com.cn/s/blog_40793e970102w3m2.html
本篇尝试使用Python对音频文件进行频谱分析。在语音识别领域对音频文件进行频谱分析是一项基本的数据处理过程,同时也为后续的特征分析准备数据。
直接上Python代码:
import waveimport pyaudioimport numpyimport pylab#打开WAV文档,文件路径根据需要做修改wf = wave.open("D:\\Python\\wavs\\Do-piano-2.20s.wav", "rb")#创建PyAudio对象p = pyaudio.PyAudio()stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),channels=wf.getnchannels(),rate=wf.getframerate(),output=True)nframes = wf.getnframes()framerate = wf.getframerate()#读取完整的帧数据到str_data中,这是一个string类型的数据str_data = wf.readframes(nframes)wf.close()#将波形数据转换为数组# A new 1-D array initialized from raw binary or text data in a string.wave_data = numpy.fromstring(str_data, dtype=numpy.short)#将wave_data数组改为2列,行数自动匹配。在修改shape的属性时,需使得数组的总长度不变。wave_data.shape = -1,2#将数组转置wave_data = wave_data.T#time 也是一个数组,与wave_data[0]或wave_data[1]配对形成系列点坐标#time = numpy.arange(0,nframes)*(1.0/framerate)#绘制波形图#pylab.plot(time, wave_data[0])#pylab.subplot(212)#pylab.plot(time, wave_data[1], c="g")#pylab.xlabel("time (seconds)")#pylab.show()## 采样点数,修改采样点数和起始位置进行不同位置和长度的音频波形分析N=44100start=0 #开始采样位置df = framerate/(N-1) # 分辨率freq = [df*n for n in range(0,N)] #N个元素wave_data2=wave_data[0][start:start+N]c=numpy.fft.fft(wave_data2)*2/N#常规显示采样频率一半的频谱d=int(len(c)/2)#仅显示频率在4000以下的频谱while freq[d]>4000:d-=10pylab.plot(freq[:d-1],abs(c[:d-1]),'r')pylab.show()
实验结果
图1:本文博主发“啊”音的频谱分析图:
图2:博主女儿(4岁半)发“啊”音的频谱分析图:
图3:IPhone上音乐软件发“Do”音(C4)的频谱分析图:
图4:博主发“Do”音的频谱分析图:
阅读全文
0 0
- 使用Python对音频进行频谱分析
- 转:使用Python对音频进行频谱分析
- 使用MATLAB进行频谱分析
- 音频频谱分析柱状图
- 使用matlab进行频谱分析时若干问题解释
- 使用matlab进行频谱分析时若干问题解释
- Python将图片写到音频频谱
- 通过MATLAB对从串口采集上来的一组数据进行频谱分析
- matlab对时间序列进行频谱分析时,频率轴的确定方法
- 使用python,pandas对外汇储备进行预测分析
- 使用cProfiler对Python程序进行性能分析
- 如何利用matlab进行频谱分析
- 利用matlab怎样进行频谱分析
- 利用matlab怎样进行频谱分析
- Python 对Twitter中指定话题的Tweet基本元素的频谱分析
- Python 对Twitter中指定话题的被转载Tweet数量的频谱分析
- 对正弦信号相加的频谱分析
- 【转】java对音频文件的频谱分析
- B. Godsend(Round #429 (Div. 2))
- 如何用csdn的Markdown编辑器写博客
- JavaScript事件总结
- 设计模式——装饰模式
- call和apply的区别
- 使用Python对音频进行频谱分析
- 各编译工具说明
- python---把tab.py的tab键自动补齐命令脚本,放入包目录下,python所有文件都可以使用
- BZOJ 3994 [SDOI2015]约数个数和 莫比乌斯反演
- HDU
- 云服务器上iis部署环境搭建
- 树莓派3 利用frp内网穿透搭建
- LINUX驱动小知识
- Python3.5连接Mysql