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

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

#!/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分析处理声音数据的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python音频处理用到的操作的示例代码

    前言 本文主要记录python下音频常用的操作,以.wav格式文件为例.其实网上有很多现成的音频工具包,如果仅仅调用,工具包是更方便的. 更多pyton下的操作可以参考: 用python做科学计算 1.批量读取.wav文件名: 这里用到字符串路径: 1.通常意义字符串(str) 2.原始字符串,以大写R 或 小写r开始,r'',不对特殊字符进行转义 3.Unicode字符串,u'' basestring子类 如: path = './file/n' path = r'.\file\n' path

  • Python中音频处理库pydub的使用教程

    前言 pydub是Python中用户处理音频文件的一个库.本文主要介绍了关于Python音频处理库pydub使用的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 安装: 1.安装pip工具:sudo apt-get install python-pip 2.安装pydub:sudo pip install pydub 3.pydub依赖于ffmpeg,所以还需要安装ffmpeg,由于Ubunbtu14.04官方源移除了ffmpeg,因此通过ppa源安装: sudo apt-add-re

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

    将音频文件拷贝到程序所在目录即可. #!/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: 20

  • Python3 中把txt数据文件读入到矩阵中的方法

    1.实例程序: ''' 数据文件:2.txt内容:(以空格分开每个数据) 1 2 2.5 3 4 4 7 8 7 ''' from numpy import * A = zeros((3,3),dtype=float) #先创建一个 3x3的全零方阵A,并且数据的类型设置为float浮点型 f = open('2.txt') #打开数据文件文件 lines = f.readlines() #把全部数据文件读到一个列表lines中 A_row = 0 #表示矩阵的行,从0行开始 for line

  • python3爬虫学习之数据存储txt的案例详解

    上一篇实战爬取知乎热门话题的实战,并且保存为本地的txt文本 先上代码,有很多细节和坑需要规避,弄了两个半小时 import requests import re headers = { "user-agent" : "Mozilla/5.0 (Windows NT 6.1; Win64; x64)" " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari" &quo

  • Python3 文章标题关键字提取的例子

    思路: 1.读取所有文章标题: 2.用"结巴分词"的工具包进行文章标题的词语分割: 3.用"sklearn"的工具包计算Tf-idf(词频-逆文档率); 4.得到满足关键词权重阈值的词 结巴分词详见:结巴分词Github sklearn详见:文本特征提取--4.2.3.4 Tf-idf项加权 import os import jieba import sys from sklearn.feature_extraction.text import TfidfVecto

  • vue 使用鼠标滚动加载数据的例子

    关于用鼠标滚动到某个位置我们就去加载数据,这样的场景与业务需求现在越来越常见,现在来分析下<vue.js 实战>中作者的一个解决策略: 1. 设置一个标志位用来判断数据是否在加载中 2. 将滚动区域设置成 overfow:auto(显示滚动条) 3. 给滚动区域加入监听事件并绑定ref属性 来获取DOM实例 4. 当鼠标滚动到底部时,加载数据 4.1 如果此时 标志位为true则 直接退出,不进行此时数据加载 关键代码如下: <template> //...代码省略 //该div

  • python分析inkscape路径数据方案简单介绍

    目录 前言 inkscape生成路径 将形状转换为路径 python分析svg 前言 开发过程中有时需要使用路径数据,虽然python有自己的svg或其他矢量库,但这里只是出于实验的目的,没必要深入研究,所以采用一些简单的方案:用inkscape生成svg,然后python分析并输出,从而达到相应目的 inkscape生成路径 设置文档属性: 设置网格: 导入png图像作为参考: 注意导入图像.文档属性,都是已左下角为原点: 在图层与对象属性栏,修改图像可见性.锁定图像: 在当前图层之上新建一个

  • python3 pandas 读取MySQL数据和插入的实例

    python 代码如下: # -*- coding:utf-8 -*- import pandas as pd import pymysql import sys from sqlalchemy import create_engine def read_mysql_and_insert(): try: conn = pymysql.connect(host='localhost',user='user1',password='123456',db='test',charset='utf8')

  • Python3 chardet模块查看编码格式的例子

    如下所示: 需要注意的是,如果遇到GBK2312等编码的,在decode和encode时,一律使用GBK进行编码或者解码,这是因为GBK是其他GBK编码的超集,向下兼容所有的GBK编码. 下面是一个例子: #coding=utf-8 import urllib.request import chardet url = 'http://www.baidu.com' a = urllib.request.urlopen(url) ''' chardet模块 使用该模块可以查看字符串的编码格式:cha

  • python3调用windows dos命令的例子

    最近游戏项目在多个国家上线,每个国家都对应两份儿svn目录(一份是本地策划目录,一份是线上目录).于是乎维护变得很烦躁.需要先更新本地策划svn目录,然后把更新的文件拷贝到对应的线上目录,然后提交线上svn目录,然后维护服务器.多个国家就要重复多次类似的更新,拷贝,提交的操作,还要格外注意不能手抖,出现少复制的错误.这种重复的操作很适合写一个工具来完成. 于是考虑使用python来写这个工具,最基本的操作就是使用python调用svn命令.因为windows安装svn后是没有svn命令行的,所以

  • python django 原生sql 获取数据的例子

    如下所示: node2:/django/mysite/blog#cat views.py 1, # -*- coding: utf-8 -*- from __future__ import unicode_literals # from django.shortcuts import render, render_to_response from .models import * # Create your views here. from django.http import HttpResp

随机推荐