python对批量WAV音频进行等长分割的方法实现
程序员文章站
2022-07-06 15:55:32
对批量wav音频进行等长分割对wav格式的音频以相同长度进行分割。import osimport waveimport numpy as npimport pylab as pltimport lib...
对批量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等长分割内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!