import subprocess import sys try: import openai except ImportError: subprocess.check_call([sys.executable, "-m", "pip", "install", "openai"]) import openai # Import the library after installing it def transcribe(filename,key): client = openai.OpenAI(api_key = key) audio_file = open(filename, "rb") transcript_srt = client.audio.transcriptions.create( model="whisper-1", file=audio_file, response_format="srt" ) transcript_txt = client.audio.transcriptions.create( model="whisper-1", file=audio_file, response_format="text" ) return transcript_srt, transcript_txt def setup_gradio_interface(): with gr.Blocks() as demo: gr.Markdown("## 音頻轉文字") gr.Markdown("上傳您的 MP3 音頻文件,我們將返回 SRT 和 TXT 格式的字幕。") with gr.Row(): file_input = gr.File(label="Upload MP3 file") api_key_input = gr.Textbox(label="Enter OpenAI API Key", placeholder="OpenAI API Key") submit_button = gr.Button("Transcribe") file_output_srt = gr.File(label="Download SRT") file_output_txt = gr.File(label="Download TXT") def transcribe_and_download(file,key): if file is not None: # Assuming `transcribe` function returns a tuple of (srt_content, txt_content) srt_content, txt_content = transcribe(file,key) srt_path = "output.srt" txt_path = "output.txt" with open(srt_path, "w") as srt_file: srt_file.write(srt_content) with open(txt_path, "w") as txt_file: txt_file.write(txt_content) return srt_path, txt_path submit_button.click( transcribe_and_download, inputs=[file_input, api_key_input], outputs=[file_output_srt, file_output_txt] ) return demo # First, try importing gradio. If it fails, attempt to install it. try: import gradio as gr except ImportError: import sys import gradio as gr # Run the interface if __name__ == "__main__": demo = setup_gradio_interface() demo.launch()