1. 实现功能

M4-1 接入 whisper + ollama qwen3:14b 总结字幕

  • 自动下载视频元数据
  • 如果有字幕,只下载字幕
  • 使用 ollama 的 qwen3:14b 对字幕内容进行总结

2.运行效果

🔍 正在提取视频元数据…

📝 正在下载所有可用字幕…
[youtube] Extracting URL: https://youtu.be/AU9F-6uWCgE
[youtube] AU9F-6uWCgE: Downloading webpage
[youtube] AU9F-6uWCgE: Downloading tv client config
[youtube] AU9F-6uWCgE: Downloading tv player API JSON
[info] AU9F-6uWCgE: Downloading subtitles: zh-Hans
[info] AU9F-6uWCgE: Downloading 1 format(s): 248+251
Deleting existing file downloads\这AI会做物理题?Skywork-r1v 智商实测,结果出人意料!WebUI 体验。.zh-Hans.srt
[info] Writing video subtitles to: downloads\这AI会做物理题?Skywork-r1v 智商实测,结果出人意料!WebUI 体验。.zh-Hans.srt
WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies
[download] Destination: downloads\这AI会做物理题?Skywork-r1v 智商实测,结果出人意料!WebUI 体验。.zh-Hans.srt
[download] 100% of 21.61KiB in 00:00:00 at 116.50KiB/s

🤖 正在用 ollama 的 qwen3:14b 总结字幕 …

=== 总结结果 ===

  1. 🎯 本期主要话题:介绍开源多模态模型 Skywork-r1v 的功能、部署方式和实际应用效果。

  2. 📌 内容要点:

  • Skywork-r1v 是由昆仑万维开发的多模态模型,使用强化学习训练,能够理解图片并进行推理。
  • 该模型可以通过 GitHub 和 Huggingface 下载,并支持两种推理方式:Transforms 库和 VLLM。
  • 部署过程中需要安装依赖组件,并手动配置 WebUI 程序以实现本地运行。
  • 模型在处理图片和推理问题时表现良好,但也存在部分推理错误的情况。
  1. 🌟 精彩片段或亮点:
  • 模型能够根据图片内容进行推理,例如分析图片中的杯子数量和长度关系。
  • 在演示过程中,模型对一张折射图片的分析正确,展示了其在特定场景下的准确性和理解能力。

3.实现过程

3.1 搭建环境

Python 环境安装(推荐):
mkdir ytdlp && cd ytdlp
conda create -n ytdlp python=3.10 -y
conda activate ytdlp
pip install -U “yt-dlp[default]”

3.1.1 打开anaconda

在这里插入图片描述

3.1.2 通过图像化界面创建ytdlp环境

在这里插入图片描述

3.1.3 打开ytdlp的open terminal

pip install -U “yt-dlp[default]”
在这里插入图片描述

3.1.4 vscode python解析器 选择ytdlp

在这里插入图片描述

3.1.5 获得cookies.txt内容

在这里插入图片描述

3.2 代码

