Using Generative AI for Audio/Video Processing: Power of Summarization
What Is the Purpose of This Application?
This application is for audio and video summarization. For users who wish to quickly create bullet point summaries of audio/video content, it is a useful tool.
Video of execution:
Code:
from langchain.document_loaders import youtube
from langchain.text_splitter import RecursiveCharacterTextSplitter
import openai
import streamlit as st
openai.api_key = "<<ADDYOUROPENAIKEYHERE>>" #Add your openAI key here
st.set_page_config(page_title="YouTube Audio/Video Summariser App")
st.markdown("""<p style="color: #3fd100;font-size: 30px;font-family: sans-serif; text-align:center;margin-bottom:0px;"><b>YouTube Audio/Video </b><span style="color: #3fd100;font-size: 30px;font-family: sans-serif;"><b>Summariser App</b></span></p><p></p>""", unsafe_allow_html=True)
st.header="YouTube Video URL"
url=st.text_input("Enter the audio/video url from youtube that you wish to summarize:")
if st.button("Submit",type="primary"):
if url is not None:
print(url)
loader=youtube.YoutubeLoader.from_youtube_url(url)
docs=loader.load()
ts=RecursiveCharacterTextSplitter(chunk_size=7000,chunk_overlap=0)
fd=ts.split_documents(docs)
l=[]
for xx in fd:
response=openai.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role":"system","content":"you are a helpful intelligent AI assistant"},
{"role":"user","content":f"summarize the following paragraph into bullet points:\n\n{xx}"}
]
)
msg=response.choices[0].message.content
l.append(msg)
st.write("".join(l))
st.markdown('<p style="font-size: 35px;font-family: sans-serif; text-align:left; margin-top: 30px;"><b>How to get the summary of your Video?</b></p>', unsafe_allow_html=True)
st.markdown('<p style="font-family: sans-serif; text-align:left; font-size: 15px">To extract the summary of your audio/video using this tool follow the steps. <br /> <br />   1. Copy the link of the video from Youtube \
<br />   2. Paste the link in the box above <br />   3. Hit the "Submit" button. </p>', unsafe_allow_html=True)