File size: 3,389 Bytes
4bf306e 4ad6152 4bf306e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# ==========================================
# FinTalk - Gradio UI
# ==========================================
import gradio as gr
import asyncio
from backend import fintalk_discussion, export_to_pdf, generate_tts_files # senin fonksiyonların
# -----------------------------------------------------
# Tartışmayı başlatan ana fonksiyon
# -----------------------------------------------------
def run_fintalk(topic_text):
if not topic_text or len(topic_text.strip()) < 10:
return "Please provide a valid economic topic.", "", "", "", "", None, None
result = fintalk_discussion(topic_text)
result["topic"] = topic_text
# PDF oluştur
pdf_path = "FinTalk_Report.pdf"
export_to_pdf(result, pdf_path)
# TTS (async)
try:
generate_tts_files(result)
except Exception as e:
print("TTS hatası:", e)
return (
f"🧩 **Moderator:**\n{result['moderator_intro']}",
f"💹 **Bullish Investor:**\n{result['bullish_view']}",
f"📉 **Bearish Economist:**\n{result['bearish_view']}",
f"🎙️ **Moderator Wrap-up:**\n{result['moderator_wrap']}",
f"📊 **GPT Summary:**\n{result['summary']}",
pdf_path,
"moderator_intro.waw",
"bullish_view.waw",
"bearish_view.waw",
"moderator_wrap.waw"
)
# -----------------------------------------------------
# Gradio Arayüz
# -----------------------------------------------------
with gr.Blocks(theme=gr.themes.Soft()) as demo:
gr.Markdown(
"""
# 📊 **FinTalk — AI Economic Roundtable**
Simulate a live discussion between two economists with opposing views, moderated by Selin.
Enter an economic topic or news headline below and click **Start Discussion**.
"""
)
with gr.Row():
with gr.Column(scale=1):
topic_input = gr.Textbox(
label="Enter an Economic Headline or News",
placeholder="Example: The central bank raised interest rates by 200 basis points.",
lines=4
)
start_btn = gr.Button("🚀 Start Discussion")
with gr.Column(scale=2):
moderator_output = gr.Markdown(label="Moderator Intro")
bullish_output = gr.Markdown(label="Bullish Investor")
bearish_output = gr.Markdown(label="Bearish Economist")
wrap_output = gr.Markdown(label="Moderator Wrap-up")
summary_output = gr.Markdown(label="GPT Summary")
pdf_file = gr.File(label="📄 Download PDF Report")
with gr.Row():
mod_audio = gr.Audio(label="Moderator Voice", interactive=False)
bull_audio = gr.Audio(label="Bullish Voice", interactive=False)
bear_audio = gr.Audio(label="Bearish Voice", interactive=False)
wrap_audio = gr.Audio(label="Moderator Wrap-up", interactive=False)
start_btn.click(
fn=run_fintalk,
inputs=topic_input,
outputs=[
moderator_output,
bullish_output,
bearish_output,
wrap_output,
summary_output,
pdf_file,
mod_audio,
bull_audio,
bear_audio,
wrap_audio
]
)
# -----------------------------------------------------
# Uygulama Başlat
# -----------------------------------------------------
if __name__ == "__main__":
demo.launch()
|