archivartaunik commited on
Commit
f7a8b9d
·
verified ·
1 Parent(s): ba9fcfd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -30
app.py CHANGED
@@ -12,46 +12,40 @@ genai.configure(api_key=GEMINI_API_KEY)
12
  # Функцыя для транскрыпцыі аўдыя з даданым промптам для стварэння субтытраў з часовымі меткамі
13
  def transcribe_audio(audio_file):
14
  try:
15
- # Вызначаем mime_type
16
  mime_type, _ = mimetypes.guess_type(audio_file)
17
  if mime_type is None:
18
- return "Немагчыма вызначыць тып файла. Падтрымліваюцца толькі аўдыяфайлы."
19
-
20
- # Загружаем файл
21
  with open(audio_file, "rb") as f:
22
  audio_data = f.read()
23
 
24
- # Дадатковы промпт для стварэння субтытраў з часовымі меткамі
25
  prompt_text = (
26
  "зрабі транскрыпцыю аўдыяфайла для стварэння субтытрыў з часовымі меткамі\n"
27
  "вось прыклад фармату\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
  )
32
 
33
- # Ствараем запыт да Gemini з даданнем промпту і audio_data model = genai.GenerativeModel("gemini-2.0-flash")
34
  model = genai.GenerativeModel("gemini-2.0-pro-exp-02-05")
35
  response = model.generate_content(
36
  [prompt_text, {"mime_type": mime_type, "data": audio_data}]
37
  )
38
 
39
-
40
- # Атрыманне тэксту транскрыпцыі (які ўжо змяшчае часовыя меткі)
41
  if response.text:
42
  transcript = response.text.strip()
43
  else:
44
- transcript = "Не атрымалася транскрыбаваць аўдыя. Магчыма, памылка з API."
45
  return transcript
46
  except FileNotFoundError:
47
  return "Памылка: Файл не знойдзены."
48
  except genai.APIError as e:
49
- return f"Памылка API : {str(e)}"
50
  except Exception as e:
51
  return f"Нечаканая памылка: {str(e)}"
52
 
53
-
54
- # Функцыя для стварэння SRT-файла, у якім субтытры ўжо змяшчаюць часовыя меткі
55
  def create_srt(transcript):
56
  srt_path = "subtitles.srt"
57
  try:
@@ -61,29 +55,26 @@ def create_srt(transcript):
61
  except Exception as e:
62
  return f"Памылка пры запісе SRT-файла: {str(e)}", None
63
 
64
-
65
  # Функцыя для апрацоўкі аўдыя
66
  def process_audio(audio):
67
  transcript = transcribe_audio(audio)
68
  if transcript.startswith("Памылка"):
69
- return transcript, None # Вяртаем паведамленне пра памылку і None для SRT-файла
70
  text, srt_file = create_srt(transcript)
71
  return text, srt_file
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
 
74
- # Gradio інтэрфейс
75
- iface = gr.Interface(
76
- fn=process_audio,
77
- inputs=gr.Audio(type="filepath"),
78
- outputs=[gr.Textbox(label="Транскрыпцыя"), gr.File(label="SRT-файл")],
79
- title="Транскрыпцыя аўдыя для беларускай мовы",
80
- description="""
81
- ## Стварэнне субтытраў для беларускай мовы
82
- Загрузіце аўд��ёфайл, і субтытры будуць аўтаматычна згенераваны разам з файлам для юцюба, які можна адразу імпартаваць. Падтрымліваюцца фарматы WAV, MP3.
83
- [Далучайцеся да беларускаймоўнай суполкі ў ТГ](https://t.me/belarusai)
84
- **Падтрымаць праект:** [Buy me a coffee](https://buymeacoffee.com/tuteishygpt)
85
- """
86
- )
87
-
88
- if __name__ == "__main__":
89
- iface.launch()
 
12
  # Функцыя для транскрыпцыі аўдыя з даданым промптам для стварэння субтытраў з часовымі меткамі
13
  def transcribe_audio(audio_file):
14
  try:
 
15
  mime_type, _ = mimetypes.guess_type(audio_file)
16
  if mime_type is None:
17
+ return "Немагчыма вызначыць тып файла. Падтрымліваюцца толькі аўдыяфайлы."
 
 
18
  with open(audio_file, "rb") as f:
19
  audio_data = f.read()
20
 
 
21
  prompt_text = (
22
  "зрабі транскрыпцыю аўдыяфайла для стварэння субтытрыў з часовымі меткамі\n"
23
  "вось прыклад фармату\n"
24
  "0:00:28.373,0:00:32.347 Нешта маналітнае, цэльнае, а тут чалавек эвалюцыянаваў.\n"
25
  "0:00:32.898,0:00:37.061 Ды зрабіў круты паварот у сваіх поглядах яшчэ да развалу эсэсэ.\n"
26
  "0:00:37.901,0:00:41.504 Забываем даражэнькія пра падабайку і падпіску на наш канал, добра."
27
+ "не пішы нічога, акрамя транскрыпцыі ў зададзеным фармаце"
28
+
29
  )
30
 
 
31
  model = genai.GenerativeModel("gemini-2.0-pro-exp-02-05")
32
  response = model.generate_content(
33
  [prompt_text, {"mime_type": mime_type, "data": audio_data}]
34
  )
35
 
 
 
36
  if response.text:
37
  transcript = response.text.strip()
38
  else:
39
+ transcript = "Не атрымалася транскрыбаваць аўдыя. Магчыма, памылка з API."
40
  return transcript
41
  except FileNotFoundError:
42
  return "Памылка: Файл не знойдзены."
43
  except genai.APIError as e:
44
+ return f"Памылка API: {str(e)}"
45
  except Exception as e:
46
  return f"Нечаканая памылка: {str(e)}"
47
 
48
+ # Функцыя для стварэння SRT-файла з субтытрамі
 
49
  def create_srt(transcript):
50
  srt_path = "subtitles.srt"
51
  try:
 
55
  except Exception as e:
56
  return f"Памылка пры запісе SRT-файла: {str(e)}", None
57
 
 
58
  # Функцыя для апрацоўкі аўдыя
59
  def process_audio(audio):
60
  transcript = transcribe_audio(audio)
61
  if transcript.startswith("Памылка"):
62
+ return transcript, None
63
  text, srt_file = create_srt(transcript)
64
  return text, srt_file
65
 
66
+ # Выкарыстанне gr.Blocks для стварэння інтэрфейсу з вертыкальным размяшчэннем
67
+ with gr.Blocks() as demo:
68
+ gr.Markdown("# Транскрыпцыя аўдыя для беларускай мовы")
69
+ gr.Markdown("### Загрузіце аўдыёфайл і атрымаеце транскрыпцыю разам з SRT-файлам")
70
+
71
+ audio_input = gr.Audio(type="filepath", label="Аўдыёфайл")
72
+
73
+ # Кампаненты размешчаны адзін пад адным
74
+ transcript_output = gr.Textbox(label="Транскрыпцыя", lines=10)
75
+ file_output = gr.File(label="SRT-файл")
76
+
77
+ btn = gr.Button("Апрацаваць")
78
+ btn.click(process_audio, inputs=audio_input, outputs=[transcript_output, file_output])
79
 
80
+ demo.launch()