Download app.py from wh1223/Ass: direct link, hf CLI and curl.
- Browser
- Download file 2.72 kB
-
https://huggingface.co/spaces/wh1223/Ass/resolve/main/app.py
- Command line
-
hf download hf://spaces/wh1223/Ass/app.py
-
curl -L -o app.py https://huggingface.co/spaces/wh1223/Ass/resolve/main/app.py
2.72 kB
| import streamlit as st | |
| from transformers import pipeline | |
| # function part | |
| # img2text | |
| 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 | |
| # text2story | |
| def text2story(text): | |
| #messages = f"""Generate a vivid story in 100-120 words using the following sentences: "{text}". | |
| #Structure requirements: | |
| #1. Only 1 paragraphs and the story mest have beginning, middle, end | |
| #2. Include at least two named characters | |
| #3. Use descriptive language | |
| #Story:""" | |
| #messages = f"""Generate a story of about 100 words using the following sentences: {text}.""" | |
| messages = [ | |
| {"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."}, | |
| {"role": "user", "content": f"""Please help generate a vivid story in 200 words using the following sentences: "{text}".The story must contain:Beginning, middle, end and use descriptive language"""}, | |
| ] | |
| text_to_story_model= pipeline("text-generation", model="Qwen/Qwen2.5-0.5B-Instruct") | |
| story_text = text_to_story_model( | |
| messages, | |
| max_length=400, | |
| min_length=100, | |
| do_sample=True, | |
| temperature=0.65 | |
| )[0]['generated_text'][2]['content'] | |
| return story_text | |
| # text2audio | |
| def text2audio(story_text): | |
| text_to_audio_model = pipeline("text-to-speech", model="facebook/mms-tts-eng") | |
| #audio_data = "" # to be completed | |
| audio_data = text_to_audio_model(story_text) | |
| return audio_data | |
| st.set_page_config(page_title="Your Image to Audio Story", | |
| page_icon="🦜") | |
| st.header("Turn Your Image to Audio Story") | |
| uploaded_file = st.file_uploader("Select an Image...") | |
| if uploaded_file is not None: | |
| print(uploaded_file) | |
| bytes_data = uploaded_file.getvalue() | |
| with open(uploaded_file.name, "wb") as file: | |
| file.write(bytes_data) | |
| st.image(uploaded_file, caption="Uploaded Image", | |
| use_column_width=True) | |
| #Stage 1: Image to Text | |
| st.text('Processing img2text...') | |
| scenario = img2text(uploaded_file.name) | |
| st.write(scenario) | |
| #Stage 2: Text to Story | |
| st.text('Generating a story...') | |
| #scenario = "children playing in the park illustration" | |
| story = text2story(scenario) | |
| st.write(story) | |
| #Stage 3: Story to Audio data | |
| st.text('Generating audio data...') | |
| audio_data =text2audio(story) | |
| # Play button | |
| if st.button("Play Audio"): | |
| st.audio(audio_data['audio'], | |
| format="audio/wav", | |
| start_time=0, | |
| sample_rate = audio_data['sampling_rate']) |