python手记(48)
2013-08-27 17:49
211 查看
#!/usr/bin/env python # -*- coding: utf-8 -*- #http://blog.csdn.net/myhaspl #code:myhaspl@qq.com import wave import pylab as pl import numpy as np import copy print 'http://blog.csdn.net/myhaspl' print 'myhaspl@qq.com' print print 'working...' print "read wav data...." # 打开WAV文档 f = wave.open(r"speak.wav", "rb") fo = wave.open(r"jghy.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=copy.deepcopy(wave_data) hystart=1 temp_wavedata=new_wave_data[hystart:len(new_wave_data)/2] new_wave_data[hystart:len(new_wave_data)/2]+=temp_wavedata*0.4 new_wave_data[len(new_wave_data)/2+hystart:len(new_wave_data)]+=temp_wavedata*0.4 new_wave_data=np.array(new_wave_data) new_wave_data =new_wave_data.astype(wave_data.dtype) 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) * (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 声音产生回声
相关文章推荐
- python手记(48)
- python手记(21)
- python_lintcode_47主元素_47主元素 II_48主元素 III
- Python 手记(二):装饰器
- python手记(27)
- python手记(31)
- python手记(39)
- python手记(7)
- python 手记7 〖笨方法学python习题22〗
- python 手记5 〖笨方法学python习题20〗
- MicroPython TPYBoard v102 驱动28BYJ-48步进电机
- python对文本内容按关键字48进行换行处理
- python手记-twisted(3)
- [置顶] python手记
- 笨办法学python笔记(48)更复杂的用户输入
- python手记(25)
- python手记(游戏) 笨方法学python习题36【持续更新中】
- python手记(43)
- python手记(8)
- Python手记(三):类的继承