Speech2SRT / app.py
John Liao
Update app.py
6da4a9e verified
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()