10000 Add `--max-silence-time` in `split_silence.py` · nolka/ffmpeg-python@4bb2fc4 · GitHub
[go: up one dir, main page]

Skip to content

Commit 4bb2fc4

Browse files
committed
Add --max-silence-time in split_silence.py
1 parent dad4c3c commit 4bb2fc4

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

examples/split_silence.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
parser.add_argument('--end-time', type=float, help='End time (seconds)')
3030
parser.add_argument('--padding', type=float, default=0., help='Output silence padding (seconds)')
3131
parser.add_argument('--min-chunk-time', type=float, default=0., help='Minimum chunk duration')
32+
parser.add_argument('--max-silence-time', type=float, help='Maximum silence time before guaranteed chunk splitting')
3233
parser.add_argument('--metadata-filename', help='Optional metadata output file')
3334
parser.add_argument('-v', dest='verbose', action='store_true', help='Verbose mode')
3435

@@ -110,7 +111,7 @@ def _makedirs(path):
110111
raise
111112

112113

113-
def combine_chunks(chunk_times, min_chunk_time):
114+
def combine_chunks(chunk_times, min_chunk_time, max_silence_time=None):
114115
chunk_times = copy.copy(chunk_times)
115116
pop_chunk = lambda chunk_times: (chunk_times[0][0], chunk_times[0][1], chunk_times[1:])
116117
new_chunk_times = []
@@ -120,7 +121,11 @@ def combine_chunks(chunk_times, min_chunk_time):
120121
time = end_time - start_time
121122
while time < min_chunk_time and len(chunk_times) != 0:
122123
# Combine with next chunk.
123-
_, end_time, chunk_times = pop_chunk(chunk_times)
124+
next_start_time, next_end_time, chunk_times = pop_chunk(chunk_times)
125+
if max_silence_time is not None and next_start_time - end_time > max_silence_time:
126+
new_chunk_times.append((start_time, end_time))
127+
start_time = next_start_time
128+
end_time = next_end_time
124129
time = end_time - start_time
125130
new_chunk_times.append((start_time, end_time))
126131
return new_chunk_times
@@ -135,12 +140,13 @@ def split_audio(
135140
end_time=None,
136141
padding=0.,
137142
min_chunk_time=0.,
143+
max_silence_time=None,
138144
metadata_filename=None,
139145
verbose=False,
140146
):
141147
chunk_times = get_chunk_times(in_filename, silence_threshold, silence_duration, start_time, end_time)
142148
if min_chunk_time > 0.:
143-
chunk_times = combine_chunks(chunk_times, min_chunk_time)
149+
chunk_times = combine_chunks(chunk_times, min_chunk_time, max_silence_time)
144150

145151
metadata = []
146152
for i, (start_time, end_time) in enumerate(chunk_times):

0 commit comments

Comments
 (0)
0