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 14 Python
python 利用栈和队列模拟递归的过程
May 29 Python
Python简单过滤字母和数字的方法小结
Jan 09 Python
python读写csv文件方法详细总结
Jul 05 Python
python实现简单成绩录入系统
Sep 19 Python
python入门之基础语法学习笔记
Feb 08 Python
Python实现自动访问网页的例子
Feb 21 Python
Django项目uwsgi+Nginx保姆级部署教程实现
Apr 19 Python
python如何进行矩阵运算
Jun 05 Python
解析Python 偏函数用法全方位实现
Jun 26 Python
基于注解实现 SpringBoot 接口防刷的方法
Mar 02 Python
Python中的turtle画箭头,矩形,五角星
Mar 16 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
自己做矿石收音机
2021/03/02 无线电
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
PHP5中使用PDO连接数据库的方法
2010/08/01 PHP
php 中的4种标记风格介绍
2012/05/10 PHP
xml在joomla表单中的应用详解分享
2012/07/19 PHP
php获取网页上所有链接的方法
2015/04/03 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
浅谈PHP eval()函数定义和用法
2016/06/21 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
javascript实现划词标记+划词搜索功能
2007/03/06 Javascript
javascript 打印页面代码
2009/03/24 Javascript
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
JQuery触发radio或checkbox的change事件
2012/12/18 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
javascript实现数字倒计时特效
2016/03/30 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
js中作用域的实例解析
2017/03/16 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
javascript简单写的判断电话号码实例
2017/05/24 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
vue实现动态表格提交参数动态生成控件的操作
2020/11/09 Javascript
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
详解使用 pyenv 管理多个版本 python 环境
2017/10/19 Python
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
三分钟自我介绍演讲稿
2014/08/21 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
医院护士工作检讨书
2014/10/26 职场文书
师德师风主题教育活动总结
2015/05/07 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA