ermutuxia

2021-03-17   阅读量: 1186

Python

如何获取一个wav文件的总时长?如何将一个wav文件切成时长比较均匀的指定个数的wav文件

扫码加入数据分析学习群

如何获取一个wav文件的总时长?如何将一个wav文件切成时长比较均匀的指定个数的wav文件

import wave
from pydub import AudioSegment
#生成一个python和wav文件的通道
f = wave.open("D:\\Chapter 1 数据挖掘概要.wav","rb")
f.getparams()
'''
返回的结果是:
Out[12]: _wave_params(nchannels=2, sampwidth=2, framerate=44100, nframes=95693824, comptype='NONE', compname='not compressed')
其中framerate是帧率(fps),也就是每秒的帧数,
nframes是文件总帧数
比如说总帧数是100帧,每秒的帧数是10,那么这个文件的时长就是100/10=10秒。
'''
# 接下来我们获取音频时长# 返回的是wav文件的秒数
timelength=int(f.getparams()[3]/f.getparams()[2])
#也可以像下面这样写
#timelength=int(f.getparams().nframes/f.getparams().framerate)
print("该wav文件的总时长是:",timelength,"秒",sep="")
# 由于我们的wav文件比较大,我们将其切分为若干个wav文件
readaudio=AudioSegment.from_wav("D:\\Chapter 1 数据挖掘概要.wav") #读取一个wav文件的数据
#计算如果60秒一个文件的话,大概需要切分成多少个文件
efs=60
kn=int(timelength/efs)+1#
print("一共需要生成",kn,"个文件",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的意思,就是加上两秒的意思,
    #比如当i等于1是就是说第一个切分文件是从0秒开始62秒结束,也就是大概0-62秒
    #比如当i等于2是就是说第一个切分文件是从60秒开始122秒结束,也就是大概60-122秒
    #之所以加上两秒是为了让每个音频文件的尾部和下一个音频文件的首部有所重叠,以免音频遗漏。

3.png




0.7956 1 0 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子