发现一个问题,做了视频,没有字幕,大家听着我的8级川普肯定特难受。

于是有了下边的内容,决定给视频加上字幕,还是用Python来实现。

好像还可以,代码整理完毕

先看下一readme

Python实战案例6-自动化办公如何给视频添加字幕
*************************************# 需求分析
视频已经做好,不会再重新剪辑,如何给原视频加上字幕,我们用Python来实现。我们的思路就是提取音频,进行语音识别,生成字幕文本,原视频+字幕重新组合成有字幕的视频。改进后是先把音频分片,再识别组装,大大提高了字幕时序匹配程度。# 程序逻辑提取音频》切割音频~分段识别》生成srt字幕》重新组合视频》输出目标视频# 核心技术pydub, ffmpeg , [百度aip](https://ai.baidu.com/ai-doc/SPEECH/Vk38lxily)* 提取音频 (一)
`ffmpeg -i input.mp4 -f mp3 output.mp3`* 生成srt字幕文件(二)
实现函数
`gen_srt`* 重新组合视频 (三)
`ffmpeg -i input.mp4 -vf subtitles=words.srt -y output.mp4`* 以下为关键音频处理函数
from pydub.silence import split_on_silence
from pydub.silence import detect_nonsilent# 运行环境
bin目录需要加入到环境变量# 运行命令
**需要顺序执行**
`python exec.py gen_mp3 {videopath}` 提取mp3音频
`python exec.py gen_srt {videopath}` 生成srt字幕
`python exec.py gen_video {videopath}` 重新合成新的视频*本案例代码仅用于学习交流,请勿用于商业*##### 编程学习交流平台 [括知星球](https://www.kozmos.cn)
##### 编程学习交流Q群 `922484347`***
*本课程案例源码已发布至 www.kozmos.cn*

核心一点就是普通话了, 不标准自然就很多错别字,然后就是断句,语速过快过慢都会有影响字幕的显示。

看一下效果

二、优化字幕显示

由于音频没有做切割,字幕时序会有问题,目前在优化程序以适应快速的语速。

Ok , 优化结束,来看一下效果

在优化的过程增加了一步,先把音频切割,再分段语音识别,组装,这样字幕就非常贴合实际了。

生成的音频切片

字幕已经完美匹配声音

处理好错别字,工具用于办公没有问题。

附上Python6的srt内容

