博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python手记(50)
阅读量:5322 次
发布时间:2019-06-14

本文共 2302 字,大约阅读时间需要 7 分钟。

#!/usr/bin/env python  # -*- coding: utf-8 -*-#http://blog.csdn.net/myhaspl  #code:myhaspl@qq.com import waveimport pylab as plimport numpy as npprint '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.pifor curpos in xrange(0,nframes):    possamp=np.sin((curpos/samplepercycle)*maxcycle)    sampleval=int(max_amplitude*possamp)    wave_data[curpos]=samplevalstr_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.pifor 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, 2wave_data = wave_data.Tnew_wave_data.shape = -1, 2new_wave_data = new_wave_data.Ttime = 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()

 

本博客所有内容是原创,未经书面许可,严禁任何形式的转载

 

 

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....

 

转载于:https://www.cnblogs.com/suncoolcat/p/3290036.html

你可能感兴趣的文章
java.lang.OutOfMemoryError异常解决方法
查看>>
Css让文字自适应Table宽度[转]
查看>>
[Javascript] Flattening nested arrays: a little exercise in functional refactoring
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
使用maven构建多模块项目,分块开发
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
jffs2镜像制作
查看>>
windows编程ASCII问题
查看>>
.net webService代理类
查看>>
C#高级编程笔记(一)
查看>>
工作时如何利用空闲时间熟悉项目
查看>>
大道至简第五章读后感
查看>>
Code Snippet
查看>>
MFC模态对话框程序不响应OnIdle
查看>>
Node.js Express项目搭建
查看>>
制作docker sshd镜像
查看>>
hdu 1069 Monkey and Banana
查看>>
zoj 1232 Adventure of Super Mario
查看>>
linux下的命令和常见问题笔记
查看>>
ci框架里rewrite示例
查看>>