如何编写.wav文件的Power Spectrum

时间:2014-11-21 16:10:47

标签: python audio scipy

所以我正在尝试从它记录的.wav文件中计算从太阳记录的噪声的功率谱。到目前为止,我的代码是(旧代码来自旧帖子):

import pyaudio
import sys
import struct
import numpy
from pylab import *
import wave
import pyfits

sundata = ('sun_noise_ouput.wav')
chunk = 1024
FORMAT = pyaudio.paInt16  # 16-bit integers
CHANNELS = 1
RATE = 25000
RECORD_SECONDS = 120

p = pyaudio.PyAudio()

# Convert to pair of bytes to numerical datatype 
N = len(sundata)/2
data = numpy.zeros(N,dtype=float)
for i in range(N) :
data[i] = struct.unpack('h',sundata[2*i:2*(i+1)])[0]

column = pyfits.Column(name='integer data', array=data, format="J")

fitsoutput = pyfits.new_table([column]) 


fitsoutput.writeto('sun_noise_output.fits', clobber=True)

wf = wave.open('sun_noise_output.wav', 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(sundata)
wf.close()


dataft = numpy.fft.fft(data)

powerspectrum = abs(dataft)**2

figure()
plot(range(N),data)


figure()
plot(range(N),powerspectrum)

show()

也许还有帮助请注意,当我尝试播放文件时,它不返回音频,并说它的长度为0:00秒

当我从美国宇航局的主页下载样本时,没有播放音频,这些是生成的图表:

enter image description here

enter image description here

0 个答案:

没有答案