#!/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...' def wavechange(x,dwmax,dwmin):
if x!=0:
if abs(x)>dwmax:
x=x/abs(x)*dwmax
elif abs(x)<dwmin:
x=x/abs(x)*dwmin
else:
x=x*1.5
return x # 打开WAV文档
f = wave.open(r"speak.wav", "rb")
fo = wave.open(r"jg.wav", "wb")
# 读取波形数据
# (nchannels, sampwidth, framerate, nframes, comptype, compname)
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
print "read wav data...."
str_data = f.readframes(nframes) #将波形数据转换为数组,并更改
print "update wav data...."
wave_data = np.fromstring(str_data, dtype=np.short)
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
str_data = f.readframes(nframes) #放大声音
change_dwmax=wave_data.max()/100*88
change_dwmin=wave_data.max()/100*14
wave_change = np.frompyfunc(wavechange,3,1)
new_wave_data =wave_change(wave_data,change_dwmax,change_dwmin)
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)")
pl.show() # 绘制波形
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声音处理,放大声音

将2声道的声音数据同时乘以一个大于1的实数

最新文章

  1. Mongo中append方法使用
  2. RabbitMQ学习笔记4-使用fanout交换器
  3. Linux 下多核CPU知识【转】
  4. tyvj1014 - 乘法游戏 ——记忆化搜索DP
  5. 函数buf_page_get_gen
  6. Scala Java Error: value filter is not a member of *
  7. nRF52系列——nRF52832来袭
  8. 用wpf实现了多个excel文件的合并
  9. 仅仅需手动添加一行代码就可以让Laravel4执行在SAE (v. 1.0.0)
  10. 第13章 Linux的网络管理
  11. 为什么Elasticsearch查询变得这么慢了?
  12. [No0000189]改善C#程序的建议10:用Parallel简化Task
  13. LINUX环境变量(二)
  14. “秒杀”问题的数据库和SQL设计【转载】
  15. mysql只读模式的设置方法与实验【转】
  16. codevs 1365 浴火银河星际跳跃
  17. poj1611---The Suspects
  18. 7z 7zip 日期、时间,文件名
  19. directorjs和requirejs和artTemplate模板引擒建立的SPA框架
  20. HWOJ-求字符串最后一个单词的长度

热门文章

  1. 团队介绍 | 魅动 Magic Motion
  2. 精通CSS+DIV基础总结(二)
  3. dev grdicontrol 根据条件改变行颜色,字体颜色等
  4. 关于Latch
  5. CLR via C# - 基础拾遗
  6. VS2012 运行项目在IE中可以运行,但是在google和firefox却不能打开。
  7. im2uint8函数分析
  8. YUI的类型判断函数
  9. mysql按月,按日分组统计数据
  10. mysql创建存储过程