1
00:00:02.362 --> 00:00:08.860
大家好,这一节我们学习一下,如何用Python在自动化办公的场景当中给视频添加字幕
2
00:00:09.636 --> 00:00:11.232
有时候我们有这样的一个需求
3
00:00:11.680 --> 00:00:14.754
就是视频已经做好,我们不能再去重新剪辑
4
00:00:15.967 --> 00:00:17.614
那么,如何给别人视频加上字幕呢?
5
00:00:18.325 --> 00:00:19.285
我们用Python来实现
6
00:00:20.418 --> 00:00:22.525
首先我们的思路是先提取音频
7
00:00:23.504 --> 00:00:24.857
再进行语音识别
8
00:00:25.436 --> 00:00:26.682
然后生成字幕文本
9
00:00:27.322 --> 00:00:27.591
然后把
10
00:00:28.190 --> 00:00:31.030
原视频加字幕重新组合生成有字幕的一个视频
11
00:00:32.215 --> 00:00:33.578
之前有一个版本是
12
00:00:34.804 --> 00:00:35.372
识别的
13
00:00:35.984 --> 00:00:39.767
声音和字幕匹配度不是很高,有时候听到声音,然后
14
00:00:40.442 --> 00:00:41.182
字幕又没有了
15
00:00:42.055 --> 00:00:44.822
所以我们改进后是先把音频进行分片
16
00:00:45.580 --> 00:00:46.454
在识别组装
17
00:00:47.370 --> 00:00:50.596
这样可以大大提高字幕的和声音的一个匹配程度
18
00:00:51.649 --> 00:00:52.131
之前是没有
19
00:00:52.634 --> 00:00:54.135
没有切割音频这部分的
20
00:00:55.999 --> 00:00:56.03121
00:00:57.057 --> 00:00:57.714
核心技术
22
00:00:59.167 --> 00:00:59.996
而我们用到了pydub
23
00:01:01.051 --> 00:01:01.215
是处理音频
24
00:01:02.408 --> 00:01:03.825
主要是用于音频的一个切割
25
00:01:04.748 --> 00:01:05.197
然后ffmpeg
26
00:01:05.825 --> 00:01:06.354
是处理视频
27
00:01:08.396 --> 00:01:08.908
然后百度
28
00:01:09.811 --> 00:01:09.987
的接口
29
00:01:10.471 --> 00:01:11.419
我们来做语音的一个识别
30
00:01:13.259 --> 00:01:14.264
接下来我们看一下
31
00:01:15.016 --> 00:01:15.735
具体的一个
32
00:01:16.327 --> 00:01:16.437
实现逻辑
33
00:01:17.277 --> 00:01:17.798
其实接口的
34
00:01:18.981 --> 00:01:19.253
程序
35
00:01:20.132 --> 00:01:20.652
执行是没有变的
36
00:01:21.673 --> 00:01:22.095
我们还是
37
00:01:23.625 --> 00:01:25.058
看一下程序的一个运行过程吧
38
00:01:26.641 --> 00:01:27.515
我们复制这样的一行代码
39
00:01:28.539 --> 00:01:29.187
到命令行里面
40
00:01:32.221 --> 00:01:32.446
我们
41
00:01:32.937 --> 00:01:32.94842
00:01:35.386 --> 00:01:36.579
这里输入
43
00:01:37.661 --> 00:01:39.138
音频的下面的一个
44
00:01:40.148 --> 00:01:41.305
已经有了一个
45
00:01:42.134 --> 00:01:42.488
视频文件
46
00:01:43.312 --> 00:01:43.671
叫I3(i3.mp4)
47
00:01:44.297 --> 00:01:45.543
上一节课我们已经用到
48
00:01:47.181 --> 00:01:48.971
当我们执行这样一个命令过后
49
00:01:49.447 --> 00:01:51.571
会在data_output目录下面生成
50
00:01:55.066 --> 00:01:56.439
一个mp3的一个文件
51
00:01:57.550 --> 00:01:57.603
看一下
52
00:02:02.087 --> 00:02:03.656
这里有i3的一个
53
00:02:05.689 --> 00:02:05.880
MP3已经生成
54
00:02:09.279 --> 00:02:10.509
我们执行一下
55
00:02:12.136 --> 00:02:12.720
生成字幕
56
00:02:13.658 --> 00:02:14.747
还是第二步srt
57
00:02:15.882 --> 00:02:18.160
因为这个是字幕文件的一个格式
58
00:02:18.744 --> 00:02:18.920
先生成
59
00:02:21.105 --> 00:02:21.301
回车
60
00:02:24.586 --> 00:02:26.444
呃,这个过程可能会有一点点久
61
00:02:27.332 --> 00:02:31.114
我们可以看到这个目录下面,其实它会生成一个叫i3的文件夹
62
00:02:31.933 --> 00:02:33.030
等一下,我们程序的一个执行
63
00:02:35.252 --> 00:02:36.832
这里说一下,我们做这个视频
64
00:02:37.563 --> 00:02:38.108
我有时候
65
00:02:38.911 --> 00:02:41.162
可能会说的快一点,也可能说的慢一点
66
00:02:41.867 --> 00:02:42.139
有时候声音
67
00:02:44.446 --> 00:02:44.670
其他的
68
00:02:45.406 --> 00:02:45.751
杂音之类的
69
00:02:46.766 --> 00:02:48.669
所以就想提高一下这个
70
00:02:49.326 --> 00:02:50.729
字幕的一个识别准确度
71
00:02:51.623 --> 00:02:53.707
无论是说话快还是慢
72
00:02:54.220 --> 00:02:55.721
这样程序,如果都能很好的
73
00:02:56.236 --> 00:02:56.303
解析到了
74
00:02:57.947 --> 00:02:59.159
这个应该是可以用于办公
75
00:03:00.303 --> 00:03:01.594
但是我现在这样的一串词语
76
00:03:02.154 --> 00:03:02.362
就不知道
77
00:03:03.166 --> 00:03:03.247
是否OK
78
00:03:04.546 --> 00:03:04.834
待会我们
79
00:03:05.343 --> 00:03:06.036
通过程序
80
00:03:06.482 --> 00:03:06.746
来跑一下
81
00:03:07.384 --> 00:03:08.454
如果OK,我们就直接发了
82
00:03:09.831 --> 00:03:11.466
看一下,刚才生成I3的
83
00:03:12.429 --> 00:03:13.403
这样他会把音频
84
00:03:14.163 --> 00:03:14.493
切割
85
00:03:15.181 --> 00:03:15.595
成了很多段
86
00:03:17.044 --> 00:03:18.493
这里是pcm的一个
87
00:03:19.123 --> 00:03:20.210
单声道的音乐这样
88
00:03:20.872 --> 00:03:22.425
百度去识别就会特别的
89
00:03:23.586 --> 00:03:23.614
OK
90
00:03:25.360 --> 00:03:25.846
现在我们
91
00:03:27.447 --> 00:03:27.770
这个
92
00:03:29.033 --> 00:03:29.985
srt已经生成好了
93
00:03:31.711 --> 00:03:32.335
可以看到了
94
00:03:32.836 --> 00:03:34.487
i3.srt这样的一个字幕文件
95
00:03:35.069 --> 00:03:36.313
大家看到这个文件里面可能
96
00:03:36.761 --> 00:03:37.342
会有错别字
97
00:03:38.239 --> 00:03:38.806
这个就是
98
00:03:39.425 --> 00:03:39.951
发音或者
99
00:03:40.662 --> 00:03:40.762
普通话(川普哈哈)
100
00:03:42.104 --> 00:03:42.115
OK
101
00:03:42.910 --> 00:03:43.016102
00:03:44.411 --> 00:03:48.789
srt生成好过后,我们可以用它来生成视频,这样的一个命令
103
00:03:49.345 --> 00:03:49.927
gen
104
00:03:51.910 --> 00:03:52.398
Video
105
00:03:53.209 --> 00:03:54.637
大家注意第三个参数
106
00:03:55.497 --> 00:03:56.064
这个参数
107
00:03:56.679 --> 00:03:58.515
就是直接指向了data_input目录的
108
00:03:59.852 --> 00:04:01.069
MP4文件就是视频文件
109
00:04:01.656 --> 00:04:02.110
其他的不用调整
110
00:04:03.128 --> 00:04:04.055
只是中间的这个参数
111
00:04:07.042 --> 00:04:07.480
会变一下
112
00:04:09.237 --> 00:04:10.794
我们回车回车执行,看一下效果
113
00:04:15.822 --> 00:04:17.784
当然也会在这个data_output目录
114
00:04:20.284 --> 00:04:21.905
会生成一个result.i3.mp4
115
00:04:24.689 --> 00:04:25.257
这里也有一个进度
116
00:04:27.312 --> 00:04:27.816
他的一个
117
00:04:28.551 --> 00:04:29.284
这样这个视频比较短
118
00:04:33.173 --> 00:04:33.681
可能会有一点点慢
119
00:04:36.507 --> 00:04:36.959
根据视频的一个长度来定
120
00:04:38.777 --> 00:04:40.150
这个过程就是用
121
00:04:40.683 --> 00:04:41.039
ffmpeg
122
00:04:41.850 --> 00:04:44.393
对字幕和视频重新进行了一个组装
123
00:04:45.868 --> 00:04:46.822
生成好过后
124
00:04:52.135 --> 00:04:52.191
帧
125
00:04:53.028 --> 00:04:53.086
然后
126
00:04:56.350 --> 00:04:56.491
FPS
127
00:04:58.099 --> 00:04:58.131
帧速率
128
00:05:00.649 --> 00:05:01.164
我们等一下
129
00:05:05.667 --> 00:05:06.809
这个视频好像有50多秒
130
00:05:12.088 --> 00:05:12.144
我想听
131
00:05:14.481 --> 00:05:15.547
待会,我们也会
132
00:05:16.127 --> 00:05:17.796
把刚才我们录制的这样的一个视频
133
00:05:18.289 --> 00:05:19.616
进行这样的一个操作
134
00:05:20.623 --> 00:05:21.341
大家看一下
135
00:05:22.003 --> 00:05:22.150
最后合成
136
00:05:22.797 --> 00:05:22.832
那个效果
137
00:05:24.644 --> 00:05:25.079
这个测试视频已经OK了
138
00:05:26.346 --> 00:05:26.873
待会我们会从
139
00:05:27.430 --> 00:05:27.824
重新生成一个
140
00:05:28.605 --> 00:05:28.930
Python6的一个视频
141
00:05:33.450 --> 00:05:34.630
看一下这个i3.MP4
142
00:05:42.086 --> 00:05:42.527
好像还OK吧!
143
00:05:49.609 --> 00:05:49.942
Okokok
144
00:05:51.010 --> 00:05:51.498
没有没有多大问题
145
00:05:53.842 --> 00:05:55.729
代码我还是会传到括知星球的学习平台
146
00:05:57.413 --> 00:05:59.439
大家可以这里下载或给我提问,谢谢大家

