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(一)Python环境安装
Aug 20 Python
Python中__new__与__init__方法的区别详解
May 04 Python
Python 功能和特点(新手必学)
Dec 30 Python
30秒轻松实现TensorFlow物体检测
Mar 14 Python
python爬虫的数据库连接问题【推荐】
Jun 25 Python
Python走楼梯问题解决方法示例
Jul 25 Python
python 搜索大文件的实例代码
Jul 08 Python
python tkinter图形界面代码统计工具(更新)
Sep 18 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
Oct 17 Python
基于Django实现日志记录报错信息
Dec 17 Python
Python中如何添加自定义模块
Jun 09 Python
Python爬虫回测股票的实例讲解
Jan 22 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/04/22 PHP
PHP中usort在值相同时改变原始位置问题的解决方法
2011/11/27 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
php 解压rar文件及zip文件的方法
2014/05/05 PHP
javascript基础知识大集锦(二) 推荐收藏
2011/01/13 Javascript
拥抱模块化的JavaScript
2012/03/07 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
Node.js 异步编程之 Callback介绍(一)
2015/03/30 Javascript
javascript中return,return true,return false三者的用法及区别
2015/11/17 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
《Python之禅》中对于Python编程过程中的一些建议
2015/04/03 Python
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
CentOS 6.5中安装Python 3.6.2的方法步骤
2017/12/03 Python
Python tkinter label 更新方法
2018/10/11 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
EJB的基本架构
2016/09/22 面试题
成教毕业生自我鉴定
2013/10/23 职场文书
电工工作职责范本
2014/02/22 职场文书
家长会演讲稿
2014/04/26 职场文书
大学生自我推荐信范文
2015/03/24 职场文书
2016教师节感恩话语
2015/12/09 职场文书
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript