thomasanto7001's picture
Update app.py
3ec9226 verified
# app.py
import gradio as gr
from groq import Groq
from gtts import gTTS
import os
client = Groq(api_key=os.environ["GROQ_API_KEY"])
def initialize_messages():
return [{"role": "system",
"content": "You are a talented mythological storyteller. Tell short, engaging Indian mythology stories in a simple, emotional style. End every story with a moral."}]
messages_prmt = initialize_messages()
def generate_story(user_input):
global messages_prmt
try:
messages_prmt.append({"role": "user", "content": user_input})
response = client.chat.completions.create(
messages=messages_prmt,
model="llama3-8b-8192",
)
story = response.choices[0].message.content
messages_prmt.append({"role": "assistant", "content": story})
# TTS generation
audio_path = "story.mp3"
try:
tts = gTTS(story)
tts.save(audio_path)
except Exception as e:
print("TTS Error:", e)
audio_path = None
return story, audio_path
except Exception as e:
return f"⚠️ Error: {str(e)}", None
with gr.Blocks(theme=gr.themes.Soft()) as app:
gr.Markdown("""
# 🕉️ Mythology Storyteller Bot
_Ask for short Indian mythology stories and hear them come alive!_
""")
with gr.Row():
with gr.Column(scale=2):
user_input = gr.Textbox(
label="Your Prompt",
placeholder="e.g. Tell me a story about Krishna",
lines=2
)
generate_btn = gr.Button("🪄 Generate Story")
with gr.Column(scale=3):
story_output = gr.Textbox(label="📜 Story", lines=8, interactive=False)
audio_output = gr.Audio(label="🔊 Listen", autoplay=True)
generate_btn.click(fn=generate_story, inputs=user_input, outputs=[story_output, audio_output])
app.launch()