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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -15
app.py CHANGED
@@ -1,6 +1,7 @@
1
  import os
2
  import gradio as gr
3
  import google.generativeai as genai
 
4
 
5
  # Атрымаем токен з асяроддзя (Secrets у Hugging Face)
6
  GEMINI_API_KEY = os.getenv("gemini")
@@ -11,6 +12,11 @@ genai.configure(api_key=GEMINI_API_KEY)
11
  # Функцыя для транскрыпцыі аўдыя з даданым промптам для стварэння субтытраў з часовымі меткамі
12
  def transcribe_audio(audio_file):
13
  try:
 
 
 
 
 
14
  # Загружаем файл
15
  with open(audio_file, "rb") as f:
16
  audio_data = f.read()
@@ -24,43 +30,55 @@ def transcribe_audio(audio_file):
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__":
66
- iface.launch()
 
1
  import os
2
  import gradio as gr
3
  import google.generativeai as genai
4
+ import mimetypes
5
 
6
  # Атрымаем токен з асяроддзя (Secrets у Hugging Face)
7
  GEMINI_API_KEY = os.getenv("gemini")
 
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()
 
30
  "0:00:37.901,0:00:41.504 Забываем даражэнькія пра падабайку і падпіску на наш канал, добра."
31
  )
32
 
33
+ # Ствараем запыт да Gemini з даданнем промпту і audio_data
34
+ model = genai.GenerativeModel("gemini-1.5-flash")
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 Gemini: {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:
58
+ with open(srt_path, "w", encoding="utf-8") as f:
59
+ f.write(transcript)
60
+ return transcript, srt_path
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="Транскрыпцыя аўдыя з Gemini",
80
+ description="Загрузіце аўдыяфайл, і мадэль Gemini створыць субтытры з часовымі меткамі."
81
  )
82
 
83
  if __name__ == "__main__":
84
+ iface.launch()