Spaces:
Sleeping
Sleeping
File size: 3,092 Bytes
cfb477a 0559d83 cfb477a 23967c8 bd1669a 006c053 cfb477a a8b0d91 cfb477a 006c053 cfb477a 006c053 cfb477a bfa0b31 cfb477a 006c053 cfb477a 006c053 cfb477a 006c053 239d642 006c053 cfb477a 239d642 cfb477a 006c053 cfb477a 006c053 cfb477a f6a48f5 cfb477a 006c053 cfb477a 006c053 cfb477a 006c053 cfb477a 006c053 cfb477a 006c053 cfb477a 006c053 cfb477a |
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 |
import streamlit as st
from PIL import Image
from transformers import pipeline
from gtts import gTTS
import os
os.system("pip install transformers==4.36.2")
st.set_page_config(page_title="AI Storyteller", page_icon="๐")
# Beautify | UI ็พๅ
page_bg_img = """
<style>
[data-testid="stAppViewContainer"] {
background-image: url("https://your-background-image-url.com");
background-size: cover;
}
h1, h3 {
text-align: center;
color: white;
}
</style>
"""
st.markdown(page_bg_img, unsafe_allow_html=True)
# ๐ฏ Load Hugging Face Models | ๅ ่ผ Hugging Face ๆจกๅ
image_to_text_model = pipeline("image-to-text", model="Salesforce/blip-image-captioning-base")
story_generator = pipeline("text-generation", model="facebook/opt-350m", device=-1)
# Image to Text (Generate Caption) | ๅ็ โ ๆๅญ๏ผ็ๆๆ่ฟฐ๏ผ
def img2text(image_path):
text = image_to_text_model(image_path)[0]["generated_text"]
return text
# Text to Story (Generate a Complete Story) | ๆๅญ โ ๆ
ไบ๏ผ็ๆๅฎๆดๆ
ไบ๏ผ
def text2story(text):
prompt = f"Write a fun and magical children's story based on this idea: {text}.\n\nOnce upon a time..."
story = story_generator(prompt, max_length=300, do_sample=True, temperature=0.8, top_p=0.9, repetition_penalty=1.2)[0]['generated_text']
return story
# Story to Speech (TTS) | ๆ
ไบ โ ่ช้ณ๏ผTTS๏ผ
def text2audio_gtts(story_text, filename="story.mp3"):
# Avoid filename conflicts | ้ฟๅ
ๆไปถๅฒ็ช
if os.path.exists(filename):
os.remove(filename)
# Limit text length (to prevent gTTS crashes)| ้ๅถ TTS ๆๆฌ้ทๅบฆ๏ผ้ฟๅ
gTTS ๅดฉๆฝฐ๏ผ
max_chars = 500 # gTTS ๅฏ่ฝไธๆฏๆ้้ทๆๆฌ
story_text = story_text[:max_chars]
# Generate Speech | ็ๆ่ฏญ้ณ
tts = gTTS(text=story_text, lang="en")
tts.save(filename)
return filename
# Streamlit Web UI
st.header("๐ AI Storyteller: Turn Your Image into a Story with Audio")
uploaded_file = st.file_uploader("Upload an Image...", type=["jpg", "png"])
if uploaded_file:
# Save image locally | ไฟๅญๅ็ๅฐๆฌๅฐ
image_path = "uploaded_image.jpg"
with open(image_path, "wb") as f:
f.write(uploaded_file.getbuffer())
# Load and Display Image | ่ฎๅไธฆ้กฏ็คบๅ็
image = Image.open(image_path)
st.image(image, caption="Uploaded Image", use_container_width=True)
# Generate Image Caption | ็ๆๅ็ๆ่ฟฐ
st.text("๐ Generating image caption...")
caption = img2text(image_path)
st.write("**Image Description:**", caption)
# Generate Story | ็ๆๆ
ไบ
st.text("๐ Generating story...")
story = text2story(caption)
st.write("**Generated Story:**")
st.write(story)
# Generate Audio | ็ๆ่ช้ณ
st.text("๐ Generating audio...")
audio_file = text2audio_gtts(story)
# Play Audio | ๆญๆพ้ณ้ ป
st.audio(audio_file, format="audio/mp3")
# Download Audio | ไธ่ผๆ้ฎ
with open(audio_file, "rb") as file:
st.download_button("๐ฅ Download Audio", file, file_name="story.mp3")
|