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插入数据到列表的方法
Apr 30 Python
python直接访问私有属性的简单方法
Jul 25 Python
python Crypto模块的安装与使用方法
Dec 21 Python
Python制作豆瓣图片的爬虫
Dec 28 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
小白如何入门Python? 制作一个网站为例
Mar 06 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
Dec 02 Python
python3.x实现base64加密和解密
Mar 28 Python
Python TCP通信客户端服务端代码实例
Nov 21 Python
Python操作Sonqube API获取检测结果并打印过程解析
Nov 27 Python
python判断一个变量是否已经设置的方法
Aug 13 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
Nov 05 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
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
PHP合并discuz用户脚本的方法
2015/08/04 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
PHP接口继承及接口多继承原理与实现方法详解
2017/10/18 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
在网页里看flash的trace数据的js类
2009/01/10 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
2015/01/02 Javascript
javascript实现checkbox全选的代码
2015/04/30 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
Javascript 严格模式use strict详解
2017/09/16 Javascript
关于vue单文件中引用路径的处理方法
2018/01/08 Javascript
JavaScript数组去重的几种方法
2019/04/07 Javascript
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
JS JQuery获取data-*属性值方法解析
2020/09/01 jQuery
基于vue+echarts数据可视化大屏展示的实现
2020/12/25 Vue.js
JavaScript实现消消乐的源代码
2021/01/12 Javascript
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
Flask框架中密码的加盐哈希加密和验证功能的用法详解
2016/06/07 Python
python的构建工具setup.py的方法使用示例
2017/10/23 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
对Django中内置的User模型实例详解
2019/08/16 Python
python实现批量文件重命名
2019/10/31 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
苹果香港官方商城:Apple香港
2016/09/14 全球购物
屈臣氏菲律宾官网:Watsons菲律宾
2020/06/30 全球购物
大队干部竞选演讲稿
2014/04/28 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
项目备案申请报告
2015/05/15 职场文书
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers