使用python绘制wav 音频文件频谱图

1.wav 文件需要是Windows PCM 格式(未压缩),请参考

2.python 库的安装:

pip install pyaudio(可能会用到)    

pip install matplotlib(必需)

pip install scipy(可能会用到) 

3. 可以看一下,这里读取出来的有通道数,采样率,采样数等信息,和cool edit 显示的信息是一致

cool edit显示的文件信息,里面显示文件是PCM格式(在《信号与系统》的课里面我们应该学过的哈):

 

与cool edit显示的频谱图也是一致的: 

4. 接下来是最后比较激动的python代码部分(仅供参考),大家可以用wav文件试一下,绘制一下频谱图:

import wave
import struct,numpy
from scipy import *
from pylab import *

def Plot_fft_freq_chart(filename,plot=False):
	wavefile = wave.open(filename, 'r') # open for writing
	nchannels = wavefile.getnchannels()
	sample_width = wavefile.getsampwidth()
	framerate = wavefile.getframerate()
	numframes = wavefile.getnframes()
	  
	print("channel",nchannels)
	print("sample_width",sample_width)
	print("framerate",framerate)
	print("numframes",numframes)
	  
	y = numpy.zeros(numframes)
	  
	for i in range(numframes):
		val = wavefile.readframes(1)
		left = val[0:2]
		#right = val[2:4]
		v = struct.unpack('h', left )[0]
		y[i] = v
	  
	Fs = framerate
	try:
		data, freqs, bins, im = specgram(y, NFFT=1024, Fs=Fs, noverlap=900)
		mm=data[127]
		mm=10. * np.log10(mm+1e-4)

	except Exception as e:
		print("error is: ",e)
		return -50

	freq1khz_value=mean(mm)
	print(freq1khz_value)
	if plot:
		show()
	return freq1khz_value


filename1="20-20k.wav"
Plot_fft_freq_chart(filename1,True)

好了,今天的使用python绘制wav 音频文件频谱图 的分享就到这里了,欢迎大家留言交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值