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


猜你喜欢
- 1.下载python2.7.xwget https://www.python.org/ftp/python/2.7.6/Python-2.7
- openpyxl 的用法实例1.1 Openpyxl 库的安装使用openpyxl 模块是一个读写 Excel 2010 文档的 Pytho
- 公司技术背景:数据库访问类(xxx.DataBase.Dll)调用存储过程实现数据库的访问。技术方案一:压缩时间下程序员写出的第一个版本,仅
- 一直有耳闻MySQL5.5的性能非常NB,所以近期打算测试一下,方便的时候就把bbs.kaoyan.com升级到这个版本的数据库。今天正好看
- 声明:请事先到官网下载echarts,另外本文引用了adminlte模板构建前台页面views:<!-- /.row --> &
- 一行命令搭建一个基于python的http文件传输服务由于今天朋友想要一个文件,而我恰好有,因为这个文件比较大,网速不是很给力,所以想到了p
- pandas DataFrame数据遍历读取csv内容,格式与数据类型如下data = pd.read_csv('save\LH88
- 本文实例讲述了Flask框架学习笔记之消息提示与异常处理操作。分享给大家供大家参考,具体如下:flask通过flash方法来显示提示消息:f
- 前言今天给大家分享一些Python的基础知识,想要盖好大房子,不把地基打扎实打牢怎么行呢?所以,今天咱们就来学习基础知识,这样后期学习Pyt
- 前提准备:1.使用python requests模块2.了解json3.zabbix api的具体调用建议先浏览一下官网先上代码:impor
- Ruby Marshal序列化Marshal是Ruby的核心库,可以将一些对象以二进制的方式序列化保存到文件中,需要时再从文件中加载重新构建
- tensorflow模型保存为saver = tf.train.Saver()函数,saver.save()保存模型,代码如下:import
- 以下为引用的内容: <html> <head> <title>不刷新页面查询的方法&
- 时间处理是我们日常开发中最最常见的需求,例如:获取当前datetime、获取当天date、获取明天/前N天、获取当天开始和结束时
- MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理
- 需求: 一台机器上有多个网卡, 如何访问指定的 URL 时使用指定的网卡发送数据呢?$ curl --interface eth0 www.
- 前言:整型是MySQL中最常用的字段类型之一,通常用于存储整数,其中int是整型中最常用的,对于int类型你是否真正了解呢?本文会带你熟悉i
- cs页面调用代码: public int TotalPage = 0; public int PageCurrent = 1; public
- 将Python数据类型转换为其他代码格式叫做(序列化),而json就是在各个代码实现转换的中间件。序列化要求:1. 只能有int,str,b
- 新安装的MySQL5.7,登录时提示密码错误,安装的时候并没有更改密码,后来通过免密码登录的方式更改密码,输入update mysql.us