1.需求
在进行语音相关方面的研究的时候,我们就需要统计一下我们各个文件夹下所有语音文件的总长度,但是一个一个的进行计算难免有些麻烦,想着有没有可以使用python批量化计算每个文件夹下的所有语音时长,于是便有了下边的这个代码。
2.Python批量获取指定文件夹下所有语音总时长
此处将代码公式,希望可以帮助到其他人。
import os
import wave
def file_name(file_dir):
'''
输入文件夹名称,并返回该文件夹下所有语音文件的完整路径(list类型)
:param file_dir:
:return:
'''
L = []
for root, dirs, files in os.walk(file_dir):
for file in files:
if file.split('.')[-1] == 'wav':
L.append(os.path.join(root, file))
return L
def cal_total_time(file_dir):
'''
计算输入文件夹内所有语音文件的时间长度
:param file_dir:
:return:
'''
time_count=0
wav_list=file_name(file_dir)
for wav_path in wav_list:
with wave.open(wav_path, 'rb') as f:
f = wave.open(wav_path)
time_count += f.getparams().nframes / f.getparams().framerate
return time_count/60/60
def main():
file_dirs=[r'I:/王延凯新建LibriVox数据集/english',
'I:/王延凯新建LibriVox数据集/French',
'I:/王延凯新建LibriVox数据集/German',
'I:/王延凯新建LibriVox数据集/Italian',
'I:/王延凯新建LibriVox数据集/Spanish']
for file_dir in file_dirs:
print('当前语种时长为:%.2f 小时'%(cal_total_time(file_dir)))
if __name__ == '__main__':
main()