-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathsplit_audio.py
More file actions
71 lines (67 loc) · 1.94 KB
/
split_audio.py
File metadata and controls
71 lines (67 loc) · 1.94 KB
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import argparse
from pydub import AudioSegment
# Get command line arguments
parser = argparse.ArgumentParser()
parser.add_argument('-t',
help='Time in milliseconds for each chunk. Default: 10000',
nargs='?',
type=int,
dest='chunk_size',
default=10000)
parser.add_argument('-i', '--inputfile',
help='Input .wav filepath. Default: africa-toto.wav',
nargs='?',
type=str,
dest='input',
default='africa-toto.wav')
parser.add_argument('-d', '--directory',
help='Output directory path. Default: .',
nargs='?',
type=str,
dest='outdir',
default='.')
parser.add_argument('-f', '--filenameout',
help='Output filename prefix e.g. \'output\' saved as \'output_1.wav\''+
'\'output_2.wav\', ... Default: output',
nargs='?',
type=str,
dest='outfile',
default='output')
parser.add_argument('-v', '--verbose',
help='Verbose. Default: false',
action='store_true',
dest='verbose',
default=False)
ARGS = parser.parse_args()
def save_chunk(audio_file, t1, t2, filename_out):
try:
audio_chunk = audio_file[t1:t2]
audio_chunk.export(filename_out, format='wav')
if ARGS.verbose:
print('Saved: '+filename_out)
except Exception as e:
print('Failed to save: '+filename_out)
print(e)
def main():
if ARGS.verbose:
print('Chunk Size : {} ms'.format(ARGS.chunk_size))
print('Input file : {}'.format(ARGS.input))
print('Output directory : {}'.format(ARGS.outdir))
print('Output file prefix: {}'.format(ARGS.outfile))
print('')
# Open .wav file
audio_file = AudioSegment.from_wav(ARGS.input)
prev_time = 0
i = 0
# Save chunks
for curr_time in range(ARGS.chunk_size, len(audio_file), ARGS.chunk_size):
save_chunk(audio_file, prev_time, curr_time,
'{}/{}_{:04}.wav'.format(ARGS.outdir, ARGS.outfile, i))
prev_time = curr_time
i+=1
# Save last chunk
if prev_time < len(audio_file):
save_chunk(audio_file, prev_time, len(audio_file),
'{}/{}_{:04}.wav'.format(ARGS.outdir, ARGS.outfile, i))
if __name__ == '__main__':
main()