archivartaunik commited on
Commit
a4cbcc8
·
verified ·
1 Parent(s): 70e99af

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -31
app.py CHANGED
@@ -8,51 +8,58 @@ GEMINI_API_KEY = os.getenv("gemini")
8
  # Ініцыялізуем кліент Google Generative AI
9
  genai.configure(api_key=GEMINI_API_KEY)
10
 
11
- # Функцыя для транскрыпцыі аўдыя з вызначэннем фармату
12
  def transcribe_audio(audio_file):
13
  try:
14
  # Загружаем файл
15
  with open(audio_file, "rb") as f:
16
  audio_data = f.read()
17
 
18
- # Вызначаем фармат файла па пашырэнні
19
- ext = os.path.splitext(audio_file)[1].lower()
20
- if ext == ".mp3":
21
- mime_type = "audio/mpeg"
22
- else:
23
- mime_type = "audio/wav"
 
 
24
 
25
- # Ствараем запыт да Gemini 2.0 Flash: аўдыя перадаецца асобна ад промпта
26
  model = genai.GenerativeModel("gemini-2.0-flash-thinking-exp-01-21")
27
- prompt = ("Ствары субтытры з часовымі меткамі. Вось прыклад фармату: \n"
28
- "0:00:28.373,0:00:32.347 Нешта маналітнае, цэльнае, а тут чалавек эвалюцыянаваў.\n"
29
- "0:00:32.898,0:00:37.061 Ды зрабіў круты паварот у сваіх поглядах яшчэ да развалу эсэсэ.\n"
30
- "0:00:37.901,0:00:41.504 Забываем даражэнькія пра падабайку і падпіску на наш канал, добра.")
31
- content = {"parts": [{"mime_type": mime_type, "data": audio_data}]}
32
- response = model.generate_content([prompt, content])
33
-
34
- # Атрыманне тэксту транскрыпцыі з часовымі меткамі
 
35
  transcript = response.text.strip() if response.text else "Не атрымалася транскрыбаваць аўдыя."
36
-
37
- # Захоўваем у файл SRT
38
- srt_path = "subtitles.srt"
39
- with open(srt_path, "w", encoding="utf-8") as f:
40
- f.write(transcript)
41
-
42
- return transcript, srt_path
43
  except Exception as e:
44
- return f"Памылка: {str(e)}", None
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
  # Gradio інтэрфейс
47
  iface = gr.Interface(
48
- fn=transcribe_audio,
49
  inputs=gr.Audio(type="filepath"),
50
- outputs=[
51
- gr.Textbox(label="Субтытры з часовымі меткамі (SRT)"),
52
- gr.File(label="SRT-файл")
53
- ],
54
- title="Генерацыя субтытраў на беларускай мове",
55
- description="Загрузіце аўдыяфайл (напрыклад, MP3 або WAV), каб адразу атрымаць субтытры з часовымі меткамі."
56
  )
57
 
58
  if __name__ == "__main__":
 
8
  # Ініцыялізуем кліент Google Generative AI
9
  genai.configure(api_key=GEMINI_API_KEY)
10
 
11
+ # Функцыя для транскрыпцыі аўдыя з даданым промптам для стварэння субтытраў з часовымі меткамі
12
  def transcribe_audio(audio_file):
13
  try:
14
  # Загружаем файл
15
  with open(audio_file, "rb") as f:
16
  audio_data = f.read()
17
 
18
+ # Дадатковы промпт для стварэння субтытраў з часовымі меткамі
19
+ prompt_text = (
20
+ "ствары субтытры з часовымі меткамі\n"
21
+ "вось прыклад фармату\n"
22
+ "0:00:28.373,0:00:32.347 Нешта маналітнае, цэльнае, а тут чалавек эвалюцыянаваў.\n"
23
+ "0:00:32.898,0:00:37.061 Ды зрабіў круты паварот у сваіх поглядах яшчэ да развалу эсэсэ.\n"
24
+ "0:00:37.901,0:00:41.504 Забываем даражэнькія пра падабайку і падпіску на наш канал, добра."
25
+ )
26
 
27
+ # Ствараем запыт да Gemini 2.0 Flash з даданнем промпту
28
  model = genai.GenerativeModel("gemini-2.0-flash-thinking-exp-01-21")
29
+ response = model.generate_content(
30
+ [audio_data],
31
+ request_options={
32
+ "mime_type": "audio/wav",
33
+ "prompt": prompt_text
34
+ }
35
+ )
36
+
37
+ # Атрыманне тэксту транскрыпцыі (які ўжо змяшчае часовыя меткі)
38
  transcript = response.text.strip() if response.text else "Не атрымалася транскрыбаваць аўдыя."
39
+ return transcript
 
 
 
 
 
 
40
  except Exception as e:
41
+ return f"Памылка: {str(e)}"
42
+
43
+ # Функцыя для стварэння SRT-файла, у якім субтытры ўжо змяшчаюць часовыя меткі
44
+ def create_srt(transcript):
45
+ srt_path = "subtitles.srt"
46
+ with open(srt_path, "w", encoding="utf-8") as f:
47
+ f.write(transcript)
48
+ return transcript, srt_path
49
+
50
+ # Функцыя для апрацоўкі аўдыя
51
+ def process_audio(audio):
52
+ transcript = transcribe_audio(audio)
53
+ text, srt_file = create_srt(transcript)
54
+ return text, srt_file
55
 
56
  # Gradio інтэрфейс
57
  iface = gr.Interface(
58
+ fn=process_audio,
59
  inputs=gr.Audio(type="filepath"),
60
+ outputs=[gr.Textbox(label="Транскрыпцыя"), gr.File(label="SRT-файл")],
61
+ title="Транскрыпцыя аўдыя з Gemini 2.0",
62
+ description="Загрузіце аўдыяфайл, і мадэль Gemini 2.0 Flash створыць субтытры з часовымі меткамі."
 
 
 
63
  )
64
 
65
  if __name__ == "__main__":