python 수기(49)

#!/usr/bin/env python  
# -*- coding: utf-8 -*-
#http://blog.csdn.net/myhaspl  
#code:[email protected] 
import wave
import pylab as pl
import numpy as np
import copy

print 'http://blog.csdn.net/myhaspl'  
print '[email protected]'  
print  
  
print 'working...' 



print "read wav data...."
#   WAV  
f = wave.open(r"jg.wav", "rb")
fo = wave.open(r"pl1.wav", "wb")


#       
# (nchannels, sampwidth, framerate, nframes, comptype, compname)
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
str_data = f.readframes(nframes)



#          ,   
print "update wav data...."
wave_data = np.fromstring(str_data, dtype=np.short)





#    

new_wave_data=np.zeros((len(wave_data)/2), dtype=np.short)
i=0
for ii in xrange(0,len(wave_data),2):
    new_wave_data[i]=wave_data[ii]
    i+=1

new_wave_data=np.array(new_wave_data)

new_str_data=new_wave_data.tostring()
#       
print "save new wav files...."
fo.setnchannels(nchannels)
fo.setframerate(framerate)
fo.setsampwidth(sampwidth)
fo.writeframes(new_str_data)






#     
wave_data.shape = -1, 2
wave_data = wave_data.T
time = np.arange(0, nframes) * (1.0 / framerate)
pl.subplot(221)
pl.plot(time, wave_data[0])
pl.subplot(222)
pl.plot(time, wave_data[1], c="g")
pl.xlabel("time (seconds)")

 
#     
new_wave_data.shape = -1, 2
new_wave_data =new_wave_data.T
new_time = np.arange(0, nframes/2) * (1.0 / framerate)
pl.subplot(223)
pl.plot(new_time,new_wave_data[0])
pl.subplot(224)
pl.plot(new_time, new_wave_data[1], c="g")
pl.xlabel("time (seconds)")
pl.show()

>>> runfile(r'K:\book_prog\audio_hy.py', wdir=r'K:\book_prog') http://blog.csdn.net/myhaspl [email protected] working... read wav data.... update wav data.... save new wav files.... >>> 
python手记(49)_第1张图片
위 는 python 으로 음성 주파 수 를 증가 하고 아래 는 음성 주파 수 를 감소 합 니 다.
#!/usr/bin/env python  
# -*- coding: utf-8 -*-
#http://blog.csdn.net/myhaspl  
#code:[email protected] 
import wave
import pylab as pl
import numpy as np
import copy

print 'http://blog.csdn.net/myhaspl'  
print '[email protected]'  
print  
  
print 'working...' 



print "read wav data...."
#   WAV  
f = wave.open(r"jg.wav", "rb")
fo = wave.open(r"pl2.wav", "wb")


#       
# (nchannels, sampwidth, framerate, nframes, comptype, compname)
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
str_data = f.readframes(nframes)



#          ,   
print "update wav data...."
wave_data = np.fromstring(str_data, dtype=np.short)





#    

new_wave_data=np.zeros((len(wave_data)*2), dtype=np.short)
i=0
for ii in xrange(0,(len(new_wave_data))):
    new_wave_data[ii]=wave_data[int(i)]
    i+=0.5

new_wave_data=np.array(new_wave_data)

new_str_data=new_wave_data.tostring()
#       
print "save new wav files...."
fo.setnchannels(nchannels)
fo.setframerate(framerate)
fo.setsampwidth(sampwidth)
fo.writeframes(new_str_data)






#     
wave_data.shape = -1, 2
wave_data = wave_data.T
time = np.arange(0, nframes) * (1.0 / framerate)
pl.subplot(221)
pl.plot(time, wave_data[0])
pl.subplot(222)
pl.plot(time, wave_data[1], c="g")
pl.xlabel("time (seconds)")

 
#     
new_wave_data.shape = -1, 2
new_wave_data =new_wave_data.T
new_time = np.arange(0, nframes*2) * (1.0 / framerate)
pl.subplot(223)
pl.plot(new_time,new_wave_data[0])
pl.subplot(224)
pl.plot(new_time, new_wave_data[1], c="g")
pl.xlabel("time (seconds)")
pl.show()

python手记(49)_第2张图片

좋은 웹페이지 즐겨찾기