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在控制台输出进度条的方法
Jun 20 Python
bpython 功能强大的Python shell
Feb 16 Python
python中的计时器timeit的使用方法
Oct 20 Python
利用 python 对目录下的文件进行过滤删除
Dec 27 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
Feb 03 Python
对python中的 os.mkdir和os.mkdirs详解
Oct 16 Python
python利用requests库模拟post请求时json的使用教程
Dec 07 Python
python的一些加密方法及python 加密模块
Jul 11 Python
django搭建项目配置环境和创建表过程详解
Jul 22 Python
python使用numpy实现直方图反向投影示例
Jan 17 Python
python 使用while循环输出*组成的菱形实例
Apr 12 Python
python MD5加密的示例
Oct 19 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在程序中将网页生成word文档并提供下载的代码
2012/10/09 PHP
Thinkphp中的curd应用实用要点
2015/01/04 PHP
thinkPHP学习笔记之安装配置篇
2015/03/05 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
理解jQuery stop()方法
2014/11/21 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
创建一般js对象的几种方式
2017/01/19 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
2017/06/09 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
vue 进阶之实现父子组件间的传值
2019/04/26 Javascript
小程序云开发实现数据库异步操作同步化
2019/05/18 Javascript
构建Vue大型应用的10个最佳实践(小结)
2019/11/07 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
对于Python中线程问题的简单讲解
2015/04/03 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
为什么说python适合写爬虫
2020/06/11 Python
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
Madda Fella官网:美国冒险家服装品牌
2020/01/16 全球购物
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
小学生新年寄语
2014/04/03 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
网络文明传播志愿者活动方案
2014/08/20 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
2021/06/09 Python