Python3分析处理声音数据的例子


Posted in Python onAugust 27, 2019

将音频文件拷贝到程序所在目录即可。

如下所示:

#!/usr/bin/env python
# encoding: utf-8
"""
@Company:华中科技大学电气学院聚变与等离子研究所
@version: V1.0
@author: Victor
@contact: 1650996069@qq.com or yexin@hust.edu.cn 2018--2020
@software: PyCharm
@file: VoiceDataProcessing.py
@time: 2018/9/8 13:08
@Desc:处理声音数据
"""
 
import wave
import pylab as pl
import numpy as np
 
print('1650996069@qq.com or yexin@hust.edu.cn')
 
print('working...')
 
print("read wav data....")
# 打开WAV文档,声音文件
f = wave.open(r"speak.wav", "rb")
fo = wave.open(r"jg.wav", "wb")
fi = wave.open(r"back.wav", "rb")
 
# 读取波形数据
# (nchannels, sampwidth, framerate, nframes, comptype, compname)
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
str_data = f.readframes(nframes)
 
fi_params = fi.getparams()
fi_nframes = fi_params[3]
fi_str_data = fi.readframes(fi_nframes)
 
# 将波形数据转换为数组,并更改
print("update wav data....")
wave_data = np.fromstring(str_data, dtype=np.short)
fi_wave_data = np.fromstring(fi_str_data, dtype=np.short)
 
# 复制并合并声音
new_wave_data = np.hstack((wave_data, wave_data, wave_data, wave_data, wave_data, wave_data, wave_data, wave_data))
temp_wavedata = fi_wave_data[:len(new_wave_data)]
new_wave_data = temp_wavedata * 0.5 + new_wave_data * 0.5
 
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)")
pl.show()
 
# 绘制波形
new_wave_data.shape = -1, 2
new_wave_data = new_wave_data.T
new_time = np.arange(0, nframes * 8) * (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()

以上这篇Python3分析处理声音数据的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用SAX解析xml实例
Nov 21 Python
使用PyCharm配合部署Python的Django框架的配置纪实
Nov 19 Python
实例讲解Python设计模式编程之工厂方法模式的使用
Mar 02 Python
深入理解python对json的操作总结
Jan 05 Python
Python中%r和%s的详解及区别
Mar 16 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
Nov 23 Python
Python堆排序原理与实现方法详解
May 11 Python
浅谈python 中类属性共享的问题
Jul 02 Python
python实现在函数中修改变量值的方法
Jul 16 Python
Python matplotlib实时画图案例
Apr 23 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
Dec 07 Python
python实现自动清理文件夹旧文件
May 10 Python
python中struct模块之字节型数据的处理方法
Aug 27 #Python
Python的bit_length函数来二进制的位数方法
Aug 27 #Python
使用python将excel数据导入数据库过程详解
Aug 27 #Python
python读取指定字节长度的文本方法
Aug 27 #Python
Django中的cookie和session
Aug 27 #Python
Python3之字节串bytes与字节数组bytearray的使用详解
Aug 27 #Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
Aug 27 #Python
You might like
常用星际术语索引(新手指南)
2020/03/04 星际争霸
PHP将进程作为守护进程的方法
2015/03/19 PHP
PDO::prepare讲解
2019/01/29 PHP
在laravel中实现ORM模型使用第二个数据库设置
2019/10/24 PHP
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
2015/11/24 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
2016/02/25 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
2018/12/03 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
element-ui和vue表单(对话框)验证提示语(残留)清除操作
2020/09/11 Javascript
PHP webshell检查工具 python实现代码
2009/09/15 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
selenium获取当前页面的url、源码、title的方法
2019/06/12 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
2019/09/05 Python
python集合删除多种方法详解
2020/02/10 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
Python requests设置代理的方法步骤
2020/02/23 Python
python3访问字典里的值实例方法
2020/11/18 Python
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
Aerosoles爱柔仕官网:美国舒软女鞋品牌
2017/07/17 全球购物
报社实习生自荐信
2014/01/24 职场文书
金融管理专业毕业生求职信
2014/03/12 职场文书
审计专业自荐信范文
2014/04/21 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
病危通知单
2015/04/17 职场文书