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中设置变量作为默认值时容易遇到的错误
Apr 03 Python
剖析Python的Twisted框架的核心特性
May 25 Python
动感网页相册 python编写简单文件夹内图片浏览工具
Aug 17 Python
Django 使用logging打印日志的实例
Apr 28 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
Jun 26 Python
python隐藏终端执行cmd命令的方法
Jun 24 Python
python 计算数据偏差和峰度的方法
Jun 29 Python
Pytorch加载部分预训练模型的参数实例
Aug 18 Python
python字符串的拼接方法总结
Nov 18 Python
简单了解python装饰器原理及使用方法
Dec 18 Python
python tkinter之 复选、文本、下拉的实现
Mar 04 Python
记录一下scrapy中settings的一些配置小结
Sep 28 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
PHP中Http协议post请求参数
2015/11/02 PHP
让textarea控件的滚动条怎是位与最下方
2007/04/20 Javascript
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
javascript 隔行换色函数代码
2010/10/24 Javascript
js控制frameSet示例
2013/09/10 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
Javascript 学习笔记之 对象篇(二) : 原型对象
2014/06/24 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
2020/10/29 Javascript
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
Python中字符串的处理技巧分享
2016/09/17 Python
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
django queryset 去重 .distinct()说明
2020/05/19 Python
在keras 中获取张量 tensor 的维度大小实例
2020/06/10 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
实习协议书范本
2014/04/22 职场文书
实践单位评语
2014/04/26 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
拉贝日记观后感
2015/06/05 职场文书
解除租赁合同协议书
2016/03/21 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS