欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python對批量WAV音頻進行等長分割的方法實現(xiàn)

 更新時間:2020年09月25日 11:33:05   作者:養(yǎng)只小刺猬吧  
這篇文章主要介紹了python對批量WAV音頻進行等長分割的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

對批量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] #聲道數(shù), 量化位數(shù), 采樣頻率, 采樣點數(shù)  
    str_data = f.readframes(nframes)
    f.close()
   
    wave_data = np.frombuffer(str_data, dtype=np.short)
    #根據聲道數(shù)對音頻進行轉換
    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 #音頻片段數(shù)
    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')
      # 配置聲道數(shù)、量化位數(shù)和取樣頻率
      f.setnchannels(nchannels)
      f.setsampwidth(sampwidth)
      f.setframerate(framerate)
      f.writeframes(temp_dataTemp.tostring()) # 將wav_data轉換為二進制數(shù)據寫入文件
      f.close()
      
if __name__ == '__main__' :
  CutAudios()

到此這篇關于python對批量WAV音頻進行等長分割的方法實現(xiàn)的文章就介紹到這了,更多相關python WAV等長分割內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論