import gradio as gr import openai import os from io import BytesIO import tempfile def create_meeting_summary(openai_key, uploaded_audio): openai.api_key = openai_key transcript = openai.Audio.transcribe("whisper-1", open(uploaded_audio, "rb"), response_format="verbose_json") transcript_text = "" for segment in transcript.segments: transcript_text += f"{segment['text']}\n" system_template = """会議の文字起こしが渡されます。 この会議のサマリーをMarkdown形式で作成してください。サマリーは、以下のような形式で書いてください。 - 会議の目的 - 会議の内容 - 会議の結果""" completion = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": system_template}, {"role": "user", "content": transcript_text} ] ) summary = completion.choices[0].message.content return summary, transcript_text inputs = [ gr.Textbox(lines=1, label="openai_key", type="password"), gr.Audio(type="filepath", label="音声ファイルをアップロード") ] outputs = [ gr.Textbox(label="会議サマリー"), gr.Textbox(label="文字起こし") ] app = gr.Interface( fn=create_meeting_summary, inputs=inputs, outputs=outputs, title="会議サマリー生成アプリ", description="音声ファイルをアップロードして、会議のサマリーをMarkdown形式で作成します。" ) app.launch(debug=True)