File size: 2,384 Bytes
cfb477a 239d642 cfb477a 239d642 cfb477a 239d642 cfb477a 239d642 cfb477a 239d642 cfb477a 239d642 cfb477a 239d642 cfb477a 239d642 cfb477a 239d642 cfb477a 239d642 cfb477a 239d642 cfb477a 239d642 cfb477a 239d642 cfb477a 239d642 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 |
import streamlit as st
from PIL import Image
from transformers import pipeline
from gtts import gTTS
import os
# ๅ ่ผ Hugging Face ๆจกๅ
image_to_text_model = pipeline("image-to-text", model="Salesforce/blip-image-captioning-base")
story_generator = pipeline("text-generation", model="facebook/opt-1.3b")
# ๅ็ โ ๆๅญ๏ผ็ๆๆ่ฟฐ๏ผ
def img2text(image_path):
text = image_to_text_model(image_path)[0]["generated_text"]
return text
# ๆๅญ โ ๆ
ไบ๏ผ็ๆๅฎๆดๆ
ไบ๏ผ
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=250, do_sample=True, temperature=0.8, top_p=0.9, repetition_penalty=1.2, truncation=True)[0]['generated_text']
return story
# ๆ
ไบ โ ่ช้ณ๏ผTTS๏ผ
def text2audio_gtts(story_text, filename="story.mp3"):
# ้ฟๅ
ๆไปถๅฒ็ช
if os.path.exists(filename):
os.remove(filename)
# ้ๅถ TTS ๆๆฌ้ทๅบฆ
max_chars = 500 # gTTS ๅฏ่ฝไธๆฏๆ้้ทๆๆฌ
story_text = story_text[:max_chars]
# ็ๆ่ฏญ้ณ
tts = gTTS(text=story_text, lang="en")
tts.save(filename)
return filename
# Streamlit Web UI
st.set_page_config(page_title="AI Storyteller", page_icon="๐")
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:
# ไฟๅญๅ็ๅฐๆฌๅฐ
image_path = "uploaded_image.jpg"
with open(image_path, "wb") as f:
f.write(uploaded_file.getbuffer())
# ่ฎๅไธฆ้กฏ็คบๅ็
image = Image.open(image_path)
st.image(image, caption="Uploaded Image", use_column_width=True)
# ็ๆๅ็ๆ่ฟฐ
st.text("๐ Generating image caption...")
caption = img2text(image_path) # ้่ฃๆนๆๆไปถ่ทฏๅพ
st.write("**Image Description:**", caption)
# ็ๆๆ
ไบ
st.text("๐ Generating story...")
story = text2story(caption)
st.write("**Generated Story:**")
st.write(story)
# ็ๆ่ช้ณ
st.text("๐ Generating audio...")
audio_file = text2audio_gtts(story)
# ๆญๆพ้ณ้ ป
st.audio(audio_file, format="audio/mp3")
# ไธ่ผๆ้ฎ
with open(audio_file, "rb") as file:
st.download_button("๐ฅ Download Audio", file, file_name="story.mp3")
|