使用Streamlit和OpenAI API构建视频摘要

这篇具有很好参考价值的文章主要介绍了使用Streamlit和OpenAI API构建视频摘要。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文提供了使用Streamlit和OpenAI创建的视频摘要应用程序的概述。该程序为视频的每个片段创建简洁的摘要,并总结视频的完整内容。

使用Streamlit和OpenAI API构建视频摘要,深度学习,机器学习,视频摘要,Streamlit

要运行应用程序,需要安装以下依赖项:

  • Python(3.7或更高版本)
  • Streamlit
  • OpenAI API密钥
  • llama_index
  • youtube_transcript_api
  • html2image
  • langchain

搭建环境

首先,需要设置我们的开发环境,可以使用以下代码片段将API密钥设置为环境变量:

 import os
 os.environ["OPENAI_API_KEY"] = '{your_Api_Key}'

然后导入所有的包

 from llama_index import StorageContext, load_index_from_storage
 from llama_index import VectorStoreIndex
 import streamlit as st
 from llama_index import download_loader
 from llama_index import GPTVectorStoreIndex
 from llama_index import LLMPredictor, GPTVectorStoreIndex, PromptHelper, ServiceContext
 from langchain import OpenAI
 from langchain.chat_models import ChatOpenAI
 
 from youtube_transcript_api import YouTubeTranscriptApi
 from youtube_transcript_api.formatters import JSONFormatter
 import json
 import datetime
 from html2image import Html2Image

处理用户输入和YouTube视频检索

以下代码是Streamlit的按钮和事件:我们提示用户输入一个YouTube视频链接。使用st.text_input捕获输入,并将其存储在youtube_link变量中。按钮的名字为“Summarize!”,当单击该按钮时将触发我们的处理过程。下面是相关的代码片段:

 youtube_link = st.text_input("Youtube link:")
 st.button("Summarize!", on_click=send_click)

获取视频文本和预处理

使用YouTubeTranscriptApi可以获得视频文本。然后将转录本格式化为JSON并保存到文件中。然后再使用Html2Image库捕获YouTube视频的屏幕截图:

 srt = YouTubeTranscriptApi.get_transcript(st.session_state.video_id, languages=['en'])
 formatter = JSONFormatter()
 json_formatted = formatter.format_transcript(srt)
 with open(transcript_file, 'w') as f:
     f.write(json_formatted)
 
 hti = Html2Image()
 hti.screenshot(url=f"https://www.youtube.com/watch?v={st.session_state.video_id}", save_as=youtube_img)

建立索引和查询语言模型

下面就是对上面获取文本的处理,使用llama_index库中的VectorStoreIndex类创建索引。索引是根据视频文本构建的,另外还定义了LLMPredictor和ServiceContext来处理语言模型交互。下面是相关的代码片段:

 documents = loader.load_data()
 
 # define LLM
 llm_predictor = LLMPredictor(llm=OpenAI(temperature=0, model_name="gpt-3.5-turbo", max_tokens=500))
 service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor)
 
 # Create and load the index
 index = GPTVectorStoreIndex.from_documents(documents, service_context=service_context)
 index.storage_context.persist()
 
 # Load the index from storage
 storage_context = StorageContext.from_defaults(persist_dir=index_file)
 index = load_index_from_storage(storage_context, service_context=service_context)
 
 # Create a query engine for the index
 query_engine = index.as_query_engine()

生成视频摘要

这一步遍历视频文本并为视频的每个部分生成摘要。通过使用query_engine从视频部分构造的提示来查询语言模型。生成的摘要存储在section_response变量中:

 section_response = ''
 
 for d in transcript:
     # ...
 
     if d["start"] <= (section_start_s + 300) and transcript.index(d) != len(transcript) - 1:
         section_texts += ' ' + d["text"]
     else:
         end_text = d["text"]
 
         prompt = f"summarize this article from \"{start_text}\" to \"{end_text}\", limited to 100 words, start with \"This section of video\""
         response = query_engine.query(prompt)
         
         start_time = str(datetime.timedelta(seconds=section_start_s))
         end_time = str(datetime.timedelta(seconds=int(d['start'])))
 
         section_start_s += 300
         start_text = d["text"]
         section_texts = ''
 
         section_response += f"**{start_time} - {end_time}:**\n\r{response}\n\r"

生成最终总结

在处理完所有视频片段后,,生成整个视频的最终摘要。生成的摘要存储在响应变量中:

 prompt = "Summarize this article of a video, start with \"This Video\", the article is: " + section_response
 response = query_engine.query(prompt)

显示结果

最后,我们使用streamlit显示生成的摘要和部分详细信息:

 st.subheader("Summary:")
 st.success(response, icon="🤖")
 
 with st.expander("Section Details: "):
     st.write(section_response)
 
 st.session_state.video_id = ''
 st.stop()

总结

