python手记(50)
#!/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的50个模块,满足你各种需要
Python具有强大的扩展能力,我列出了50个很棒的Python模块,包含几乎所有的需要:比如Databases,GUIs,Images, Sound, OS interaction, Web,以及其 ...
- python手记(46)
#!/usr/bin/env python # -*- coding: utf-8 -*- #http://blog.csdn.net/myhaspl #code:myhaspl@qq.com ...
- python手记(26)
#!/usr/bin/env python import cv2 import sys fn="test2.jpg" if __name__ == '__main__': prin ...
- python手记(32)
#!/usr/bin/env python #-*- coding: utf-8 -*- import cv2 import numpy as np fn="test2.jpg" ...
- python手记(30)
#!/usr/bin/env python #-*- coding: utf-8 -*- import cv2 import numpy as np fn="test3.png" ...
- python手记(31)
#!/usr/bin/env python #-*- coding: utf-8 -*- import cv2 import numpy as np fn="test2.jpg" ...
- python手记(38)
runfile(r'K:\testpro\testopencv.py', wdir=r'K:\testpro') http://blog.csdn.net/myhaspl myhaspl@qq.com ...
- python手记(39)
#!/usr/bin/env python #-*- coding: utf-8 -*- #code:myhaspl@qq.com import cv2 import numpy as np fn=& ...
- python手记(45)
python 声音编辑,减少音量 #!/usr/bin/env python # -*- coding: utf-8 -*- #http://blog.csdn.net/myhaspl #code:m ...
随机推荐
- web服务器分析与设计(四)
上篇已经开始了系统内部的分析,并且得到一些分析对象.在整个动作场景中,我们得到了一些粗略的对象.有必要对对象进行分析,合并,再抽象. 实质是职责的合理分配,使得系统合乎功能性,同时得到最大的可扩展,可 ...
- 在Ubuntu6.06 在搭建SVN服务器及在windows建立svn+ssh客户端 (续)
接上篇.本篇主要介绍windows下建立svn+ssh客户端. 9.在windows下安装svn客户端,则需安装“TortoiseSVN”.“Puttygen”和“Pageant” 9.1.下载 ...
- 一个谷粉和3年的Google Reader重度使用者的碎碎念
2013-03-14 上午看到Andy Rubin辞去Android业务主管职务.由Chrome及应用高级副总裁继任的新闻,还在想这会给Android带来什么,中午刷微博的时候就挨了当头一棒:Goog ...
- 机器学习----分布问题(二元,多元变量分布,Beta,Dir)
这涉及到数学的概率问题. 二元变量分布: 伯努利分布,就是0-1分布(比如一次抛硬币,正面朝上概率) 那么一次抛硬币的概率分布如下: 假设训练数据如下: 那么根据最大似然估计(MLE ...
- 转】Maven学习总结(三)——使用Maven构建项目
原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4240930.html 感谢! maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使 ...
- Base64编解码(C++版)
#include <string> using namespace std; class ZBase64 { public: /*编码 DataByte [ ...
- homework-1
看到这个题目开始我只能想到动态规划四个字,但具体采用什么方法,如何写成代码却还未成型.动态规划的典型特点就是利用之前的结果.于是我很快想到了之前一个比较典型的小程序,即求最长的连续字符串.这两个题目有 ...
- [iOS 多线程 & 网络 - 2.9] - ASI框架
A.ASI基本知识 1.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大. ASI的实现基于底层的CFNetwork框架,因此运行效率很高. ASI的g ...
- [iOS UI进阶 - 0] Quiartz2D
A.简介 1. 需要掌握的 drawRect:方法的使用 常见图形的绘制:线条.多边形.圆 绘图状态的设置:文字颜色.线宽等 图形上下文状态的保存与恢复 图形上下文栈 1.基本图形绘制* 线段(线宽. ...
- ucGUI例程收藏
ucGUI 几个重要例程Demo 按钮的定制 #include <stddef.h> #include <string.h> #include "WM.h&quo ...