Gradio-lite (Gradio running entirely in your browser!)
Try it out! Once the Gradio app loads (can take 10-15 seconds), disconnect your Wifi and the machine learning model will still work!
import gradio as gr
from tempfile import NamedTemporaryFile
def translate_subtitles(english_srt, translated_json):
with open(english_srt, 'r', encoding='utf-8') as file:
english_subtitles = file.read().strip().split('\n\n')
with open(translated_json, 'r', encoding='utf-8') as file:
translated_texts = eval(file.read())
# 将上传的JSON文件内容转化为字典
# 确保翻译文本的数量与SRT文件中的条目数量相同
assert len(translated_texts) == len(english_subtitles)
# 用来存储最终翻译的SRT内容
translated_srt_content = []
# 遍历SRT文件中的每个条目,并用翻译后的文本替换原文本
for index, block in enumerate(english_subtitles):
lines = block.split('\n')
translated_srt_content.append(lines[0]) # 序号
translated_srt_content.append(lines[1]) # 时间轴
translated_srt_content.append(translated_texts[index]) # 翻译文本
translated_srt_content.append('') # 添加空行作为字幕块的分隔
# 将列表转换为字符串,每个元素之间以换行符连接
translated_srt_string = '\n'.join(translated_srt_content)
with NamedTemporaryFile(delete=False, suffix='.srt', mode='w', encoding='utf-8') as tmp_file:
tmp_file.write(translated_srt_string)
return tmp_file.name # 返回文件路径以便下载
# 创建Gradio接
iface = gr.Interface(
fn=translate_subtitles,
inputs=[
gr.File(label="Upload English SRT File"),
gr.File(label="Upload Translated Texts JSON File")
],
outputs=gr.File(label="Download Translated SRT File")
)
# 启动Gradio界面
iface.launch()