想在循环中的一堆音频文件中找到音频的平均长度

want to find the average length of audio in a bunch of audio files in a loop

使用此代码同样有效但是如何显示这些音频文件的平均长度,以及如何找到最长和最短持续时间的文件?

import librosa

import glob
import librosa

path=glob.glob('E:/...*/*.wav') 
for i in range(len(path)) :
    y, sr = librosa.load(path[i], sr=16000)
    z=librosa.get_duration(y)
    Z=Z+z

Z/len(path)

您可以使用这样的代码。使用 get_duration(filename=...) 使其无需加载文件即可运行,速度要快得多。这里我们使用 list comprehension 遍历路径并将所有持续时间收集到一个列表中。


import glob
import librosa
import numpy

paths = glob.glob('E:/...*/*.wav')
durations = [ librosa.get_duration(filename=p) for p in paths ]

stats = {
    'mean': numpy.mean(durations),
    'max': numpy.max(durations),
    'min': numpy.min(durations),
}

print(stats)