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算法学习之基数排序实例
Dec 18 Python
详解python函数传参是传值还是传引用
Jan 16 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
python3.6使用urllib完成下载的实例
Dec 19 Python
Python with用法:自动关闭文件进程
Jul 10 Python
对django layer弹窗组件的使用详解
Aug 31 Python
python轮询机制控制led实例
May 03 Python
PyQt5实现登录页面
May 30 Python
pycharm远程连接服务器并配置python interpreter的方法
Dec 23 Python
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
Apr 12 Python
Python实现Excel文件的合并(以新冠疫情数据为例)
Mar 20 Python
在Python 中将类对象序列化为JSON
Apr 06 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
用来解析.htgroup文件的PHP类
2012/09/05 PHP
php事件驱动化设计详解
2016/11/10 PHP
php正则修正符用法实例详解
2016/12/29 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
HTML代码中标签的全部属性 中文注释说明
2009/03/26 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
2012/10/12 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
简单常用的幻灯片播放实现代码
2013/09/25 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
2014/10/09 Javascript
jquery操作 iframe的方法
2014/12/03 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
angular十大常见问题
2017/03/07 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
js 实现ajax发送步骤过程详解
2019/07/25 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
Python操作csv文件实例详解
2017/07/31 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
浅谈Python中的私有变量
2018/02/28 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
Python使用正则实现计算字符串算式
2019/12/29 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
SQL Server笔试题
2012/01/10 面试题
自主招生自荐书
2013/11/29 职场文书
现场施工员岗位职责
2014/03/10 职场文书
股权投资意向书
2014/04/01 职场文书
汽车专业求职信
2014/06/05 职场文书
土建工程师岗位职责
2014/06/10 职场文书
给领导的感谢信范文
2015/01/23 职场文书
挂职个人工作总结
2015/03/05 职场文书
烈士陵园观后感
2015/06/08 职场文书
MySQL触发器的使用
2021/05/24 MySQL