python实现给视频添加字幕,并根据字幕添加语音
文章目录
- 前言
- 一、"pyttsx3"实现“文字到音频”的转换
- 二、"pydub"处理音频
- 1.安装
- 2.测试
- 三、“moviepy”合成字幕和音频
- 1.安装
- 2.测试
- 总结
前言
最近尝试用python实现给一个视频添加字幕和语音,查了很多博客后有了一个拼拼凑凑的方法:
- 使用"pyttsx3"来实现“文字到音频”的转换;
- 使用"pydub"来对得到的音频进行加工和处理;
- 使用"moviepy"来合成字幕和语音文件。
(注:本篇仅作为个人小白的学习记录)
一、"pyttsx3"实现“文字到音频”的转换
pyttsx3是一个很方便的实现从“文字”到“语音”的库,安装和使用都很简单,windows下安装只需要:
pip install pyttsx3
如果要简单实现“文字段”的语音播放也很简单:
import pyttsx3
# 语音模块初始化
engine = pyttsx3.init()
# 设置要播报的字符串
text = "哈哈哈哈哈哈"
engine.say(text)
# 等待运行
engine.runAndWait()
还可以在这基础上将音频文件保存下来:
outFile = "output.aiff"
engine.save_to_file(text, outFile)
# 注意下面这句不能少,否则无法正常生成音频文件
engine.runAndWait()
这里需要注意的一点是,使用pyttsx3能够将文字转为音频,但是其编码格式特殊,保存下来的文件也是"aiff"格式的音频文件,所以如果要使用"MP3"格式则需要pydub中的AudioSegment模块来对其进行更改:
AudioSegment.from_file(outFile).export("Python.mp3", format="mp3")
当然,我也尝试了强行利用“save_to_file”将文件保存为“MP3”格式,虽然能够正常播放,但是这个文件是存在问题的(比如后面使用pydub进行处理的时候会因为无法读入而报错)
参考博客:https://blog.csdn.net/qq_19394437/article/details/97567298?spm=1001.2014.3001.5506
二、"pydub"处理音频
1.安装
pip install pydub
安装完pydub之后还需要安装ffmpeg,可以选择去github下载安装包,我这里给出网盘分享(某位老哥分享了网盘链接,我找不到原文链接了抱歉)
链接: https://pan.baidu.com/s/1dsE8p9YL-ji48Mg0vTfaMA
提取码: irxi
解压后在bin文件夹下有以下三个文件:
复制bin文件路径,添加到环境变量中,然后在cmd窗口运行如下命令:
ffmpeg -version
若正常输出则代表安装完了
(当然这里安装完了,在后面实际使用的时候还可能会出问题)
2.测试
from pydub import AudioSegment# 读入MP3音频文件
audio = AudioSegment.from_mp3('Python.mp3')# 简单加一段空白(静音)片段
X = 2000 #ms
silent = AudioSegment.silent(duration=X)
new_audio = silent + audio# 保存文件
new_audio.export("new_Python.mp3", format="mp3")
代码运行到这里一般都会报错,类似于"RuntimeWarning: Couldn’t find ffmpeg or avconv - defaulting to ffmpeg, but may not work warn(“Couldn’t find ffmpeg or avconv - defaulting to ffmpeg, but may not work”, RuntimeWarning)”,或者是"RuntimeWarning: Couldn’t find ffprobe or …"
我也不知道具体为什么,可能是因为环境路径的问题?
直接给出解决办法:
报错应该会给一个"pydub"中的一个叫“utils.py”文件的路径,
第一步:找到该文件
第二步:找到一个叫"which(program)"的函数
第三步:添加前面下载的"ffmpeg"的“bin”文件路径
第四步:重启电脑
补充(第三步实例):
重启后应该能够正常运行了。
三、“moviepy”合成字幕和音频
1.安装
pip install moviepy
# 实际上安装moviepy的时候会自动安装下面两个库
pip install imageio
pip install imageio-ffmpeg
另外需要单独安装ImageMagick软件并添加到环境变量中
2.测试
from moviepy.editor import *def videocaption(src_mp4, dst_mp4, dottemp):# input:# src_mp4: the path of wait-to-dispose video# dst_mp4: the path of after-dispose video# dottemp--字幕列表['text1','text2','text3',...]# 加载视频video = VideoFileClip(src_mp4)# 逐句添加字幕time = [2,2,2,...] # 字幕持续时间,自行设置start = [4,6,8,10,...] # 字幕开始时间,自行设置position = ['bottom','center',...] # 显示位置,自行设置txts = []for si,sentence in enumerate(dottemp):txt = (TextClip(sentence, fontsize=40,font='SimHei', size=(1900, 40),align='center', color='red').set_position(position[si]).set_duration(time[si]).set_start(start[si]))txts.append(txt)# 合成字幕video = CompositeVideoClip([video, *txts])# 合成音频videos = video.set_audio(AudioFileClip('Python.mp3'))# 保存视频,注意加上参数audio_codec='aac',否则音频无声音videos.write_videofile(dst_mp4, audio_codec='aac')if __name__ == '__main__':# 输入输出路径src_mp4 = r'input.mp4'dst_mp4 = r'output.mp4'# 字幕列表dottemp = ['test1','test2','test3']# 合成视频videocaption(src_mp4,dst_mp4,dottemp)
代码可能会有点问题,自行调试修改
参考博客:https://blog.csdn.net/dongfuguo/article/details/104939046?spm=1001.2014.3001.5506
总结
新手上路,小心谨慎,收获良多。
python实现给视频添加字幕,并根据字幕添加语音相关推荐
- python 制作电子相册 视频_制作电子相册时如何添加文字?用什么软件?
我们平时在分享电子相册时,有时候想要在照片上配上文字,就希望通过视频编辑软件来完成这个步骤,希望大家在看到你制作的电子相册时,能够更加有带入看,这样的电子相册更有特色,今天我们就一起来学习制作电子相册 ...
- python怎么去掉视频字幕_利用Python实现字幕挂载(把字幕文件与视频合并)思路详解...
其实超简单超简单!python好现成的库,一下子省略了好多步骤! 本文在Windows环境下!linux只是不需要手动输入imagicmagick的位置! 需要用到的环境 python(基本上只要不是 ...
- 给视频加字幕HTML代码,一键添加字幕的软件推荐,几分钟学会给短视频加字幕,自媒体人都在用...
很多人觉得给短视频加字幕很辛苦? 今天给大家介绍几款给短视频添加字幕用到的软件. 1.字幕通: 字幕通是一款全新模式的智能视频翻译软件,将繁琐的视频字幕翻译制作工作最大程度的便捷化,成功实现从切分时间 ...
- python怎么去掉视频字幕_python实现去除下载电影和电视剧文件名中的多余字符的方法...
本文实例讲述了python实现去除下载电影和电视剧文件名中的多余字符的方法,是一个非常实用的技巧,分享给大家供大家参考.具体如下: 有时候我们讨厌下载电影和电视剧文件名中的多余字符(如网址和广告字样) ...
- 制作视频给多个视频简单添加字幕,滚动字幕的制作步骤
对于媒体工作者的朋友来说,基本上都会给视频制作字幕,但滚动字幕很多人还不知道该怎么制作,所以今天就给大家分享一个小方法,演示具体的操作步骤,一起来看看吧. 第一步,在电脑网址中下载一下[媒体梦工厂]第 ...
- 微信小程序怎么字体鼠标放上去变颜色?_PR视频怎么用,Arctime字幕软件添加字幕,双语字幕怎么添加?...
一个喜欢分享干货的大叔. 每天学一个剪辑技巧,萌新也能变大佬,大家好我是小林干货文章来了,推荐收藏起来. 今天这篇文章呢,教大家. 1.PR视频怎么用Arctime字幕软件添加字幕?2.双语字幕怎么添 ...
- 免费将中文视频转换为英文视频并添加中英双语字幕
免费将中文视频转换为英文视频并添加中英双语字幕 背景 女朋友需要找关于<不要随意喂养动物园的动物>的英语视频,因为限定是英语类的视频,所以在国内的视频平台基本无法找到.虽然我是个程序员,但 ...
- Adobe Premiere基础(视频的最后一步字幕添加)(六)
什么是字幕 文本工具就是在视频上添加字体的,比如视频水印,弹幕,商品说明,提示等效果 注意: 添加字幕前必须,把视频剪辑全部完成,并且和客户确认好,然后在添加字幕,否则一旦修改了视频字幕白做了 开放式 ...
- 【短视频运营】短视频剪辑 ③ ( 添加字幕 | 智能识别字幕 | 修改字幕 | 字幕预设 | 字幕换行 | 使用字幕作为封面主题 )
文章目录 一.添加字幕 ( 智能识别字幕 ) 二.修改字幕 ( 字幕预设 | 字幕换行 ) 三.使用字幕作为封面主题 一.添加字幕 ( 智能识别字幕 ) 在 素材 面板中 , 选择 " 文本 ...
最新文章
- Subversion存储库中“分支”,“标记”和“主干”的含义是什么?
- 基于嵌入式操作系统VxWorks的多任务并发程序设计――中断与任务
- 跨浏览器的placehold
- Linux下能访问Nginx,本地无法访问
- 由比特币想到的货币那些事儿
- asp页面实现301重定向方法
- linux模拟键盘按键_Linux上的自动键盘按键
- 计算机自动获取ip地址的协议,自动获取ip地址_计算机是如何自动获取的IP地址的...
- EasyUI - panel 高度自适应
- html ur是什么意思_url是什么意思?
- 花之语第五期:紫罗兰
- 计算机毕业设计 SSM同学录管理系统 同学聚会报名系统 在线聚会报名系统Java Vue MySQL数据库 远程调试 代码讲解
- [含lw+源码等]javaweb银行柜员业务绩效考核系统
- 盘点十大生鲜商城平台,生鲜电商还值不值得做
- kali CeWL密码攻击工具 Linux字典生成工具 自定义单词列表生成器
- 微信小程序之沉浸式导航
- 编写三个系别的学生类:英语系,计算机系,文学系(要求通过继承学生类) [选做题] (java)
- redis php 书,PHP-redis中文文档
- linux 互信配置
- Ubuntu16.04、22.04下xfce中使用expect在su时免密码输入切换到root账户
热门文章
- 基于mycat高可用方案——数据库负载(基于阿里云)
- “筑爱助残 欢乐DIY”蒲公英志愿者走进残疾人之
- android_驱动_qcom_【高通SDM660平台】(1) ---Bringup Guide
- STC15官方库函数
- Redis学习笔记(实战篇)(自用)
- 湖北省2023年中级工程师职称评定条件及材料要求,伴德诚
- 记一次Windows Server2008木马清理过程
- 去年净亏7.37亿美元,“自动驾驶第一股”的商业化之痛
- linux ln -s
- 树形结构来了(了解)