Update app.py
Browse files
app.py
CHANGED
|
@@ -269,9 +269,14 @@ def translate_transcriptions(df, selected_translation_lang_2):
|
|
| 269 |
|
| 270 |
print("translations done")
|
| 271 |
|
| 272 |
-
|
| 273 |
|
| 274 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 275 |
for i in range(len(df)):
|
| 276 |
file.write(str(i+1))
|
| 277 |
file.write('\n')
|
|
@@ -279,32 +284,32 @@ def translate_transcriptions(df, selected_translation_lang_2):
|
|
| 279 |
|
| 280 |
|
| 281 |
milliseconds = round(start * 1000.0)
|
| 282 |
-
|
| 283 |
hours = milliseconds // 3_600_000
|
| 284 |
milliseconds -= hours * 3_600_000
|
| 285 |
-
|
| 286 |
minutes = milliseconds // 60_000
|
| 287 |
milliseconds -= minutes * 60_000
|
| 288 |
-
|
| 289 |
seconds = milliseconds // 1_000
|
| 290 |
milliseconds -= seconds * 1_000
|
| 291 |
-
|
| 292 |
file.write(f"{hours}:{minutes:02d}:{seconds:02d}.{milliseconds:03d}")
|
| 293 |
|
| 294 |
stop = df.iloc[i]['end']
|
| 295 |
|
| 296 |
|
| 297 |
milliseconds = round(stop * 1000.0)
|
| 298 |
-
|
| 299 |
hours = milliseconds // 3_600_000
|
| 300 |
milliseconds -= hours * 3_600_000
|
| 301 |
-
|
| 302 |
minutes = milliseconds // 60_000
|
| 303 |
milliseconds -= minutes * 60_000
|
| 304 |
-
|
| 305 |
seconds = milliseconds // 1_000
|
| 306 |
milliseconds -= seconds * 1_000
|
| 307 |
-
|
| 308 |
|
| 309 |
file.write(' --> ')
|
| 310 |
file.write(f"{hours}:{minutes:02d}:{seconds:02d}.{milliseconds:03d}")
|
|
@@ -313,16 +318,9 @@ def translate_transcriptions(df, selected_translation_lang_2):
|
|
| 313 |
if int(i) != len(df)-1:
|
| 314 |
file.write('\n\n')
|
| 315 |
|
| 316 |
-
print("SRT DONE")
|
| 317 |
-
|
| 318 |
-
return df, 'subtitles.srt'
|
| 319 |
-
|
| 320 |
-
def create_srt_and_burn(srt_file, video_in):
|
| 321 |
-
|
| 322 |
-
print("Starting creation of video wit srt")
|
| 323 |
-
|
| 324 |
try:
|
| 325 |
-
file1 = open('./
|
| 326 |
Lines = file1.readlines()
|
| 327 |
|
| 328 |
count = 0
|
|
@@ -336,10 +334,10 @@ def create_srt_and_burn(srt_file, video_in):
|
|
| 336 |
|
| 337 |
video_out = video_in.replace('.mp4', '_out.mp4')
|
| 338 |
print(video_out)
|
| 339 |
-
command = 'ffmpeg -i "{}" -y -vf subtitles=./
|
| 340 |
print(command)
|
| 341 |
os.system(command)
|
| 342 |
-
return video_out
|
| 343 |
except Exception as e:
|
| 344 |
print(e)
|
| 345 |
return video_out
|
|
@@ -359,13 +357,6 @@ selected_whisper_model = gr.Dropdown(choices=whisper_models, type="value", value
|
|
| 359 |
transcription_df = gr.DataFrame(value=df_init,label="Transcription dataframe", row_count=(0, "dynamic"), max_rows = 10, wrap=True, overflow_row_behaviour='paginate')
|
| 360 |
transcription_and_translation_df = gr.DataFrame(value=df_init,label="Transcription and translation dataframe", max_rows = 10, wrap=True, overflow_row_behaviour='paginate')
|
| 361 |
|
| 362 |
-
srt_file = gr.File(
|
| 363 |
-
label="Download srt-file",
|
| 364 |
-
file_count="single",
|
| 365 |
-
type="file",
|
| 366 |
-
interactive=False,
|
| 367 |
-
)
|
| 368 |
-
|
| 369 |
demo = gr.Blocks(css='''
|
| 370 |
#cut_btn, #reset_btn { align-self:stretch; }
|
| 371 |
#\\31 3 { max-width: 540px; }
|
|
@@ -434,13 +425,8 @@ with demo:
|
|
| 434 |
##### ''')
|
| 435 |
selected_translation_lang_2.render()
|
| 436 |
translate_transcriptions_button = gr.Button("Step 3. Translate transcription")
|
| 437 |
-
translate_transcriptions_button.click(translate_transcriptions, [transcription_df, selected_translation_lang_2], transcription_and_translation_df
|
| 438 |
transcription_and_translation_df.render()
|
| 439 |
-
|
| 440 |
-
with gr.Row():
|
| 441 |
-
with gr.Column():
|
| 442 |
-
gr.Markdown('''##### From here you can download the srt-file ''')
|
| 443 |
-
srt_file.render()
|
| 444 |
|
| 445 |
with gr.Row():
|
| 446 |
with gr.Column():
|
|
@@ -449,10 +435,9 @@ with demo:
|
|
| 449 |
##### ''')
|
| 450 |
translate_and_make_srt_btn = gr.Button("Step 4. Create and burn srt to video")
|
| 451 |
print(video_in)
|
| 452 |
-
translate_and_make_srt_btn.click(create_srt_and_burn, [
|
| 453 |
video_out])
|
| 454 |
video_out.render()
|
| 455 |
|
| 456 |
-
|
| 457 |
|
| 458 |
demo.launch()
|
|
|
|
| 269 |
|
| 270 |
print("translations done")
|
| 271 |
|
| 272 |
+
return df
|
| 273 |
|
| 274 |
+
def create_srt_and_burn(df, video_in):
|
| 275 |
+
|
| 276 |
+
print("Starting creation of video wit srt")
|
| 277 |
+
|
| 278 |
+
|
| 279 |
+
with open('testi.srt','w', encoding="utf-8") as file:
|
| 280 |
for i in range(len(df)):
|
| 281 |
file.write(str(i+1))
|
| 282 |
file.write('\n')
|
|
|
|
| 284 |
|
| 285 |
|
| 286 |
milliseconds = round(start * 1000.0)
|
| 287 |
+
|
| 288 |
hours = milliseconds // 3_600_000
|
| 289 |
milliseconds -= hours * 3_600_000
|
| 290 |
+
|
| 291 |
minutes = milliseconds // 60_000
|
| 292 |
milliseconds -= minutes * 60_000
|
| 293 |
+
|
| 294 |
seconds = milliseconds // 1_000
|
| 295 |
milliseconds -= seconds * 1_000
|
| 296 |
+
|
| 297 |
file.write(f"{hours}:{minutes:02d}:{seconds:02d}.{milliseconds:03d}")
|
| 298 |
|
| 299 |
stop = df.iloc[i]['end']
|
| 300 |
|
| 301 |
|
| 302 |
milliseconds = round(stop * 1000.0)
|
| 303 |
+
|
| 304 |
hours = milliseconds // 3_600_000
|
| 305 |
milliseconds -= hours * 3_600_000
|
| 306 |
+
|
| 307 |
minutes = milliseconds // 60_000
|
| 308 |
milliseconds -= minutes * 60_000
|
| 309 |
+
|
| 310 |
seconds = milliseconds // 1_000
|
| 311 |
milliseconds -= seconds * 1_000
|
| 312 |
+
|
| 313 |
|
| 314 |
file.write(' --> ')
|
| 315 |
file.write(f"{hours}:{minutes:02d}:{seconds:02d}.{milliseconds:03d}")
|
|
|
|
| 318 |
if int(i) != len(df)-1:
|
| 319 |
file.write('\n\n')
|
| 320 |
|
| 321 |
+
print("SRT DONE")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 322 |
try:
|
| 323 |
+
file1 = open('./testi.srt', 'r', encoding="utf-8")
|
| 324 |
Lines = file1.readlines()
|
| 325 |
|
| 326 |
count = 0
|
|
|
|
| 334 |
|
| 335 |
video_out = video_in.replace('.mp4', '_out.mp4')
|
| 336 |
print(video_out)
|
| 337 |
+
command = 'ffmpeg -i "{}" -y -vf subtitles=./testi.srt "{}"'.format(video_in, video_out)
|
| 338 |
print(command)
|
| 339 |
os.system(command)
|
| 340 |
+
return video_out
|
| 341 |
except Exception as e:
|
| 342 |
print(e)
|
| 343 |
return video_out
|
|
|
|
| 357 |
transcription_df = gr.DataFrame(value=df_init,label="Transcription dataframe", row_count=(0, "dynamic"), max_rows = 10, wrap=True, overflow_row_behaviour='paginate')
|
| 358 |
transcription_and_translation_df = gr.DataFrame(value=df_init,label="Transcription and translation dataframe", max_rows = 10, wrap=True, overflow_row_behaviour='paginate')
|
| 359 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 360 |
demo = gr.Blocks(css='''
|
| 361 |
#cut_btn, #reset_btn { align-self:stretch; }
|
| 362 |
#\\31 3 { max-width: 540px; }
|
|
|
|
| 425 |
##### ''')
|
| 426 |
selected_translation_lang_2.render()
|
| 427 |
translate_transcriptions_button = gr.Button("Step 3. Translate transcription")
|
| 428 |
+
translate_transcriptions_button.click(translate_transcriptions, [transcription_df, selected_translation_lang_2], transcription_and_translation_df)
|
| 429 |
transcription_and_translation_df.render()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 430 |
|
| 431 |
with gr.Row():
|
| 432 |
with gr.Column():
|
|
|
|
| 435 |
##### ''')
|
| 436 |
translate_and_make_srt_btn = gr.Button("Step 4. Create and burn srt to video")
|
| 437 |
print(video_in)
|
| 438 |
+
translate_and_make_srt_btn.click(create_srt_and_burn, [transcription_and_translation_df,video_in], [
|
| 439 |
video_out])
|
| 440 |
video_out.render()
|
| 441 |
|
|
|
|
| 442 |
|
| 443 |
demo.launch()
|