python手记(50)
2013-08-29 19:19
232 查看
#!/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 print 'http://blog.csdn.net/myhaspl' print 'myhaspl@qq.com' print print 'working...' print "generate wav data...." # 打开WAV文档 fo = wave.open(r"plpl1.wav", "wb") # 设置波形参数 #采样率 framerate = 22050 #声道数 nchannels=2 #每位宽度 sampwidth=2 #长度 nframes =framerate #频率 freq=440 #最大振幅 max_amplitude = 4000 #每样本秒数 interval=1.0/freq #每周期样本数 samplepercycle=interval*framerate#=interval/(1/framerate) wave_data=np.zeros((nframes), dtype=np.short) maxcycle=2*np.pi for curpos in xrange(0,nframes): possamp=np.sin((curpos/samplepercycle)*maxcycle) sampleval=int(max_amplitude*possamp) wave_data[curpos]=sampleval str_data=wave_data.tostring() #频率 freq=880 #最大振幅 max_amplitude = 2000 #每样本秒数 interval=1.0/freq #每周期样本数 samplepercycle=interval*framerate#=interval/(1/framerate) new_wave_data=np.zeros((nframes), dtype=np.short) maxcycle=2*np.pi for curpos in xrange(0,nframes): possamp=np.sin((curpos/samplepercycle)*maxcycle) sampleval=int(max_amplitude*possamp) new_wave_data[curpos]=sampleval # 绘制波形 wave_data.shape = -1, 2 wave_data = wave_data.T new_wave_data.shape = -1, 2 new_wave_data = new_wave_data.T time = np.arange(0, nframes/2)[:100]# * (1.0 / framerate) pl.subplot(323) pl.plot(time, new_wave_data[0][:100]) pl.subplot(324) pl.plot(time, new_wave_data[1][:100], c="g") pl.xlabel("time (seconds)") #波形叠加 new_wave_data+=wave_data # 绘制波形 time = np.arange(0, nframes/2)[:100]# * (1.0 / framerate) pl.subplot(321) pl.plot(time, wave_data[0][:100]) pl.subplot(322) pl.plot(time, wave_data[1][:100], c="g") pl.xlabel("time (seconds)") time = np.arange(0, nframes/2)[:100]# * (1.0 / framerate) pl.subplot(325) pl.plot(time, new_wave_data[0][:100]) pl.subplot(326) pl.plot(time, new_wave_data[1][:100], c="g") pl.xlabel("time (seconds)") #写波形数据参数 print "save new wav files...." new_str_data=new_wave_data.tostring() fo.setnchannels(nchannels) fo.setframerate(framerate) fo.setsampwidth(sampwidth) fo.setnframes(nframes) fo.writeframes(new_str_data) fo.close()
本博客所有内容是原创,未经书面许可,严禁任何形式的转载
http://blog.csdn.net/u010255642
python 产生声音的正弦波并叠加>>> runfile(r'K:\book_prog\audio_hy.py', wdir=r'K:\book_prog') http://blog.csdn.net/myhaspl myhaspl@qq.com
working...
generate wav data....
save new wav files....
相关文章推荐
- python手记(50)
- python手记(20)
- python 手记9 〖笨方法学python习题30〗
- python手记(21)
- 50 of the most important python module
- Learn Python The Hard Way学习(50) - 你的第一个网站
- Python学习手记 pt3 控制流
- python手记(38)
- R-FCN+ResNet-50训练自己的数据集模型(python版本)
- python 手记11 『笨方法学python 习题32』
- python编码错误UnicodeDecodeError: ‘ascii’/'utf-8′ codec can’t decode byte 0xb8 in position 50: ord
- python手记(18)
- Python爬虫 ————POST请求有道翻译{"errorcode":50}
- 50 行 Python 代码构建一个区块链
- Python学习手记——Whetting your appetite
- Python学习手记 pt4 函数
- python手记(31)
- python手记(46)
- python手记(44)