Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from openai import OpenAI | |
| import threading as th | |
| import os | |
| import json | |
| from transcription_service import transcribe_speech_local,translation_service | |
| def translateoutput(text,language): | |
| if text=="" or text is None: | |
| return "" | |
| language=language_info[language] | |
| return translation_service(text,language) | |
| # Initialize a global variable to hold previous output | |
| language_info=json.load(open("languages_info.json","r"))['wispher_language'] | |
| def transcription(audio_file,input_lang): | |
| global language_info | |
| return transcribe_speech_local(audio_file,language_info[input_lang]) | |
| def func(audio_file,input_lang,lan,state="",state1=""): | |
| text_transcription=transcription(audio_file,input_lang) | |
| text_translation=translateoutput(text_transcription,lan) | |
| if text_transcription is None: | |
| text_transcription="" | |
| state+=str(text_transcription)+" " | |
| state1+=str(text_translation)+" " | |
| state=state.replace(".","\n") | |
| state1=state1.replace(".","\n") | |
| return state,state1 | |
| def gpt_api(text,language): | |
| if text=="" or text is None: | |
| return "" | |
| client = OpenAI() | |
| response = client.chat.completions.create( | |
| model="gpt-3.5-turbo", | |
| messages=[ | |
| {"role": "system", "content": f"You will be provided with a text data, and your task is to make very concise summery it into {language}."}, | |
| {"role": "user", "content": text}, | |
| ]) | |
| message=response.choices[0].message.content | |
| th.current_thread().return_value=message | |
| def make_summery(text,text1,input_lan,output_lan): | |
| t1=th.Thread(target=gpt_api, args=(text,input_lan,)) | |
| t2=th.Thread(target=gpt_api, args=(text1,output_lan,)) | |
| t1.start() | |
| t2.start() | |
| t1.join() | |
| t2.join() | |
| return t1.return_value,t2.return_value | |
| def clear_output_data(): | |
| return "","","","" | |
| def switch(input_lan,lan): | |
| return lan,input_lan | |
| with gr.Blocks(theme=gr.themes.Soft(),css="css.txt") as app: | |
| gr.Markdown("## Mufin Real-Time Audio Transcription And Translation",elem_id="heading") | |
| gr.Markdown("### say any language we are here to translate it for team!!",elem_classes="heading") | |
| with gr.Row(): | |
| mic = gr.Audio(sources="microphone",streaming=True,type='filepath',label='Speak') | |
| input_lan=gr.Dropdown(choices=language_info.keys(),label="Choose Input Language please",value="English",interactive=True) | |
| switchbutton=gr.Button(value='\u21C6',variant="secondary",elem_id="switchbtn") | |
| lan=gr.Dropdown(choices=language_info.keys(),label="Choose a language for translation",value="Korean",interactive=True) | |
| summery=gr.Button(value="Summery",variant="secondary",size="small",elem_id="summery") | |
| clear_output = gr.ClearButton(value="Clear Output",variant="stop",size="small",elem_id="clear") | |
| with gr.Row(): | |
| with gr.Column(): | |
| text=gr.Textbox(interactive=False,label="Transcription",lines=10,max_lines=10) | |
| with gr.Column(): | |
| text1 = gr.Textbox(interactive=False,label="Translation",lines=10,max_lines=10,) | |
| st=mic.stream(func, [mic,input_lan,lan,text,text1], [text,text1],show_progress=False,) | |
| with gr.Row(): | |
| sumer_ts=gr.Textbox(label="Summery of Transcription",interactive=False,lines=4,max_lines=4) | |
| sumer_tr=gr.Textbox(label="Summery of Translation",interactive=False,lines=4,max_lines=4) | |
| # pass | |
| summery.click(make_summery,[text,text1,input_lan,lan],[sumer_ts,sumer_tr],cancels=[st],queue=False) | |
| clear_output.click(clear_output_data,[],[text,text1,sumer_tr,sumer_ts],cancels=[st],queue=False) | |
| switchbutton.click(switch,[input_lan,lan],[input_lan,lan],cancels=[st],queue=False) | |
| # gr.update(visible=True) | |
| app.queue() | |
| app.launch() |