Spaces:
Sleeping
Sleeping
File size: 2,382 Bytes
9dd5dc1 4fddba4 3603f06 8de2446 4fddba4 796d097 4fddba4 3a25fa2 a107515 4fddba4 796d097 4fddba4 796d097 02c1ec5 796d097 18423bf 796d097 18423bf 9dd5dc1 4fddba4 796d097 4fddba4 796d097 a107515 3603f06 796d097 8de2446 4fddba4 9dd5dc1 a107515 9dd5dc1 4fddba4 9dd5dc1 4fddba4 a107515 4e17b21 a107515 4fddba4 796d097 3a25fa2 796d097 a107515 9323a68 a107515 9323a68 a107515 8de2446 9dd5dc1 a107515 |
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 |
# Import necessary libraries
import streamlit as st
from transformers import pipeline
from gtts import gTTS
import os
# Function to convert image to text
def img2text(url):
image_to_text_model = pipeline("image-to-text", model="Salesforce/blip-image-captioning-base")
text = image_to_text_model(url)[0]["generated_text"]
return text
# Function to convert text to a kid-friendly story
def text2story(text):
# Initialize the text generation pipeline
text_generator = pipeline("text-generation", model="distilbert/distilgpt2")
# Create a prompt to ensure the story is kid-friendly and happy
prompt = f"Write a happy and fun story for kids aged 3-10 based on the following scenario: {text}. The story should be suitable for children and should not contain any magical elements. Keep the story under 95 words."
# Generate the story
story = text_generator(prompt, max_length=95, num_return_sequences=1)[0]['generated_text']
return story
# Function to convert text to audio
def text2audio(story_text):
# Convert the story text to audio using gTTS
tts = gTTS(text=story_text, lang='en')
audio_file = "story_audio.mp3"
tts.save(audio_file)
return audio_file
# Main application
st.set_page_config(page_title="Your Image to Audio Story",
page_icon="🦜")
st.header("Turn Your Image into a Fun Audio Story!")
uploaded_file = st.file_uploader("Select an Image...", type=["jpg", "jpeg", "png"])
if uploaded_file is not None:
# Save the uploaded file
bytes_data = uploaded_file.getvalue()
with open(uploaded_file.name, "wb") as file:
file.write(bytes_data)
# Display the uploaded image
st.image(uploaded_file, caption="Uploaded Image", use_column_width=True)
# Stage 1: Image to Text
st.text('Processing image to text...')
scenario = img2text(uploaded_file.name)
st.write("**Scenario:**", scenario)
# Stage 2: Text to Story
st.text('Generating a fun story for kids...')
story = text2story(scenario)
st.write("**Story:**", story)
# Stage 3: Story to Audio
st.text('Converting story to audio...')
audio_file = text2audio(story)
# Play button for the generated audio
if st.button("Play Audio"):
st.audio(audio_file, format="audio/mp3")
# Clean up the generated audio file
os.remove(audio_file) |