File size: 878 Bytes
3b92d66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# Usage -> python duration.py /src/folder/path

import soundfile as sf
import sys
import os
from glob import glob
from joblib import Parallel, delayed
from tqdm import tqdm


def get_duration(fpath):
    w = sf.SoundFile(fpath)
    sr = w.samplerate
    assert 22050 == sr, "Sample rate is not 22050"
    return len(w) / sr


def main(folder, ext="wav"):
    file_list = glob(folder + "/**/*." + ext, recursive=True)
    print(f"\n\tTotal number of wav files {len(file_list)}")
    duration_list = Parallel(n_jobs=1)(
        delayed(get_duration)(i) for i in tqdm(file_list)
    )
    print(
        f"\n\tMin Duration {min(duration_list):.2f} Max Duration {max(duration_list):.2f} in secs"
    )
    print(f"\n\tTotal Duration {sum(duration_list)/3600:.2f} in hours")


if __name__ == "__main__":
    folder = sys.argv[1]
    folder = os.path.abspath(folder)
    main(folder)