gordon20002000 commited on
Commit
6a2dbee
·
verified ·
1 Parent(s): 0337d7c

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +20 -20
src/streamlit_app.py CHANGED
@@ -2,40 +2,40 @@ import streamlit as st
2
  from transformers import pipeline
3
  from PIL import Image
4
 
5
- # Creates a brief description of a picture using a smart model
6
  def generate_caption(image):
7
- with st.spinner("🔍 Looking at your picture..."):
8
  # Loads the BLIP model to examine and describe the picture
9
- image_to_text = pipeline("image-to-text", model="Salesforce/blip-image-captioning-base")
10
  caption = image_to_text(image)[0]["generated_text"]
11
  return caption
12
 
13
  # Builds a story from the picture’s description
14
  def generate_story(caption):
15
- with st.spinner("✍️ Writing a fun story..."):
16
- # Uses a story model to craft a tale from the description
17
- pipe = pipeline("text-generation", model="pranavpsv/genre-story-generator-v2")
18
  story = pipe(caption)[0]['generated_text']
19
  return story
20
 
21
- # Turns the story into spoken audio
22
  def generate_audio(story):
23
- with st.spinner("🎙️ Turning story into audio..."):
24
- # Uses a speech model to read the story aloud
25
- pipe = pipeline("text-to-speech", model="facebook/mms-tts-eng")
26
  audio = pipe(story)
27
  return audio
28
 
29
- # Streamlit UI: Makes a simple interface for kids to enjoy stories
30
 
31
- # Displays a fun title
32
- st.title("Picture to Story Fun! 🌈")
33
 
34
- # Describes the app for young users
35
- st.write("Hi, kids! Share a picture to get a fun story! Great for ages 3-10.")
36
 
37
  # Allows picture uploads
38
- uploaded_file = st.file_uploader("Pick a picture!", type=["png", "jpg", "jpeg"])
39
 
40
  if uploaded_file is not None:
41
  # Shows the uploaded picture
@@ -44,17 +44,17 @@ if uploaded_file is not None:
44
 
45
  # Gets the picture’s description
46
  image_caption = generate_caption(image)
47
- st.subheader("Picture Description:")
48
  st.write(image_caption)
49
 
50
- # Creates a story
51
  story_telling = generate_story(image_caption)
52
- st.subheader("Your Story:")
53
  st.write(story_telling)
54
 
55
  # Generates audio
56
  audio = generate_audio(story_telling)
57
- if st.button("Hear Story!"):
58
  st.audio(audio['audio'],
59
  format="audio/wav",
60
  start_time=0,
 
2
  from transformers import pipeline
3
  from PIL import Image
4
 
5
+ # Creates a brief description for the pictures
6
  def generate_caption(image):
7
+ with st.spinner("Analysing the Pictures for Key Message..."):
8
  # Loads the BLIP model to examine and describe the picture
9
+ image_to_text = pipeline("image-to-text", model="Salesforce/blip-image-captioning-large")
10
  caption = image_to_text(image)[0]["generated_text"]
11
  return caption
12
 
13
  # Builds a story from the picture’s description
14
  def generate_story(caption):
15
+ with st.spinner("Enhancing the Story for better Details..."):
16
+ # Uses the text generation model to create a story based on the description
17
+ pipe = pipeline("text-generation", model="TheBloke/phi-2-GGUF")
18
  story = pipe(caption)[0]['generated_text']
19
  return story
20
 
21
+ # Turns the story into audio
22
  def generate_audio(story):
23
+ with st.spinner("Turning story into News audio..."):
24
+ # Uses a speech model to turn description into audio
25
+ pipe = pipeline("text-to-speech", model="hexgrad/Kokoro-82M")
26
  audio = pipe(story)
27
  return audio
28
 
29
+ # Streamlit UI: Makes a simple interface to generate the audio
30
 
31
+ # Displays the title
32
+ st.title("Tool for the Reporter - Turning the News Photo into Audio")
33
 
34
+ # Describes the app for users
35
+ st.write("Please upload the News Photo within 200MB")
36
 
37
  # Allows picture uploads
38
+ uploaded_file = st.file_uploader("Upload the Photo below", type=["png", "jpg", "jpeg"])
39
 
40
  if uploaded_file is not None:
41
  # Shows the uploaded picture
 
44
 
45
  # Gets the picture’s description
46
  image_caption = generate_caption(image)
47
+ st.subheader("Phot Description:")
48
  st.write(image_caption)
49
 
50
+ # Generate the News descriptions
51
  story_telling = generate_story(image_caption)
52
+ st.subheader("The News:")
53
  st.write(story_telling)
54
 
55
  # Generates audio
56
  audio = generate_audio(story_telling)
57
+ if st.button("Hear the News"):
58
  st.audio(audio['audio'],
59
  format="audio/wav",
60
  start_time=0,