
python 播放 wav 5
播放前可以选择MME或DirectSound然后选择什么设么输入(如电脑本身或一个USB音箱)提前谢谢大家只有这点了:((错了:播放前可以选择MME或DirectSoun...
播放前可以选择 MME 或 DirectSound 然后选择什么设么输入(如 电脑本身 或一个 USB 音箱)
提前谢谢 大家
只有这点了 :((
错了 : 播放前可以选择 MME 或 DirectSound 然后选择什么设备输出 (如 电脑本身 或一个 USB 音箱) 展开
提前谢谢 大家
只有这点了 :((
错了 : 播放前可以选择 MME 或 DirectSound 然后选择什么设备输出 (如 电脑本身 或一个 USB 音箱) 展开
1个回答
展开全部
这是python的matplotlib里的一个画wav文件的时频分析(specgram)的函数。和matlab里的那个差不多。使用超级方便,自动就做好了短时傅立叶变换(short
time fourier
transform)~函数用法具体可参照http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.specgram
关于短时傅立叶变换的具体内容可google之~下面介绍程序。
#首先import各种library。wave和struct都是安装python2.6自带的。scipy可以在
#http://www.scipy.org/Download下载。pylab可在http://matplotlib.sourceforge.net/下载。都是非常#强大的包包啊~~
import wave
import struct
from scipy import *
from pylab import *
#读取wav文件,我这儿读了个自己用python写的音阶的wav
filename = '/Users/rongjin/Desktop/scale.wav'
wavefile = wave.open(filename, 'r') # open for writing
#读取wav文件的四种信息的函数。期中numframes表示一共读取了几个frames,在后面要用到滴。
nchannels = wavefile.getnchannels()
sample_width = wavefile.getsampwidth()
framerate = wavefile.getframerate()
numframes = wavefile.getnframes()
#建一个y的数列,用来保存后面读的每个frame的amplitude。
y = zeros(numframes)
#for循环,readframe(1)每次读一个frame,取其前两位,是左声道的信息。右声道就是后两位啦。
#unpack是struct里的一个函数,用法详见http://docs.python.org/library/struct.html。简单说来
就是把#packed的string转换成原来的数据,无论是什么样的数据都返回一个tuple。这里返回的是长度为一的一个
#tuple,所以我们取它的第零位。
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
#framerate就是44100,文件初读取的值。然后本程序最关键的一步!specgram!实在太简单了。。。
Fs = framerate
specgram(y, NFFT=1024, Fs=Fs, noverlap=900)
show()
好看的specgram就画好了~~x轴是时间,y轴是频率~
time fourier
transform)~函数用法具体可参照http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.specgram
关于短时傅立叶变换的具体内容可google之~下面介绍程序。
#首先import各种library。wave和struct都是安装python2.6自带的。scipy可以在
#http://www.scipy.org/Download下载。pylab可在http://matplotlib.sourceforge.net/下载。都是非常#强大的包包啊~~
import wave
import struct
from scipy import *
from pylab import *
#读取wav文件,我这儿读了个自己用python写的音阶的wav
filename = '/Users/rongjin/Desktop/scale.wav'
wavefile = wave.open(filename, 'r') # open for writing
#读取wav文件的四种信息的函数。期中numframes表示一共读取了几个frames,在后面要用到滴。
nchannels = wavefile.getnchannels()
sample_width = wavefile.getsampwidth()
framerate = wavefile.getframerate()
numframes = wavefile.getnframes()
#建一个y的数列,用来保存后面读的每个frame的amplitude。
y = zeros(numframes)
#for循环,readframe(1)每次读一个frame,取其前两位,是左声道的信息。右声道就是后两位啦。
#unpack是struct里的一个函数,用法详见http://docs.python.org/library/struct.html。简单说来
就是把#packed的string转换成原来的数据,无论是什么样的数据都返回一个tuple。这里返回的是长度为一的一个
#tuple,所以我们取它的第零位。
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
#framerate就是44100,文件初读取的值。然后本程序最关键的一步!specgram!实在太简单了。。。
Fs = framerate
specgram(y, NFFT=1024, Fs=Fs, noverlap=900)
show()
好看的specgram就画好了~~x轴是时间,y轴是频率~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询