from yt_dlp import YoutubeDL
import os
import subprocessdef get_parent_cookies():return os.path.join(os.path.dirname(os.path.dirname(__file__)), 'cookies.txt')def extract_video_metadata(url):ydl_opts = {'cookiefile': get_parent_cookies(),'quiet': True,'no_warnings': False,'extract_flat': False,'extractor_args': {'youtube': {'player_client': ['tv_embedded', 'web'],}}}with YoutubeDL(ydl_opts) as ydl:try:info = ydl.extract_info(url, download=False)return infoexcept Exception as e:print(f"提取元数据失败: {e}")return Nonedef download_subtitles(url, info):subtitles = info.get('subtitles', {})if not subtitles:print("\n📝 没有可用字幕,跳过下载和总结。")return Noneprint("\n📝 正在下载所有可用字幕...")ydl_opts = {'cookiefile': get_parent_cookies(),'skip_download': True,'writesubtitles': True,'allsubtitles': True,'subtitlesformat': 'srt','outtmpl': 'downloads/%(title).80s.%(ext)s','quiet': False,}with YoutubeDL(ydl_opts) as ydl:ydl.download([url])# 查找下载的srt字幕文件downloads_dir = os.path.join(os.path.dirname(__file__), 'downloads')srt_files = [f for f in os.listdir(downloads_dir) if f.endswith('.srt')]if not srt_files:print("❌ 没有找到下载的字幕文件")return Nonesrt_path = os.path.join(downloads_dir, srt_files[0])print(f"✅ 已下载字幕: {srt_path}")return srt_pathdef summarize_with_ollama(srt_path):print(f"\n🤖 正在用 ollama 的 qwen3:14b 总结字幕 ...")# 自动安装ollama包(如未安装)try:import ollamaexcept ImportError:import sys, subprocesssubprocess.check_call([sys.executable, '-m', 'pip', 'install', 'ollama'])import ollama# 读取并清洗SRT字幕内容,拼接为段落def srt_to_text(srt_content):import relines = srt_content.splitlines()text_lines = []for line in lines:# 跳过序号和时间轴if re.match(r"^\d+$", line):continueif re.match(r"^\d{2}:\d{2}:\d{2},\d{3} --> ", line):continueif line.strip() == '':continuetext_lines.append(line.strip())# 合并为段落,去重相邻重复from itertools import groupbymerged = [k for k, _ in groupby(text_lines)]return ' '.join(merged)with open(srt_path, 'r', encoding='utf-8') as f:srt_content = f.read()clean_text = srt_to_text(srt_content)# 构造 promptprompt = f"""
你是一名专业的视频内容总结助手,请对下列中文视频字幕内容进行总结。目标:让用户能在30秒内了解这期视频的核心内容。请按以下格式输出:
1. 🎯 本期主要话题(用一句话概括主题)
2. 📌 内容要点(3-5条,每条 1 句话)
3. 🌟 精彩片段或亮点(选出最值得一提的内容,1-2条)⚠️ 不要加入你的思考过程,不要说“我认为”或“可能”,只根据字幕原文总结。字幕内容如下:
———
{clean_text}
———
/no_think
"""try:response = ollama.chat(model='qwen3:14b',messages=[{"role": "user", "content": prompt}])print("\n=== 总结结果 ===\n")print(response['message']['content'])except Exception as e:print(f"调用 ollama 失败: {e}")def main():url = "https://youtu.be/AU9F-6uWCgE"print("🔍 正在提取视频元数据...")info = extract_video_metadata(url)if not info:print("❌ 无法获取视频信息")returnsrt_path = download_subtitles(url, info)if srt_path:summarize_with_ollama(srt_path)if __name__ == "__main__":main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918416.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918416.shtml
英文地址,请注明出处:http://en.pswp.cn/news/918416.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【13-向量化-高效计算】

研究者能够扩展神经网络并构建非常大型网络的原因之一,就是神经网络可以被向量化,vectorized;可以非常高效地用矩阵地乘法实现。 事实上,并行计算硬件,例如GPU,一些CPU的功能,非常擅长进行非常大…

论文中PDF的公式如何提取-公式提取

Mathcheap - An AI-powered, free alternative to Mathpix Snip. 从PDF中截图公式,之后 ctrl V 转换成功 ,提取成功 复制到word中,是这样的 这显然不是我们需要的。 可以使用Axmath 复制进去Axmath 就能正常显示公式。 之后再插入word…

用 Flink SQL 和 Paimon 打造实时数仓:深度解析与实践指南

1. 实时数仓的魅力:从离线到分钟级的飞跃实时数仓,听起来是不是有点高大上?其实它没那么神秘,但确实能让你的数据处理能力像坐上火箭一样飙升!传统的离线数仓,像 Hadoop 生态的 Hive,动辄小时级…

【已解决】报错:WARNING: pip is configured with locations that require TLS/SSL

一、问题背景二、问题分析1. SSL模块缺失的本质2. Anaconda环境特点三、问题表现四、解决方案详解1. 完整配置环境变量2. 添加环境变量的步骤3. 测试验证五、实战示例六、附加建议七、总结八、参考链接一、问题背景 在Windows 10系统中使用Python的包管理工具pip时&#xff0c…

Java项目基本流程(三)

一、页面初始化阶段(加载即执行)加载栏目列表(同步请求)发送同步 AJAX 请求到SearchChannel接口,获取所有栏目数据。清空下拉框(.channelid)后,先添加 “全部” 选项,再循…

鹧鸪云光伏仿真:项目前期决策的“数据明灯”

曾有一处光伏项目,在精心筹备数月后终于建成,却在运行初期即因未充分评估山体遮挡影响,导致实际发电量较预期大幅降低近一成。前期决策中的微小疏漏,往往成为项目经济性与可行性的致命伤。而鹧鸪云光伏仿真软件正是一盏照亮前路的…

开发指南129-基础类-BaseController

所有接口都需要继承BaseControllerBaseController里有很多有用的方法,现举例最重要的几个:1、getURI返回接口地址,就是PostMapping或GetMapping中定义的接口地址。常用于返回值中,例如接口的异常处理:try {// 处理逻辑…

C++高频知识点(十八)

文章目录86. C多线程中,锁的实现方式有哪些?1. 互斥锁(Mutex)2. 递归互斥锁(Recursive Mutex)3. 读写锁(Shared Mutex)4. 自旋锁(Spinlock)5. 条件变量&#…

【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day1

🔥个人主页:草莓熊Lotso 🎬作者简介:C研发方向学习者 📖个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言:生活是默默的坚持,毅力是永久的…

【软考中级网络工程师】知识点之 TCP 协议深度剖析

目录一、TCP 协议简介二、TCP 协议的特点2.1 面向连接2.2 可靠性高2.3 拥塞控制2.4 全双工通信2.5 高效性2.6 支持多种应用协议2.7 可靠的错误恢复三、TCP 协议的工作机制3.1 三次握手建立连接3.2 数据传输3.3 四次挥手关闭连接四、TCP 协议的数据包格式五、TCP 协议在实际应用…

操作系统1.5:操作系统引导

目录 总览 什么是操作系统引导? 磁盘里边有哪些相关数据? 操作系统引导(开机过程) 总览 什么是操作系统引导? 操作系统引导(boot)——开机的时候,怎么让操作系统运行起来? 磁盘里边有哪些相关数据? 一个刚买来的磁盘(硬…

[鹧鸪云]光伏AI设计平台解锁电站开发新范式

1.[鹧鸪云]平台概述[鹧鸪云]是由鹧鸪云(徐州)信息技术有限公司倾力打造的,可以媲美‌PVsyst的光伏AI设计平台。它为光伏项目不同阶段的开发提供了快速设计、卫星地图设计、无人机3D设计、Unity3D设计、专业绘图设计与场区设计多种设计方式&am…

docker compose和docker-compose命令的区别

Docker Compose 有两种命令形式:docker compose(空格连接)docker-compose(短横线连接)其核心区别如下:一、技术特性docker-compose(短横线)独立可执行文件:作为独立程序安…

基于Strands Agent开发辅助阅读Agent

序 本篇由来,在COC上我当面感谢了组委会和姜宁老师,随即被姜宁老师催稿,本来当天晚上写了一个流水账,感觉甚为不妥。于是决定慢慢写,缓缓道来。要同时兼顾Show me the code,Show me the vide。希望能形成一…

20250807简单树上问题

引入 树是一种特殊的图,因其看起来像一颗倒挂的树而得名。 树有许多等价的形式化定义,我们这里只取一个:nnn个点n−1n-1n−1条边的无向连通图。 树的直径 定义树上任意两点之间最长的简单路径为树的直径。 一棵树可能有很多直径&#xff0c…

诺基亚就4G/5G相关专利起诉吉利对中国汽车及蜂窝模组企业的影响

诺基亚于2025年7月18日向欧洲统一专利法院(UPC)曼海姆分庭和德国慕尼黑法院提起诉讼,控诉中国吉利控股集团及其极氪、领克、路特斯、Smart等关联品牌在未经许可的情况下使用诺基亚4项蜂窝通信标准必要专利 。涉案专利包括1项覆盖4G/5G的标准必…

Kotlin反射详解

反射是一种机制,它允许我们在运行时检查、修改和操作类或对象的内部结构。反射开启了动态编程的可能性,在开发库、框架或工具等场景中非常有用。Java 中的反射 在 Java 中,反射一直是实现动态编程的重要基石。它允许开发者在不提前知道类名的…

学习嵌入式-IMX6ULL学习——中断

volatile:易变的,防止系统优化对寄存器做处理的时候使用,在进行写1清零操作时,防止该操作被系统优化;一、GIC通用中断控制器1.GIC通用中断控制器GIC接收众多外部中断,然后对其进行处理,最终通过…

HENGSHI SENSE 6.0 功能-AI 查数助手

面向所有AI Agent开放BI和数据分析能力 AI 查数助手 6.0版本中,我们AI助手的优化是比较深入且全面的。从问答效率到集成能力,都得到了大的跃升,是智能问数应用场景的重大升级以及体验的全方位优化。我们优化了 AI 助手执行流程,…

降压型DCDC电源芯片推荐-芯伯乐XBL4001 40V/5A

在电子设备不断追求高性能与低功耗的今天,电源管理芯片的重要性不言而喻。芯伯乐主推的XBLW-XBL4001芯片,凭借其出色的设计与稳定的性能,为电源管理领域带来了一款实用的新选择。一、芯片概述XBLW-XBL4001是一款降压型(Buck&#…