本文演示了如何创建一个基于python的视频摘要程序。使用youtube_transcript_apto直接获取视频的文本,并通过OpenAI的语言模型来提供摘要。

作者没有个完整代码地址,所以有兴趣请与原文作者联系:

https://avoid.overfit.cn/post/a2ca634c772d4bcead5e2b72f3042b1e

作者:Abhijeetas文章来源地址https://www.toymoban.com/news/detail-542770.html

到了这里,关于使用Streamlit和OpenAI API构建视频摘要的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【LangChain学习之旅】—(7) 调用模型:使用OpenAI API还是微调开源Llama2/ChatGLM?

    Reference:LangChain 实战课 之前的内容讲了提示工程的原理以及 LangChain 中的具体使用方式。今天,我们来着重讨论 Model I/O 中的第二个子模块,LLM。 让我们带着下面的问题来开始这一节课的学习。大语言模型,不止 ChatGPT 一种。调用 OpenAI 的 API,当然方便且高效,不过,如果我

    2024年02月01日
    浏览(46)
  • PyTorch深度学习实战(3)——使用PyTorch构建神经网络

    我们已经学习了如何从零开始构建神经网络,神经网络通常包括输入层、隐藏层、输出层、激活函数、损失函数和学习率等基本组件。在本节中,我们将学习如何在简单数据集上使用 PyTorch 构建神经网络,利用张量对象操作和梯度值计算更新网络权重。 1.1 使用 PyTorch 构建神

    2024年02月08日
    浏览(32)
  • 使用 YOLOv8 和 Streamlit 构建实时对象检测和跟踪应用程序:第 1 部分-介绍和设置

    示例:图像上的对象检测 实时视频中的目标检测和跟踪是计算机视觉的一个重要领域,在监控、汽车和机器人等各个领域都有广泛的应用。 由于需要能够识别和跟踪对象、确定其位置并对它们进行实时分类的自动化系统,对视频帧中的实时对象检测和跟踪的需求日益增加。

    2024年02月17日
    浏览(29)
  • 涌现出来的模拟能力#OpenAI视频生成大模型构建世界模拟器的可行性

    Q:Sora出来后,普通人应该怎么办?  \\\"Sora的到来带来了机遇和挑战。普通人关注创意和技术,探索表达想法的新方式。🌟🔬他们制作高质量视频,平衡工作与生活,并拥抱行业变革。梦想成为现实。💡🎥👥#SoraRevolution\\\" 今天一早被OpenAI的视频生成刷屏了。社交媒体上,开

    2024年02月19日
    浏览(42)
  • 使用PyTorch解决多分类问题:构建、训练和评估深度学习模型

    💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互

    2024年02月07日
    浏览(34)
  • 【GPT,Flask】用Python Flask结合OpenAI的GPT API构建一个可自主搭建的内容生成应用网站

    自己构建模型并进行训练需要很高的知识,技能和资源门槛。如今,通过OpenAI提供的API,则可以快速通过GPT能力构建可以提供内容生成服务的在线网站。这套框架可以提供给用户,用户可以利用该框架在自己的环境(比如自己的公司内)构建内容生成服务。你也可以自己上线

    2024年02月11日
    浏览(47)
  • 来 Azure 学习 OpenAI 二 - 环境构建

    大家好,我是微软学生大使 Jambo 。如今,越来越多的人拥有多台开发设备,例如在家和办公室都有电脑。但是跨设备开发是件麻烦的事情,因为你不仅需要同步文件,还需要在不同的设备上安装相同的开发环境。而对于使用轻型设备,比如 Chromebook 和 iPad,复杂的开发环境也

    2024年02月08日
    浏览(26)
  • 【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】

    全程部署视频看这里,原视频30分钟左右为了观看体验剪掉了等待时间: 小白使用Amazon SageMaker 构建机器学习应用 Amazon SageMaker: https://aws.amazon.com/cn/sagemaker/ 输入名称、选择实例类型、配置磁盘大小,具体如下图 创建新角色,选择任意S3存储桶,点击创建角色 配置VPC网络,选

    2023年04月18日
    浏览(37)
  • 使用深度学习的微光图像和视频增强:综述

    1INTRODUCTION 微光图像增强(LLIE)旨在提高在光照较差的环境中捕获的图像的感知或可解释性。该领域的最新进展主要是基于深度学习的解决方案,其中采用了许多学习策略、网络结构、损失函数、训练数据等。在本文中,我们提供了一个全面的调查,涵盖了从算法分类到未解

    2024年02月03日
    浏览(34)
  • 使用MindSpore20.0的API快速实现深度学习模型之数据变换

    大家好,我是沐风晓月,本文是对昇思MindSpore社区的产品进行测试,测试的步骤,记录产品的使用体验和学习。 如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。 🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,双一流院校计算机专业😉😉 💕 座

    2024年01月25日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包