2021-03-17
閱讀量:
1713
如何獲取一個(gè)wav文件的總時(shí)長(zhǎng)?如何將一個(gè)wav文件切成時(shí)長(zhǎng)比較均勻的指定個(gè)數(shù)的wav文件
如何獲取一個(gè)wav文件的總時(shí)長(zhǎng)?如何將一個(gè)wav文件切成時(shí)長(zhǎng)比較均勻的指定個(gè)數(shù)的wav文件
import wave from pydub import AudioSegment #生成一個(gè)python和wav文件的通道 f = wave.open("D:\\Chapter 1 數(shù)據(jù)挖掘概要.wav","rb") f.getparams() ''' 返回的結(jié)果是: Out[12]: _wave_params(nchannels=2, sampwidth=2, framerate=44100, nframes=95693824, comptype='NONE', compname='not compressed') 其中framerate是幀率(fps),也就是每秒的幀數(shù), nframes是文件總幀數(shù) 比如說(shuō)總幀數(shù)是100幀,每秒的幀數(shù)是10,那么這個(gè)文件的時(shí)長(zhǎng)就是100/10=10秒。 ''' # 接下來(lái)我們獲取音頻時(shí)長(zhǎng)# 返回的是wav文件的秒數(shù) timelength=int(f.getparams()[3]/f.getparams()[2]) #也可以像下面這樣寫 #timelength=int(f.getparams().nframes/f.getparams().framerate) print("該wav文件的總時(shí)長(zhǎng)是:",timelength,"秒",sep="") # 由于我們的wav文件比較大,我們將其切分為若干個(gè)wav文件 readaudio=AudioSegment.from_wav("D:\\Chapter 1 數(shù)據(jù)挖掘概要.wav") #讀取一個(gè)wav文件的數(shù)據(jù) #計(jì)算如果60秒一個(gè)文件的話,大概需要切分成多少個(gè)文件 efs=60 kn=int(timelength/efs)+1# print("一共需要生成",kn,"個(gè)文件",sep="") for i in range(kn): readaudio[i*efs*1000:((i+1)*efs+2)*1000].export(r'D:\chapter1\speech%d.wav'%(i+1), format="wav") #這里加上2的意思,就是加上兩秒的意思, #比如當(dāng)i等于1是就是說(shuō)第一個(gè)切分文件是從0秒開(kāi)始62秒結(jié)束,也就是大概0-62秒 #比如當(dāng)i等于2是就是說(shuō)第一個(gè)切分文件是從60秒開(kāi)始122秒結(jié)束,也就是大概60-122秒 #之所以加上兩秒是為了讓每個(gè)音頻文件的尾部和下一個(gè)音頻文件的首部有所重疊,以免音頻遺漏。






評(píng)論(0)


暫無(wú)數(shù)據(jù)
CDA考試動(dòng)態(tài)
CDA報(bào)考指南
推薦帖子
0條評(píng)論
0條評(píng)論
0條評(píng)論
0條評(píng)論