python对批量WAV音频进行等长分割的方法实现


Posted in Python onSeptember 25, 2020

对批量WAV音频进行等长分割

对WAV格式的音频以相同长度进行分割。

import os
import wave
import numpy as np
import pylab as plt
import librosa

path = r"D:\cutaudio\test"
files = os.listdir(path)
files = [path + "\\" + f for f in files if f.endswith('.wav')]
CutTime = 4 #单位长度4s

def CutAudios():
  for i in range(len(files)):
    FileName = files[i]
    f = wave.open(r"" + FileName, 'rb')
    params = f.getparams() #读取音频文件信息
    nchannels, sampwidth, framerate, nframes = params[:4] #声道数, 量化位数, 采样频率, 采样点数  
    str_data = f.readframes(nframes)
    f.close()
   
    wave_data = np.frombuffer(str_data, dtype=np.short)
    #根据声道数对音频进行转换
    if nchannels > 1:
        wave_data.shape = -1, 2
        wave_data = wave_data.T
        temp_data = wave_data.T
    else:
        wave_data = wave_data.T
        temp_data = wave_data.T

    CutFrameNum = framerate * CutTime 
    Cutnum =nframes/CutFrameNum #音频片段数
    StepNum = int(CutFrameNum)
    StepTotalNum = 0
  
    for j in range(int(Cutnum)):
      FileName = r"D:\cutaudio\11\\" + files[i][-17:-4] +"-"+ str(j) + ".wav"
      temp_dataTemp = temp_data[StepNum * (j):StepNum * (j + 1)]
      StepTotalNum = (j + 1) * StepNum
      temp_dataTemp.shape = 1, -1
      temp_dataTemp = temp_dataTemp.astype(np.short)# 打开WAV文档
      f = wave.open(FileName, 'wb')
      # 配置声道数、量化位数和取样频率
      f.setnchannels(nchannels)
      f.setsampwidth(sampwidth)
      f.setframerate(framerate)
      f.writeframes(temp_dataTemp.tostring()) # 将wav_data转换为二进制数据写入文件
      f.close()
      
if __name__ == '__main__' :
  CutAudios()

到此这篇关于python对批量WAV音频进行等长分割的方法实现的文章就介绍到这了,更多相关python WAV等长分割内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python多线程实例教程
Sep 06 Python
在Lighttpd服务器中运行Django应用的方法
Jul 22 Python
使用Python读取安卓手机的屏幕分辨率方法
Mar 31 Python
Python编程flask使用页面模版的方法
Dec 28 Python
Python Pandas数据中对时间的操作
Jul 30 Python
Python彻底删除文件夹及其子文件方式
Dec 23 Python
Python魔法方法 容器部方法详解
Jan 02 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
Jun 16 Python
python时间time模块处理大全
Oct 25 Python
python 使用tkinter+you-get实现视频下载器
Nov 17 Python
Python虚拟环境virtualenv创建及使用过程图解
Dec 08 Python
Python pandas求方差和标准差的方法实例
Aug 04 Python
python连接mysql数据库并读取数据的实现
Sep 25 #Python
Python3如何使用tabulate打印数据
Sep 25 #Python
如何基于pandas读取csv后合并两个股票
Sep 25 #Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
Sep 25 #Python
python实现人性化显示金额数字实例详解
Sep 25 #Python
python 绘制正态曲线的示例
Sep 24 #Python
Python爬取网页信息的示例
Sep 24 #Python
You might like
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
PHP实现懒加载的方法
2015/03/07 PHP
PHP处理Ajax请求与Ajax跨域问题
2017/02/13 PHP
如何实现动态删除javascript函数
2007/05/27 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
CSS3+JavaScript实现翻页幻灯片效果
2017/06/28 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
Vue.js中该如何自己维护路由跳转记录
2019/05/19 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
[01:20:47]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第一场 1月19日
2021/03/11 DOTA
Python中threading模块join函数用法实例分析
2015/06/04 Python
Python环境变量设置方法
2016/08/28 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
python实现二叉树的遍历
2017/12/11 Python
Python读写docx文件的方法
2018/05/08 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
python 输出所有大小写字母的方法
2019/01/02 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
python实现程序重启和系统重启方式
2020/04/16 Python
python redis存入字典序列化存储教程
2020/07/16 Python
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
英文版网络工程师求职信
2013/10/28 职场文书
读书心得体会
2013/12/28 职场文书
初中三年毕业生的自我评价分享
2014/02/14 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
检讨书之工作不认真
2019/08/14 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python