File size: 2,239 Bytes
6160629
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import os
import gradio as gr
import google.generativeai as genai

# Атрымаем токен з асяроддзя (Secrets у Hugging Face)
GEMINI_API_KEY = os.getenv("gemini")

# Ініцыялізуем кліент Google Generative AI
genai.configure(api_key=GEMINI_API_KEY)

# Функцыя для транскрыпцыі аўдыя
def transcribe_audio(audio_file):
    try:
        # Загружаем файл
        with open(audio_file, "rb") as f:
            audio_data = f.read()

        # Ствараем запыт да Gemini 2.0 Flash
        model = genai.GenerativeModel("gemini-2.0-flash-thinking-exp-01-21")
        response = model.generate_content([audio_data], request_options={"mime_type": "audio/wav"})

        # Атрыманне тэксту транскрыпцыі
        transcript = response.text.strip() if response.text else "Не атрымалася транскрыбаваць аўдыя."
        return transcript
    except Exception as e:
        return f"Памылка: {str(e)}"

# Функцыя для стварэння субтытраў (SRT-файла)
def create_srt(transcript):
    srt_content = ""
    lines = transcript.split(". ")
    
    for idx, line in enumerate(lines, start=1):
        start_time = f"00:00:{idx:02},000"
        end_time = f"00:00:{idx+1:02},000"
        srt_content += f"{idx}\n{start_time} --> {end_time}\n{line}\n\n"

    # Запісваем у файл
    srt_path = "/mnt/data/subtitles.srt"
    with open(srt_path, "w", encoding="utf-8") as f:
        f.write(srt_content)

    return transcript, srt_path

# Функцыя для апрацоўкі аўдыя
def process_audio(audio):
    transcript = transcribe_audio(audio)
    text, srt_file = create_srt(transcript)
    return text, srt_file

# Gradio інтэрфейс
iface = gr.Interface(
    fn=process_audio,
    inputs=gr.Audio(type="filepath"),
    outputs=[gr.Textbox(label="Транскрыпцыя"), gr.File(label="SRT-файл")],
    title="Транскрыпцыя аўдыя з Gemini 2.0",
    description="Загрузіце аўдыяфайл, і мадэль Gemini 2.0 Flash створыць субтытры."
)

if __name__ == "__main__":
    iface.launch()