borakol's picture
Update app.py
27c11ca verified
import gradio as gr
from google import genai
def process_audio(audio_file , prompt , model_sel , lang_sel , api_key : str) -> str : ## lang_sel : dil seçimi
client = genai.Client(api_key=api_key)
my_file = client.files.upload(file=audio_file)
lang_sel = ",".join(lang_sel)
lang_prompt = "Ses dosyasını" + lang_sel + "dilinde transkript et"
prompt = lang_prompt + prompt ## ses dosyasını transkript et ve kullanıcının istediği işlemleri gerçekleştir
response = client.models.generate_content(
model = model_sel ,
contents= [prompt , my_file] ## promptu al ve dosyayı buna göre içerik oluştur
)
return response.text
# demo = gr.Interface(
# fn = process_audio ,
# title= "Gemini Ses Dosyası Transkript Asistanı" ,
# theme= gr.themes.Citrus() ,
# inputs= [
# gr.Audio(type = "filepath") ,
# gr.Textbox(label= "Prompt") ,
# gr.Dropdown(choices=["gemini-1.5-pro" , "gemini-2.0-flash" , "gemini-2.0-lite"] , value = "gemini-2.0-flash" , label = "Model seçin") ,
# gr.CheckboxGroup(choices=["Türkçe" , "İngilizce" , "Almanca" , "İspanyolca" , "Rusça"] ,
# value = "Türkçe" , label = "Dil seçin") ### tek dil veya çoklu dil seçimi için CheckboxGroup kullandık
# ] ,
# outputs = gr.Textbox()
# )
with gr.Blocks(theme = gr.themes.Citrus()) as demo:
gr.Markdown("# Gemini Ses Dosyası Transkript Asistanı")
with gr.Row():
with gr.Column():
model_sel = gr.Dropdown(choices=["gemini-1.5-pro" , "gemini-2.0-flash" , "gemini-2.0-lite"] ,
value = "gemini-2.0-flash" , label = "Model seçin")
language_sel = gr.CheckboxGroup(choices = ["Türkçe" , "İngilizce" , "Almanca" , "İspanyolca" , "Rusça"] ,
value = ["Türkçe"] , label = "Dil seçin" )
api_key = gr.Textbox(placeholder = "Enter your Gemini API Key" , label="🔑 API Key",
type = "password" , interactive = True )
audio_file = gr.Audio(type="filepath")
prompt = gr.Textbox(label = "Prompt")
submit_btn = gr.Button("Gönder")
with gr.Column() :
output = gr.Textbox(label = "Output")
submit_btn.click(
process_audio , ## function
[audio_file , prompt , model_sel , language_sel ,api_key] , ## input
[output] ##outputs
)
if __name__ == "__main__" :
demo.launch(show_error=True)