File size: 1,179 Bytes
4ee33aa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from pydub.silence import split_on_silence
from pydub import  AudioSegment
from pydub.exceptions import CouldntDecodeError
import os
# out_path = 'ttts/datasets/cliped_datasets'
def process_file_vad(paths):
    audio_path,out_path = paths
    min_duration=4
    max_duration=20
    out_prefix = os.path.splitext(os.path.basename(audio_path))[0]
    if os.path.exists(os.path.join(out_path, out_prefix)):
        return
    try:
        audio = AudioSegment.from_file(audio_path)
    except:
        print(audio_path)
        return 0
    segments = split_on_silence(audio, min_silence_len=600, silence_thresh=-40, seek_step=100, keep_silence=50)

    for i in range(0,len(segments)):
        if segments[i].duration_seconds<min_duration or segments[i].duration_seconds > max_duration:
            continue
        if os.path.exists(os.path.join(out_path, out_prefix, str(i)+'.wav')):
            return 0
        clip_path = os.path.join(out_path, out_prefix,str(i)+'.wav')
        if not os.path.exists(os.path.join(out_path, out_prefix)):
            os.makedirs(os.path.join(out_path, out_prefix),exist_ok=True)
        segments[i].export(clip_path, format='wav')
    return 0