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通过ftplib登录到ftp服务器的方法
May 08 Python
python如何通过protobuf实现rpc
Mar 06 Python
Python 调用Java实例详解
Jun 02 Python
python中实现k-means聚类算法详解
Nov 11 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
Python用5行代码写一个自定义简单二维码
Oct 21 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
Django框架中间件定义与使用方法案例分析
Nov 28 Python
解决Pycharm的项目目录突然消失的问题
Jan 20 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
Django choices下拉列表绑定实例
Mar 13 Python
python3.7.3版本和django2.2.3版本是否可以兼容
Sep 01 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中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
PHP调试及性能分析工具Xdebug详解
2017/02/09 PHP
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
2016/12/12 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
redux中间件之redux-thunk的具体使用
2018/04/17 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
vue实现与安卓、IOS交互的方法
2018/11/02 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
wxPython实现列表增删改查功能
2019/11/19 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
python 字典item与iteritems的区别详解
2020/04/25 Python
HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线
2015/01/01 HTML / CSS
狗狗玩具、零食和咀嚼物的月度送货服务:Super Chewer
2018/08/22 全球购物
会计与审计专业大专生求职信
2013/10/03 职场文书
校领导推荐信
2013/11/01 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
课例研修方案
2014/05/31 职场文书
2015出纳试用期工作总结
2014/12/12 职场文书
年底个人总结范文
2015/03/10 职场文书
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis
Python实现批量将文件复制到新的目录中再修改名称
2022/04/12 Python