Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -55,6 +55,25 @@ def transcribe_audio(audio_file):
|
|
55 |
except Exception as e:
|
56 |
return f"Нечаканая памылка: {str(e)}"
|
57 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
def create_srt(transcript, filename="subtitles.srt"):
|
59 |
try:
|
60 |
with open(filename, "w", encoding="utf-8") as f:
|
@@ -67,7 +86,9 @@ def process_audio(audio):
|
|
67 |
transcript = transcribe_audio(audio)
|
68 |
if transcript.startswith("Памылка"):
|
69 |
return transcript, None
|
70 |
-
|
|
|
|
|
71 |
return text, srt_file
|
72 |
|
73 |
def extract_audio_from_video(video_file):
|
@@ -106,13 +127,9 @@ def update_on_video_change(video):
|
|
106 |
return gr.update(interactive=True)
|
107 |
|
108 |
def translate_transcript(transcript, target_language):
|
109 |
-
"""
|
110 |
-
Функцыя адпраўляе тэкст транскрыпцыі з промптам для перакладу.
|
111 |
-
Атрыманая перакладзеная версія запісваецца ў новы SRT-файл.
|
112 |
-
"""
|
113 |
try:
|
114 |
prompt_text = (
|
115 |
-
f"перакладзі толькі тэксты субцітраў на {target_language} мову.
|
116 |
f"Тэкст:\n{transcript}"
|
117 |
)
|
118 |
model = genai.GenerativeModel(MODEL_NAME)
|
@@ -149,7 +166,7 @@ with gr.Blocks() as demo:
|
|
149 |
file_output = gr.File(label="SRT-файл")
|
150 |
btn.click(fn=process_file, inputs=[audio_input, video_input], outputs=[transcript_output, file_output])
|
151 |
|
152 |
-
gr.Markdown("## Пераклад
|
153 |
with gr.Row():
|
154 |
language_dropdown = gr.Dropdown(
|
155 |
choices=["English", "Руcкая", "Польская", "Літоўская", "Нямецкая"],
|
|
|
55 |
except Exception as e:
|
56 |
return f"Нечаканая памылка: {str(e)}"
|
57 |
|
58 |
+
def fix_subtitles_format(transcript):
|
59 |
+
"""
|
60 |
+
Дадатковы запыт да мадэлі, які выпраўляе фармат часоў у субцітрах.
|
61 |
+
"""
|
62 |
+
try:
|
63 |
+
prompt_fix = (
|
64 |
+
f"выправі часовы фармат у субцітрах на правільны, вось прыклад 00:00:01,589\n"
|
65 |
+
f"напішы толькі выпраўленныя субцітры {transcript}"
|
66 |
+
)
|
67 |
+
model = genai.GenerativeModel(MODEL_NAME)
|
68 |
+
response_fix = model.generate_content(prompt_fix)
|
69 |
+
if response_fix.text:
|
70 |
+
fixed_transcript = response_fix.text.strip()
|
71 |
+
else:
|
72 |
+
fixed_transcript = transcript
|
73 |
+
return fixed_transcript
|
74 |
+
except Exception as e:
|
75 |
+
return transcript
|
76 |
+
|
77 |
def create_srt(transcript, filename="subtitles.srt"):
|
78 |
try:
|
79 |
with open(filename, "w", encoding="utf-8") as f:
|
|
|
86 |
transcript = transcribe_audio(audio)
|
87 |
if transcript.startswith("Памылка"):
|
88 |
return transcript, None
|
89 |
+
# Дадаем другі запыт для выпраўлення фармату часоў у субцітрах
|
90 |
+
fixed_transcript = fix_subtitles_format(transcript)
|
91 |
+
text, srt_file = create_srt(fixed_transcript)
|
92 |
return text, srt_file
|
93 |
|
94 |
def extract_audio_from_video(video_file):
|
|
|
127 |
return gr.update(interactive=True)
|
128 |
|
129 |
def translate_transcript(transcript, target_language):
|
|
|
|
|
|
|
|
|
130 |
try:
|
131 |
prompt_text = (
|
132 |
+
f"перакладзі толькі тэксты субцітраў на {target_language} мову. Астатняя пакінь як ёсць."
|
133 |
f"Тэкст:\n{transcript}"
|
134 |
)
|
135 |
model = genai.GenerativeModel(MODEL_NAME)
|
|
|
166 |
file_output = gr.File(label="SRT-файл")
|
167 |
btn.click(fn=process_file, inputs=[audio_input, video_input], outputs=[transcript_output, file_output])
|
168 |
|
169 |
+
gr.Markdown("## Пераклад субцітраў")
|
170 |
with gr.Row():
|
171 |
language_dropdown = gr.Dropdown(
|
172 |
choices=["English", "Руcкая", "Польская", "Літоўская", "Нямецкая"],
|