代码已经上传,有什么问题都可以随时给我提问,谢谢大家支持。

Python自动化办公如何给视频添加字幕实战案例6相关推荐

  1. python之 ffmpeg给mp4视频添加字幕

    目录 ffmpeg给mp4视频加字幕 执行结果: ffmpeg给mp4视频加字幕 前期输入准备: mp4视频 外挂字幕:是一个单独的外部字幕文件,格式类型一般有srt.vtt.ass等等.播放视频时, ...

  2. 使用Python给自己的录课视频添加字幕

    功能描述: 使用Python编写程序,给视频添加字幕,包括逐句出现的字幕和逐词出现的字幕,自己随意设置字幕的位置.起止时间等属性. 参考代码:

  3. python自动化办公演示视频-2020年最新Python自动化办公视频教程(2020/9/3)

    2020年最新Python自动化办公视频教程,资源齐全,里面包含视频教程.软件.课件.源码及教材,该套课程一共有34节课,总大小为:3.2G. 目录结构如下: [环境安装]视频版 Windows 安装 ...

  4. Python根据字幕文件自动给视频添加字幕(通用版)

    功能描述: 根据给定的字幕文件中的字幕信息,自动给视频添加字幕,运行程序后输入要添加字幕的视频文件和对应的字幕文件路径即可.实际使用时不需要对程序做任何修改,只需要根据实际的视频内容来修改字幕文件就可 ...

  5. python实现给视频添加字幕,并根据字幕添加语音

    文章目录 前言 一."pyttsx3"实现"文字到音频"的转换 二."pydub"处理音频 1.安装 2.测试 三."moviep ...

  6. Python自动化办公--长图拼接,视频合并

    Python自动化办公–长图拼接,视频合并 点击访问我的博客系统,了解更多有趣内容哦

  7. python自动化办公能做什么-用Python自动办公,做职场高手(完结)

    教程目录: ┣━07.S2 Word自动化处理,又快又好做文档 ┃ ┣━36 本章介绍 ┣━08.[Word]S2-1 轻松用Python快速生成Word文档 ┃ ┣━45.[真实案例]S2-1-3 ...

  8. Python 自动化办公应用大全(ChatGPT 版)

    以下内容来自公众号逆锋起笔,关注每日干货及时送达 你被降维打击过吗? 在刘慈欣的科幻小说<三体>中,高级文明掌握了一种维度武器,可以将攻击目标所处的空间维度降低,使其无法生存. 二向箔飞出 ...

  9. python自动化办公入门书籍-视频教程-零基础Python自动化办公(漫画版)-Python

    零基础Python自动化办公(漫画版) 现任某大型游戏公司后端工程师,阿里云大学云学院导师,中国人工智能协会高级会员,HackPython工作室负责人,曾出版书籍<深入浅出生成对抗网络:原理剖析 ...

