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中使用bidict模块双向字典结构的奇技淫巧
Jul 12 Python
20招让你的Python飞起来!
Sep 27 Python
Python+OpenCV人脸检测原理及示例详解
Oct 19 Python
python中的二维列表实例详解
Jun 19 Python
python实现自动登录后台管理系统
Oct 18 Python
python绘制热力图heatmap
Mar 23 Python
python学生管理系统学习笔记
Mar 19 Python
Django模型序列化返回自然主键值示例代码
Jun 12 Python
python顺序执行多个py文件的方法
Jun 29 Python
pycharm创建scrapy项目教程及遇到的坑解析
Aug 15 Python
tensorflow指定CPU与GPU运算的方法实现
Apr 21 Python
Python使用Matlab命令过程解析
Jun 04 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获取表单中多个同名input元素的值
2014/03/20 PHP
php中实现精确设置session过期时间的方法
2014/07/17 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
Yii清理缓存的方法
2016/01/06 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
JS操作JSON要领详细总结
2013/08/25 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
Webpack中publicPath路径问题详解
2018/05/03 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
JS实现移动端点击按钮复制文本内容
2019/07/28 Javascript
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
[02:41]2015国际邀请赛中国区预选赛观战指南
2015/05/20 DOTA
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
python用10行代码实现对黄色图片的检测功能
2015/08/10 Python
Python的Tornado框架实现异步非阻塞访问数据库的示例
2016/06/30 Python
python获取点击的坐标画图形的方法
2019/07/09 Python
python语言是免费还是收费的?
2020/06/15 Python
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
业务助理岗位职责
2013/11/18 职场文书
消防器材管理制度
2014/01/28 职场文书
三查三看党性分析材料
2014/02/18 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
乌镇导游词
2015/02/02 职场文书
《传颂之物 虚伪的假面》BD发售宣传CM公开
2022/04/04 日漫