文章目录

  • 前言
  • 一、"pyttsx3"实现“文字到音频”的转换
  • 二、"pydub"处理音频
    • 1.安装
    • 2.测试
  • 三、“moviepy”合成字幕和音频
    • 1.安装
    • 2.测试
  • 总结

前言

最近尝试用python实现给一个视频添加字幕和语音,查了很多博客后有了一个拼拼凑凑的方法:

  1. 使用"pyttsx3"来实现“文字到音频”的转换;
  2. 使用"pydub"来对得到的音频进行加工和处理;
  3. 使用"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实现给视频添加字幕,并根据字幕添加语音相关推荐

  1. python 制作电子相册 视频_制作电子相册时如何添加文字?用什么软件?

    我们平时在分享电子相册时,有时候想要在照片上配上文字,就希望通过视频编辑软件来完成这个步骤,希望大家在看到你制作的电子相册时,能够更加有带入看,这样的电子相册更有特色,今天我们就一起来学习制作电子相册 ...

  2. python怎么去掉视频字幕_利用Python实现字幕挂载(把字幕文件与视频合并)思路详解...

    其实超简单超简单!python好现成的库,一下子省略了好多步骤! 本文在Windows环境下!linux只是不需要手动输入imagicmagick的位置! 需要用到的环境 python(基本上只要不是 ...

  3. 给视频加字幕HTML代码,一键添加字幕的软件推荐,几分钟学会给短视频加字幕,自媒体人都在用...

    很多人觉得给短视频加字幕很辛苦? 今天给大家介绍几款给短视频添加字幕用到的软件. 1.字幕通: 字幕通是一款全新模式的智能视频翻译软件,将繁琐的视频字幕翻译制作工作最大程度的便捷化,成功实现从切分时间 ...

  4. python怎么去掉视频字幕_python实现去除下载电影和电视剧文件名中的多余字符的方法...

    本文实例讲述了python实现去除下载电影和电视剧文件名中的多余字符的方法,是一个非常实用的技巧,分享给大家供大家参考.具体如下: 有时候我们讨厌下载电影和电视剧文件名中的多余字符(如网址和广告字样) ...

  5. 制作视频给多个视频简单添加字幕,滚动字幕的制作步骤

    对于媒体工作者的朋友来说,基本上都会给视频制作字幕,但滚动字幕很多人还不知道该怎么制作,所以今天就给大家分享一个小方法,演示具体的操作步骤,一起来看看吧. 第一步,在电脑网址中下载一下[媒体梦工厂]第 ...

  6. 微信小程序怎么字体鼠标放上去变颜色?_PR视频怎么用,Arctime字幕软件添加字幕,双语字幕怎么添加?...

    一个喜欢分享干货的大叔. 每天学一个剪辑技巧,萌新也能变大佬,大家好我是小林干货文章来了,推荐收藏起来. 今天这篇文章呢,教大家. 1.PR视频怎么用Arctime字幕软件添加字幕?2.双语字幕怎么添 ...

  7. 免费将中文视频转换为英文视频并添加中英双语字幕

    免费将中文视频转换为英文视频并添加中英双语字幕 背景 女朋友需要找关于<不要随意喂养动物园的动物>的英语视频,因为限定是英语类的视频,所以在国内的视频平台基本无法找到.虽然我是个程序员,但 ...

  8. Adobe Premiere基础(视频的最后一步字幕添加)(六)

    什么是字幕 文本工具就是在视频上添加字体的,比如视频水印,弹幕,商品说明,提示等效果 注意: 添加字幕前必须,把视频剪辑全部完成,并且和客户确认好,然后在添加字幕,否则一旦修改了视频字幕白做了 开放式 ...

  9. 【短视频运营】短视频剪辑 ③ ( 添加字幕 | 智能识别字幕 | 修改字幕 | 字幕预设 | 字幕换行 | 使用字幕作为封面主题 )

    文章目录 一.添加字幕 ( 智能识别字幕 ) 二.修改字幕 ( 字幕预设 | 字幕换行 ) 三.使用字幕作为封面主题 一.添加字幕 ( 智能识别字幕 ) 在 素材 面板中 , 选择 " 文本 ...

最新文章

  1. Subversion存储库中“分支”,“标记”和“主干”的含义是什么?
  2. 基于嵌入式操作系统VxWorks的多任务并发程序设计――中断与任务
  3. 跨浏览器的placehold
  4. Linux下能访问Nginx,本地无法访问
  5. 由比特币想到的货币那些事儿
  6. asp页面实现301重定向方法
  7. linux模拟键盘按键_Linux上的自动键盘按键
  8. 计算机自动获取ip地址的协议,自动获取ip地址_计算机是如何自动获取的IP地址的...
  9. EasyUI - panel 高度自适应
  10. html ur是什么意思_url是什么意思?
  11. 花之语第五期:紫罗兰
  12. 计算机毕业设计 SSM同学录管理系统 同学聚会报名系统 在线聚会报名系统Java Vue MySQL数据库 远程调试 代码讲解
  13. [含lw+源码等]javaweb银行柜员业务绩效考核系统
  14. 盘点十大生鲜商城平台,生鲜电商还值不值得做
  15. kali CeWL密码攻击工具 Linux字典生成工具 自定义单词列表生成器
  16. 微信小程序之沉浸式导航
  17. 编写三个系别的学生类:英语系,计算机系,文学系(要求通过继承学生类) [选做题] (java)
  18. redis php 书,PHP-redis中文文档
  19. linux 互信配置
  20. Ubuntu16.04、22.04下xfce中使用expect在su时免密码输入切换到root账户

热门文章

  1. 基于mycat高可用方案——数据库负载(基于阿里云)
  2. “筑爱助残 欢乐DIY”蒲公英志愿者走进残疾人之
  3. android_驱动_qcom_【高通SDM660平台】(1) ---Bringup Guide
  4. STC15官方库函数
  5. Redis学习笔记(实战篇)(自用)
  6. 湖北省2023年中级工程师职称评定条件及材料要求,伴德诚
  7. 记一次Windows Server2008木马清理过程
  8. 去年净亏7.37亿美元,“自动驾驶第一股”的商业化之痛
  9. linux ln -s
  10. 树形结构来了(了解)