Spaces:
Running
Running
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() | |