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通过ElementTree操作XML获取结点读取属性美化XML
Dec 02 Python
浅析Python中signal包的使用
Nov 13 Python
Python实现的弹球小游戏示例
Aug 01 Python
基于Python的ModbusTCP客户端实现详解
Jul 13 Python
django 环境变量配置过程详解
Aug 06 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
Feb 14 Python
python中安装django模块的方法
Mar 12 Python
Django分组聚合查询实例分享
Apr 29 Python
python使用多线程查询数据库的实现示例
Aug 17 Python
python+flask编写一个简单的登录接口
Nov 13 Python
Python学习之time模块的基本使用
Jan 17 Python
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
Apr 25 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 表单验证实现代码
2009/03/10 PHP
PHP最常用的ini函数分析 针对PHP.ini配置文件
2010/04/22 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
Jquery进度条插件 Progress Bar小问题解决
2011/07/12 Javascript
Knockout visible绑定使用方法
2013/11/15 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
JavaScript实现移动端滑动选择日期功能
2016/06/21 Javascript
类似于QQ的右滑删除效果的实现方法
2016/10/16 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
vuejs实现标签选项卡动态更改css样式的方法
2018/05/31 Javascript
vue框架搭建之axios使用教程
2018/07/11 Javascript
vue自定义底部导航栏Tabbar的实现代码
2018/09/03 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
python计算最小优先级队列代码分享
2013/12/18 Python
感知器基础原理及python实现过程详解
2019/09/30 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
2020/11/28 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
HTML5 Canvas实现平移/放缩/旋转deom示例(附截图)
2013/07/04 HTML / CSS
Jones Bootmaker官网:优质靴子和鞋子在线
2020/11/30 全球购物
Servlet如何得到服务器的信息
2015/12/22 面试题
护理学专业推荐信
2013/12/03 职场文书
大学生党员自我批评
2014/02/14 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
班主任自我评价范文
2015/03/11 职场文书
关于分班的感言
2015/08/04 职场文书
学生会部长竞选稿
2015/11/19 职场文书
MySQL实例精讲单行函数以及字符数学日期流程控制
2021/10/15 MySQL