From 9125424f3a4540a1d95ab9612448b390899ef4be Mon Sep 17 00:00:00 2001 From: XTer Date: Thu, 21 Mar 2024 12:01:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=BA=86=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=9A=84=E9=80=BB=E8=BE=91=EF=BC=9B=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=BA=86=E4=B8=80=E4=B8=AA=E6=96=87=E4=BB=B6=E5=A4=B9?= =?UTF-8?q?=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/srt_slicer/i18n/locale/en_US.json | 4 +- tools/srt_slicer/i18n/locale/zh_CN.json | 2 + tools/srt_slicer/webui.py | 50 ++++++++++++++++--------- 3 files changed, 38 insertions(+), 18 deletions(-) diff --git a/tools/srt_slicer/i18n/locale/en_US.json b/tools/srt_slicer/i18n/locale/en_US.json index add77f61..b1bf423e 100644 --- a/tools/srt_slicer/i18n/locale/en_US.json +++ b/tools/srt_slicer/i18n/locale/en_US.json @@ -3,6 +3,7 @@ "SRT文件": "SRT File", "srt文件内容": "SRT File Content", "上传SRT文件": "Upload SRT File", + "上传文件": "Upload Files", "作者: ": "Author: ", "使用方法": "How to Use", "保存合并后字幕": "Save Merged Subtitles", @@ -33,6 +34,7 @@ "最长允许单句长度": "Maximum Allowed Sentence Length", "根据面板合并短句并过滤你不希望出现的句子。": "Merge short sentences according to the panel and filter out sentences you do not want to appear.", "正在建设,敬请期待": "Under Construction, Stay Tuned", + "注意:该文件夹已存在": "Warning: The folder already exists", "语言": "Language", "读取文件": "Read File", "读取本地文件": "Read Local File", @@ -44,4 +46,4 @@ "随后保存成切分好的音频与list文件。": "Then save as split audio and list files.", "音频文件": "Audio File", "音频格式": "Audio Format" - } \ No newline at end of file +} diff --git a/tools/srt_slicer/i18n/locale/zh_CN.json b/tools/srt_slicer/i18n/locale/zh_CN.json index 7a0a7e4b..e235eab3 100644 --- a/tools/srt_slicer/i18n/locale/zh_CN.json +++ b/tools/srt_slicer/i18n/locale/zh_CN.json @@ -3,6 +3,7 @@ "SRT文件": "SRT文件", "srt文件内容": "srt文件内容", "上传SRT文件": "上传SRT文件", + "上传文件": "上传文件", "作者: ": "作者: ", "使用方法": "使用方法", "保存合并后字幕": "保存合并后字幕", @@ -33,6 +34,7 @@ "最长允许单句长度": "最长允许单句长度", "根据面板合并短句并过滤你不希望出现的句子。": "根据面板合并短句并过滤你不希望出现的句子。", "正在建设,敬请期待": "正在建设,敬请期待", + "注意:该文件夹已存在": "注意:该文件夹已存在", "语言": "语言", "读取文件": "读取文件", "读取本地文件": "读取本地文件", diff --git a/tools/srt_slicer/webui.py b/tools/srt_slicer/webui.py index b30b2e6a..436a0484 100644 --- a/tools/srt_slicer/webui.py +++ b/tools/srt_slicer/webui.py @@ -3,7 +3,7 @@ import gradio as gr import sys sys.path.append('.') sys.path.append('..') -from srt_utils import merge_subtitles_with_lib, parse_srt_with_lib, generate_srt_with_lib, slice_audio_with_lib, count_words_multilang +from tools.srt_slicer.srt_utils import merge_subtitles_with_lib, parse_srt_with_lib, generate_srt_with_lib, slice_audio_with_lib, count_words_multilang from i18n.i18n import I18nAuto @@ -162,7 +162,11 @@ def change_character_name(input_audio): character = datetime.now().strftime("%m%d%H%M") return gr.Textbox(value=character) - +def check_character_foldfer(folder, character): + character_folder = os.path.join(folder, character) + if os.path.exists(character_folder): + return gr.Textbox(visible=True) + return gr.Textbox(visible=False) with gr.Blocks() as app: with gr.Row(): @@ -185,12 +189,13 @@ with gr.Blocks() as app: srt_files_list = gr.Dropdown([], label=i18n("SRT文件"),interactive=True) audio_files_list = gr.Dropdown([], label=i18n("音频文件"),interactive=True) srt_read_button = gr.Button(i18n("读取文件"), variant="secondary",interactive=True) - with gr.Tab(i18n("上传SRT文件")): + with gr.Tab(i18n("上传文件")): input_srt_file = gr.File(label=i18n("上传SRT文件"), type="filepath", file_types=["srt"]) + upload_audio = gr.Audio(type="filepath",label=i18n("音频文件")) # input_audio_file = gr.File(label=i18n("上传音频文件"), type="audio", file_types=["mp3", "wav", "ogg"]) with gr.Tabs(): with gr.Tab(i18n("内容预览")): - input_audio = gr.Audio(type="filepath",label=i18n("音频文件")) + input_audio = gr.Textbox("", label=i18n("音频文件"),interactive=False) input_text = gr.Textbox("", lines=20, max_lines=30, label=i18n("srt文件内容")) input_srt_file.change(load_srt_from_file, [input_srt_file], [input_text]) with gr.Column(scale=1) as control_col: @@ -209,15 +214,18 @@ with gr.Blocks() as app: filter_words = gr.Textbox("", label=i18n("过滤词语,一行一个"),lines=5,max_lines=10,interactive=True) filter_button = gr.Button(i18n("过滤字幕"), variant="primary",interactive=False) with gr.Tab(i18n("切分与保存")): - pre_preserve_time = gr.Slider(value=0.1, minimum=0, maximum=1, step=0.01, label=i18n("前置保留时间"),interactive=True) - post_preserve_time = gr.Slider(value=0.1, minimum=0, maximum=1, step=0.01, label=i18n("后置保留时间"),interactive=True) - pre_silence_time = gr.Slider(value=0.05, minimum=0, maximum=1, step=0.01, label=i18n("前置添加静音时间"),interactive=True,visible=False) - post_silence_time = gr.Slider(value=0.1, minimum=0, maximum=1, step=0.01, label=i18n("后置添加静音时间"),interactive=True,visible=False) - - language = gr.Dropdown([i18n(i) for i in ["auto", "zh", "en", "ja", "all_zh", "all_ja"]], value="auto", label=i18n("语言"),interactive=True) - audio_format = gr.Dropdown(["mp3", "wav", "ogg"], value="wav", label=i18n("音频格式"),interactive=True) - save_folder = gr.Textbox("output/sliced_audio", label=i18n("保存文件夹"),interactive=True) - character = gr.Textbox("character", label=i18n("保存子文件夹名称"),interactive=True) + with gr.Group(): + pre_preserve_time = gr.Slider(value=0.1, minimum=0, maximum=1, step=0.01, label=i18n("前置保留时间"),interactive=True) + post_preserve_time = gr.Slider(value=0.1, minimum=0, maximum=1, step=0.01, label=i18n("后置保留时间"),interactive=True) + pre_silence_time = gr.Slider(value=0.05, minimum=0, maximum=1, step=0.01, label=i18n("前置添加静音时间"),interactive=True,visible=False) + post_silence_time = gr.Slider(value=0.1, minimum=0, maximum=1, step=0.01, label=i18n("后置添加静音时间"),interactive=True,visible=False) + with gr.Group(): + language = gr.Dropdown([i18n(i) for i in ["auto", "zh", "en", "ja", "all_zh", "all_ja"]], value="auto", label=i18n("语言"),interactive=True) + audio_format = gr.Dropdown(["mp3", "wav", "ogg"], value="wav", label=i18n("音频格式"),interactive=True) + with gr.Group(): + save_folder = gr.Textbox("output/sliced_audio", label=i18n("保存文件夹"),interactive=True) + character = gr.Textbox("character", label=i18n("保存子文件夹名称"),interactive=True) + character_warning = gr.Textbox(i18n("注意:该文件夹已存在"), label=i18n("提示"),interactive=False,visible=False) save_srt_button = gr.Button(i18n("保存合并后字幕"),variant="secondary",interactive=True) slice_audio_button = gr.Button(i18n("切分并保存音频、list"), variant="primary",interactive=False) @@ -244,10 +252,15 @@ with gr.Blocks() as app: [input_audio], [character], ) - input_audio.change( + + upload_audio.change( change_character_name, - [input_audio], + [upload_audio], [character], + ).then( + lambda x:gr.Textbox(value=x), + [upload_audio], + [input_audio], ) merge_button.click( @@ -293,6 +306,9 @@ with gr.Blocks() as app: [output_text, min_length, filter_english, filter_words], [output_text], ) - save_srt_button.click - + character.change( + check_character_foldfer, + [save_folder, character], + [character_warning], + ) app.launch(inbrowser=True, server_port=8991, debug=True)