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 13 Python
python 队列详解及实例代码
Oct 18 Python
Python正则表达式分组概念与用法详解
Jun 24 Python
Python中按值来获取指定的键
Mar 04 Python
python3的print()函数的用法图文讲解
Jul 16 Python
python切片(获取一个子列表(数组))详解
Aug 09 Python
Python (Win)readline和tab补全的安装方法
Aug 27 Python
解决Django连接db遇到的问题
Aug 29 Python
基于Python实现剪切板实时监控方法解析
Sep 11 Python
Python对接 xray 和微信实现自动告警
Sep 17 Python
python:删除离群值操作(每一行为一类数据)
Jun 08 Python
Python 阶乘详解
Oct 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
Protoss兵种介绍
2020/03/14 星际争霸
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
php获取一个变量的名字的方法
2014/09/05 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
javascript格式化指定日期对象的方法
2015/04/21 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
JS高仿抛物线加入购物车特效实现代码
2017/02/20 Javascript
Bootstrap笔记之缩略图、警告框实例详解
2017/03/09 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
使用vue + less 实现简单换肤功能的示例
2018/02/21 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
2018/05/30 Javascript
Python 查看文件的读写权限方法
2018/01/23 Python
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
Django models filter筛选条件详解
2020/03/16 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
HTML5安全介绍之内容安全策略(CSP)简介
2012/07/10 HTML / CSS
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
毕业生自荐书模版
2014/01/04 职场文书
勾股定理课后反思
2014/04/26 职场文书
货物运输服务质量承诺书
2014/05/29 职场文书
销售员岗位职责
2014/06/09 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
党风廉政建设心得体会
2019/05/21 职场文书
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL
利用JavaScript写一个简单计算器
2021/11/27 Javascript
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js