最新文章

  1. 质数c语言欧拉筛选,Python|欧拉筛法求质数
  2. mysql access 2017_如何把Access的数据导入到Mysql中
  3. sparklines图表
  4. XAMPP Apache + MySQL + PHP + Perl
  5. 牛客题霸 [三个数的最大乘积]C++题解/答案
  6. 工作篇-佛山三水恒大-2020.11.13
  7. ORACLE sqlplus设置行数和宽度
  8. (转载)今天的不在家呢的即时通讯
  9. 导出excel/xml
  10. 8月份比亚迪纯电动汽车产销量双双超过3万辆 是去年同期3倍多
  11. 如何优雅的使用迅雷(Mac)
  12. 洛谷P2757 [国家集训队]等差子序列
  13. 这份关于高三的秘籍,一定要知道!
  14. uni-app 表单验证
  15. https请求连接超时
  16. 如何使用SOLIDWORKS绘制外螺纹线?
  17. 换分币c语言程序,编写程序输出用一元人民币兑换成1分、2分和5分硬币的不同兑换方法...
  18. 针对知识图谱嵌入(KGE)的投毒攻击【论文阅读】
  19. VM15 NAT模式下虚拟机上网
  20. LTE-TDD随机接入过程(3)-RAR(MSG2)以及MSG1的重传

热门文章

  1. 阿里云“创客+”孵化基地落户长沙
  2. Google App Engine 入门教程
  3. 支付宝小程序实现自定义地区三级联动
  4. flutter dialog中软键盘遮挡解决冲突
  5. 不要让我学的被颠覆!!渣一样的数据库设计!
  6. 记录一次服务器被拿去挖矿的经历
  7. 巧用ios朗读kindle图书
  8. Java+sqlserver2014数据库连接
  9. AMD推出用于工作站PC的64核心Threadripper Pro
  10. 百度优化软件值得重视