Python实现将一段话txt生成字幕srt文件

news2024/12/25 9:42:21

Python实现将一段话txt生成字幕srt文件

作者:虚坏叔叔
博客:https://xuhss.com

早餐店不会开到晚上,想吃的人早就来了!😄

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BcZhHqd0-1675425473334)(2007 - 副本.assets/1-1675425357833.png)]

一、为什么要将txt转换成字幕

1.1方便到剪辑软件剪辑

有时获取到一段文本,想要直接拖放到剪映软件中剪辑,这个时候,将文本生成srt文件,就可以在剪映软件中生成对应的片段,只需要拖动来适应画面就可以。

1.2自动生成视频的字幕

通过爬虫获取到一段文本后,可以提取文本中的关键词,找到合适的图片,根据文本生成音频。音频的时长可以计算出来。根据时长生成字幕。

这样就完成了 根据一个文本,生成视频的过程。

二、操作流程

我就用一段Python脚本,教大家来实现一个字幕文件的快速的生成。方便大家在制作字幕的时候,能够快速的生成一个字幕的文件。我这里生成的是srt文件。

首先准备一个有文本的TXT,文本的格式如下图所示:

在这里插入图片描述

你要说的每一句话,写上去然后换一个行。记得第一行留空。

如果你是一段文字,可以用Python的snownlp库分局分行。

文件如下截图:

在这里插入图片描述

最后通过脚本

生成一个z.srt文件

在这里插入图片描述

就可以直接拖到剪辑软件剪辑

三、实现代码如下

代码如下:

f2= open(r"D:\自动化\z.srt",'w',encoding='utf-8-sig')
#返回一个文件对象
line=f1.readline()#调用文件的readline()方法
no=1
start_time = datetime.datetime.strptime('00:00:00','%H:%M:%S')
end_time = datetime.datetime.strptime('00:00:00','%H:%M:%S')
while line:
    line= f1.readline()
    start_time=start_time+datetime.timedelta(seconds=4)
    end_time=start_time+ datetime.timedelta(seconds=8)
    str_start_time = datetime.datetime.strftime(start_time,'%H:%M:%S')
    str_end_time  =datetime.datetime.strftime(end_time,'%H:%M:%S')
    f2.write(str(no)+'\n')
    f2.write(str_start_time+",433"+"-->"+str_end_time+",433"+'\n')
    f2.write(line+'\n')
    no=no+1
f1.close()
f2.close()

总结

最后的最后
由本人水平所限,难免有错误以及不足之处, 屏幕前的靓仔靓女们 如有发现,恳请指出!

最后,谢谢你看到这里,谢谢你认真对待我的努力,希望这篇博客对你有所帮助!

你轻轻地点了个赞,那将在我的心里世界增添一颗明亮而耀眼的星!

💬 往期优质文章分享

  • C++ QT结合FFmpeg实战开发视频播放器-01环境的安装和项目部署
  • 解决QT问题:运行qmake:Project ERROR: Cannot run compiler ‘cl‘. Output:
  • 解决安装QT后MSVC2015 64bit配置无编译器和调试器问题
  • Qt中的套件提示no complier set in kit和no debugger,出现黄色感叹号问题解决(MSVC2017)
  • Python+selenium 自动化 - 实现自动导入、上传外部文件(不弹出windows窗口)

🚀 优质教程分享 🚀

  • 🎄如果感觉文章看完了不过瘾,可以来我的其他 专栏 看一下哦~
  • 🎄比如以下几个专栏:Python实战微信订餐小程序、Python量化交易实战、C++ QT实战类项目 和 算法学习专栏
  • 🎄可以学习更多的关于C++/Python的相关内容哦!直接点击下面颜色字体就可以跳转啦!
学习路线指引(点击解锁)知识定位人群定位
🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战 💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
❤️ C++ QT结合FFmpeg实战开发视频播放器❤️难度偏高分享学习QT成品的视频播放器源码,需要有扎实的C++知识!
💚 游戏爱好者九万人社区💚互助/吹水九万人游戏爱好者社区,聊天互助,白嫖奖品
💙 Python零基础到入门 💙Python初学者针对没有经过系统学习的小伙伴,核心目的就是让我们能够快速学习Python的知识以达到入门

🚀 资料白嫖,温馨提示 🚀

关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。更多内容可自行查看哦!

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

点分治学习笔记

有时候我们会碰到一些树上的路径问题,如果需要处理的规模很大的话,这时候点分治是一个很好的工具,往往可以在O(nlogn)的复杂度内完成操作,一般用于离线处理问题 前置芝士 树的重心:最大子树的值最小的点叫做重心。 …

【手撕面试题】HTML+CSS(高频知识点二)

目录 面试官:页面导入样式时,使用 link 和 import 有什么区别? 面试官:简要说说 title与h1的区别、b与strong的区别、i与em的区别? 面试官:img标签的title和alt有什么区别? 面试官&#xff…

给特别规则FeignClient增加统一的RequestInterceptor

需求背景: 在微服务横行天下的今天,Spring Cloud OpenFeign 早就成了我们服务间调度的主要远程调用手段。 在Feign进行远程调度的时候,难免会做一些心跳,权限的校验,来保证调度过程的相对安全。 但对于外部系统来说…

Unity 之 Addressable可寻址系统 -- 资源远程加载 | 资源预下载 -- 进阶(三)

