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实现远程调用MetaSploit的方法
Aug 22 Python
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
python利用OpenCV2实现人脸检测
Apr 16 Python
Python实现自动上京东抢手机
Feb 06 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
python实现RabbitMQ的消息队列的示例代码
Nov 08 Python
python DataFrame转dict字典过程详解
Dec 26 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
Feb 03 Python
Python库安装速度过慢解决方案
Jul 14 Python
python 监控logcat关键字功能
Sep 04 Python
Python eval函数原理及用法解析
Nov 14 Python
Python 处理表格进行成绩排序的操作代码
Jul 26 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
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
用php获取本周,上周,本月,上月,本季度日期的代码
2009/08/05 PHP
php 生成随机验证码图片代码
2010/02/08 PHP
laravel异步监控定时调度器实例详解
2019/06/21 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
jQuery 核心函数以及jQuery对象
2010/03/23 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
JS实现颜色梯度与渐变效果完整实例
2016/12/30 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
Angular2使用vscode断点调试ts文件的方法
2017/12/13 Javascript
JavaScript引用类型Function实例详解
2018/08/09 Javascript
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
原生js实现滑块区间组件
2021/01/20 Javascript
Python Django使用forms来实现评论功能
2016/08/17 Python
Python绘制七段数码管实例代码
2017/12/20 Python
查看python下OpenCV版本的方法
2018/08/03 Python
NumPy 基本切片和索引的具体使用方法
2019/04/24 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
C#实现对任一张表的数据进行增,删,改,查要求,运用Webservice,体现出三层架构
2014/07/11 面试题
Laravel的加密解密与哈希实例讲解
2021/03/24 PHP
入党自我鉴定范文
2013/10/04 职场文书
个人承诺书
2014/03/26 职场文书
在校实习生求职信
2014/06/18 职场文书
2015年纪委工作总结
2015/05/13 职场文书
读书笔记怎么写
2015/07/01 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
python 实现的截屏工具
2021/05/08 Python