Download app.py from thomasanto7001/Mythology_Storyteller_Bot: direct link, hf CLI and curl.
- Browser
- Download file 1.93 kB
-
https://huggingface.co/spaces/thomasanto7001/Mythology_Storyteller_Bot/resolve/main/app.py
- Command line
-
hf download hf://spaces/thomasanto7001/Mythology_Storyteller_Bot/app.py
-
curl -L -o app.py https://huggingface.co/spaces/thomasanto7001/Mythology_Storyteller_Bot/resolve/main/app.py
1.93 kB
| # 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() | |