您好,登錄后才能下訂單哦!
這篇文章運用簡單易懂的例子給大家介紹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()
關于python實現對批量WAV音頻進行等長分割就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。