可寻址系统远程加载 -- 资源预下载 -- 进阶(三)一,Unity 云资源分发 -- 使用介绍1.1 CCD 的介绍1.2 后台准备工作二,CDD的使用2.1 CCD可视化界面的使用2.2 CDD命令行界面使用2.2.1 准备工作2.2.2 CLI 用法三,AA CCD资…

Java中的快速排序

快速排序递归版本挖坑法Hoare法优化非递归相信即使大家并不知道快速排序究竟是个啥,但也一定听说过快排,今天我来给兄弟们讲讲快速排序!递归版本 快速排序的思想就是找基准,就比如我们以数组中的第一个数字12为基准,我们从最后往前面找,如果找到一个比12小的数字就用它覆盖12,但…

Linux—InstallOS-RedHat9.1

下载https://developers.redhat.com/products/rhel/download 需注册账号。安装正常安装就行。安装注意事项:(1)Software SelectionCentOS的摘录过来,通用。最小安装(Minimal Install)这个选项只提供运行CentOS 的基本软件包。最小…

Python学习-----起步4(列表元素的添加,删除,修改,查询,获取长度)

目录 前言: 列表元素的添加(或者叫写入) 1.append()函数 2.extend()函数 3.insert()函数 列表元素的删除 1.remove() 函数 2. pop() 函数 3.clear()函数 4.del …

公司40岁的程序員到底在写什么代码

去年在前公司玩了一年(基本兩三個月一個需求),除了日常維護就一些特別簡單的功能開發,到年底也沒見到公司黃(國企背景),沒辦法只好裸辭,現在這個公司各方面还不错,但是令…

Cookie、Session、Token、JWT只看这一篇文章就够了

什么是认证(Authentication) 通俗地讲就是验证当前用户的身份,证明“你是你自己”(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系统里录入的指纹相匹配时,就打卡成功&a…

MongoDB Map Reduce

在用 MongoDB 查询时,若返回的数据量很大,或者做一些比较复杂的统计和聚合操作做花费的时间很长时,可以使用 MongoDB 中的 mapReduce 进行实现。mapReduce 是个灵活且强大的数据聚合工具,它的好处是可以把一个聚合任务分解为多个小…

设计模式(三)----创建型模式之单例模式(一)

一、创建型模式 创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。 这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。 创建型模式分为: 单例模式 工厂方法模式 抽象工厂模式…

英语学习 3

1 词汇积累 1、ships 船 2、class 级 3、marvels 奇迹 4、marvelous 非凡的、了不起的、极好的 5、cursed 诅咒、被诅咒的 6、the most luxurious ships 最豪华的船 7、luxury 奢侈、奢华的 8、luxurious 心满意足的、舒适的 9、utmost 极度的、最大的 10、kind 种类 11、voya…

Kali Linux神秘工具教程(详细版)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、Kali Linux - 安装和配置信息收集工具二、NMAP隐形扫描搜索Searchsploit域名系统工具dnsenum.plDNSMAPdnstracerLBDHping3漏洞分析工具Cisco-torch工具Cisco…

回溯算法(基础)

目录 一、基本概念 二、以简单全排列认识回溯 (一)决策树 (二)回溯示意图 (三)核心代码 (四)完整代码 三、组合问题 (一)问题 &#xff08…

如何通过groovy扩展方法

最近一直使用jmeter做接口测试,虽然好用,但是每次解析结果都要写大量重复代码。然后想到groovy是可以在运行时动态增强jvm字节码的,比如Date中就有大量增强的方法,比如format,upto,downto......,既然groovy可以&#x…

用 NFTScan 的角度解析 Yuga labs NFT 项目系列

如果要说 NFT 影响力最大的公司是哪个?如果说是 Yuga Labs 应该我想大家应该都不会否认。一个创立一年多的 NFT 营销和开发公司,多次的并购以及行销操作都立下 NFT 界的标竿典范,尤其 BAYC NFT 系列取得巨大成功之后,该团队已成为…

DSP_定义一个大的全局数组_探索之路

前言 最近在做基于dsp平台的无通信接口系统辨识,辨识的时候会有很大的数据需要存到一个数组当中,而dsp如果定义一个很大的全局数组,编译会报错。 本文将探索如何解决这个报错以及全局数组的大小极限。 正文 首先,我们定义了一个…

数学库:Extreme Optimization Numerical 8.1.4 Crack

Extreme Optimization Numerical.NET 的极端优化数值库,更快地构建金融、工程和科学应用程序,具有置信度和预测带的非线性曲线拟合,用于 .NET的极端优化数值库是为 Microsoft .NET 框架构建的通用数学和统计类的集合。用于 .NET的极端优化数值…

将无风险资产与单个风险资产进行组合

目录 1. 基本概念 2. 将无风险资产与单个风险资产进行组合 3. 有效资产组合 1. 基本概念 无风险资产和风险资产。 我的理解:无风险资产利率完全可确定,风险资产的利率称为预期收益率,并且有标准差。 关于风险资产预期收益率和标准差的计…

NC65 自由报表发布为节点如何显示以及如何取消已发布的报表节点

NC65 自由报表发布为节点如何显示以及如何取消已发布的报表节点? 一、NC65 自由报表发布为节点如何显示? 答:需要在动态建模平台-权限管理-职责管理下的职责节点进行功能分配,如下图: 二、如何取消已发布的报表节…