Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -7,18 +7,19 @@ from PIL import Image
|
|
| 7 |
# Load models
|
| 8 |
def load_models():
|
| 9 |
image_to_text = pipeline("image-to-text", model="Salesforce/blip-image-captioning-base")
|
| 10 |
-
|
| 11 |
-
return image_to_text,
|
| 12 |
|
| 13 |
# Process image to text
|
| 14 |
def generate_caption(image, image_to_text):
|
| 15 |
result = image_to_text(image)
|
| 16 |
return result[0]["generated_text"] if result else "No caption generated."
|
| 17 |
|
| 18 |
-
#
|
| 19 |
-
def
|
| 20 |
-
|
| 21 |
-
|
|
|
|
| 22 |
|
| 23 |
# Convert text to speech
|
| 24 |
def text_to_speech(text, filename="output.mp3"):
|
|
@@ -28,9 +29,9 @@ def text_to_speech(text, filename="output.mp3"):
|
|
| 28 |
|
| 29 |
# Main Streamlit app
|
| 30 |
def main():
|
| 31 |
-
st.title("AI-Powered Image Captioning
|
| 32 |
-
|
| 33 |
-
image_to_text,
|
| 34 |
|
| 35 |
uploaded_file = st.file_uploader("Upload an image...", type=["jpg", "png", "jpeg"])
|
| 36 |
|
|
@@ -46,13 +47,13 @@ def main():
|
|
| 46 |
st.write("### Image Caption:")
|
| 47 |
st.write(caption)
|
| 48 |
|
| 49 |
-
with st.spinner("
|
| 50 |
-
|
| 51 |
-
st.write("###
|
| 52 |
-
st.write(
|
| 53 |
|
| 54 |
with st.spinner("Generating speech..."):
|
| 55 |
-
audio_file = text_to_speech(
|
| 56 |
st.audio(audio_file, format="audio/mp3")
|
| 57 |
|
| 58 |
if __name__ == "__main__":
|
|
|
|
| 7 |
# Load models
|
| 8 |
def load_models():
|
| 9 |
image_to_text = pipeline("image-to-text", model="Salesforce/blip-image-captioning-base")
|
| 10 |
+
storyteller = pipeline("text-generation", model="mistralai/Mistral-7B-Instruct-v0.1", max_new_tokens=200)
|
| 11 |
+
return image_to_text, storyteller
|
| 12 |
|
| 13 |
# Process image to text
|
| 14 |
def generate_caption(image, image_to_text):
|
| 15 |
result = image_to_text(image)
|
| 16 |
return result[0]["generated_text"] if result else "No caption generated."
|
| 17 |
|
| 18 |
+
# Generate a narrative story
|
| 19 |
+
def generate_story(text, storyteller):
|
| 20 |
+
prompt = f"Write a short, engaging story based on the following description: {text}"
|
| 21 |
+
story = storyteller(prompt)
|
| 22 |
+
return story[0]["generated_text"] if story else "No story generated."
|
| 23 |
|
| 24 |
# Convert text to speech
|
| 25 |
def text_to_speech(text, filename="output.mp3"):
|
|
|
|
| 29 |
|
| 30 |
# Main Streamlit app
|
| 31 |
def main():
|
| 32 |
+
st.title("AI-Powered Image Captioning and Storytelling")
|
| 33 |
+
|
| 34 |
+
image_to_text, storyteller = load_models()
|
| 35 |
|
| 36 |
uploaded_file = st.file_uploader("Upload an image...", type=["jpg", "png", "jpeg"])
|
| 37 |
|
|
|
|
| 47 |
st.write("### Image Caption:")
|
| 48 |
st.write(caption)
|
| 49 |
|
| 50 |
+
with st.spinner("Generating story..."):
|
| 51 |
+
story = generate_story(caption, storyteller)
|
| 52 |
+
st.write("### Generated Story:")
|
| 53 |
+
st.write(story)
|
| 54 |
|
| 55 |
with st.spinner("Generating speech..."):
|
| 56 |
+
audio_file = text_to_speech(story)
|
| 57 |
st.audio(audio_file, format="audio/mp3")
|
| 58 |
|
| 59 |
if __name__ == "__main__":
|