Skip to content

Commit c63366e

Browse files
committed
fixed resume for segment-level
-fixed `resume` not working for `word_timestamps=False` -changed `--resume_input`/`-ri` to always save changes to the specified input JSON files
1 parent 765a081 commit c63366e

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

stable_whisper/whisper_word_level/cli.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,8 @@ def url_to_path(url: str):
134134
"outputs are saved as JSON with suffix '-UNFINISHED.json'")
135135
parser.add_argument("--resume_input", "-ri", nargs="+", type=str,
136136
help="JSON of unfinished output filepaths(s) to continue transcription from end of last word; "
137-
"use '+' as suffix to redo the last segment (e.g 'output-UNFINISHED.json+')")
137+
"use '+' as suffix to redo the last segment (e.g 'output-UNFINISHED.json+'); "
138+
"NOTE: this argument enables --save_unfinished/-su")
138139
parser.add_argument("--delete_resume", "-dr", action='store_true',
139140
help="whether to delete file(s) from '--resume_input'/'-ri' when transcription finishes")
140141
parser.add_argument("--model", '-m', default="base", type=str,
@@ -452,7 +453,7 @@ def url_to_path(url: str):
452453
output_dir: str = args.pop("output_dir")
453454
output_format = args.pop("output_format")
454455
overwrite: bool = args.pop("overwrite")
455-
save_unfinished: bool = args.pop("save_unfinished")
456+
save_unfinished: bool = args.pop("save_unfinished") or bool(resume_files)
456457
delete_resume: bool = args.pop("delete_resume")
457458
no_stream = use_deprecated_args('no_stream', 'mel_first', pop=True, expected_default=False)
458459
args['stream'] = None if not no_stream else False
@@ -767,8 +768,9 @@ def _load_model():
767768
update_options_with_args('save_option', save_options)
768769
call_method_with_options(save_method, save_options)
769770

770-
if result.unfinished_start != -1:
771-
result.save_as_json(splitext(output_paths[0])[0] + '-UNFINISHED.json')
771+
if (result.unfinished_start != -1) or (not delete_resume and resume_files):
772+
resume_output = args['resume'] if resume_files else (splitext(output_paths[0])[0] + '-UNFINISHED.json')
773+
result.save_as_json(resume_output)
772774
break
773775
elif delete_resume and 'resume' in args and os.path.isfile(args['resume']):
774776
os.remove(args['resume'])

stable_whisper/whisper_word_level/original_whisper.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -745,7 +745,13 @@ def inner_transcribe():
745745
if resume is not None:
746746
if resume:
747747
if final_result:
748-
resume.fill_in_gaps(final_result, verbose=False)
748+
if resume.has_words:
749+
resume.fill_in_gaps(final_result, verbose=False)
750+
else:
751+
max_resume_end = final_result[0].start
752+
while resume and resume[-1].end > max_resume_end:
753+
del resume[-1]
754+
resume.segments.extend(final_result.segments)
749755
if final_nonspeech_timings:
750756
resume.update_nonspeech_sections(*final_nonspeech_timings, overwrite=False)
751757
final_result = resume

0 commit comments

Comments
 (0)