python对批量WAV音频进行等长分割的方法实现
作者:养只小刺猬吧 发布时间:2023-01-29 18:21:21
标签:python,WAV,音频,等长分割
对批量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()
来源:https://blog.csdn.net/vitA_gsm/article/details/99756032
0
投稿
猜你喜欢
- 一: 基本使用:1:环境的安装:pip install flask-sqlalchemypip install pymysql2:组件初始化
- 本文实例讲述了Python实现列表删除重复元素的三种常用方法。分享给大家供大家参考,具体如下:给定一个列表,要求删除列表中重复元素。list
- 本文实例讲述了Python中super函数用法。分享给大家供大家参考,具体如下:这是个高大上的函数,在python装13手册里面介绍过多使用
- WxPython界面用pubsub实现多线程控制用WxPython做界面时, 如果数据操作时间比较长,会使 WxPython 界面处于假死状
- 本文实例讲述了Golang算法问题之数组按指定规则排序的方法。分享给大家供大家参考,具体如下:给出一个二维数组,请将这个二维数组按第i列(i
- 1.如何通过地址栏参数来得到模块名称和控制器名称(即使在有路由和开了重写模块的情况下)2.tp是如何实现前置,后置方 * 能模块,和如何执行带
- 代码如下:declare @Q_ID uniqueidentifier set @Q_ID = dbo.uf_GetParamValueBy
- 介绍毫无疑问,任何一个试图使用 CSS 的网页设计师和开发人员都会发现不同的浏览器要求不同的样式声明。这些烦恼归咎于各浏览器及其各版本不同程
- 说明:最近在B站看一些材料力学视频时候,感觉有一些分集狂魔的分集真的很恐怖,有的甚至上百集,因此决定写个小脚本每次分析下到底这个系列视频到底
- TF-IDF(term frequency–inverse document frequency)是一种用于信息检索(information
- python有时候需要清除字符串前后空格,而字符本身的空格不需要清除掉,那就不能用正则re.sub来实现。这时用到strip()函数用法:s
- 最近一直在用TF做CNN的图像分类,当softmax层得到预测结果后,我希望能够看到预测结果,以便和标签之间进行比较。特此补上,以便自己记忆
- 上个星期,大佬分享了一个验证身份证号合法性的库:id_validator,没空去试着用一下看看,今天有点时间,来试着用下这个库。1、首先,要
- 2020.3.7准备scrapy,使用anaconda创建一个新的环境,执行“conda create -n scrapyEnv pytho
- 对于刚刚学习编程的同学来说对编程是非常陌生的,对很多的代码也是非常陌生,高中忙于学习的我们甚至可以说是对编程是一无所知,进入大学进入到这个专
- 一、config.ini 配置文件[DATABASE]host = 192.1.1.1username = rootpassword = r
- 一、问题说明首先,运行下述代码,复现问题:# -*-coding:utf-8-*-import reimport requestsfrom
- 在python的变量使用中,有时候会赋予多个值一起使用,相信很多人一般都是添加一个值,对于这种多个赋值还没有接触过,其实这是python高级
- 核心思想在defer出现的地方插入了指令CALL runtime.deferproc,在函数返回的地方插入了CALL runtime.def
- 1.引言创建命令行程序很棒:命令行可以按照我们的设定完成相应的工作,相比GUI界面程序,无需花费数小时尝试使 GUI 正常工作。但有时最好有