最新版本

最新版本请转下面这篇

这是什么

起因是我做视频懒得说话,最多在视频做好后加上字幕,但光有字幕没语音感觉还是差了点意思。市面上有很多文本朗读器,可是我并没有找到一款能朗读字幕的应用,我这里的朗读字幕指语音能自动和字幕时间轴匹配。虽然有几款播放器(potplayer、kmplayer、VLC)自带字幕朗读功能,通过一边朗读一遍录音的话就可以得到我想要的音频,但这种做法过于笨拙。本着学习的目的,我试着用py写了一个小程序实现了字幕朗读的功能。

实现原理

充分利用已有的轮子

  • 通过百度AI平台和阿里云语音服务实现语音合成
  • 利用srt库处理srt字幕文件
  • 利用pydub库对声音进行合成和拼接

代码

写完了发现比想象中要简单,几行代码就搞定了。目前只支持SRT格式的字幕文件,反正字幕文件间可以互相转,对于复杂的字幕可能引发的bug现在一概忽略(比如字幕重叠、一句话语音过长,多轨字幕等)。
另外目前都是单线程,速度可能有点慢,程序可能出现假死无响应状态,只要后台文件一直在增加,大可不用管。(因为语音平台都是限制并发数的,感觉多线程有必要?)
现已添加多线程。

下载

使用

  • 安装依赖 pip install -r requirements.txt
  • 安装 ffmpeg
  1. 下载解压ffmpeg
  2. 将解压的 ffmpeg/bin 路径添加到系统环境变量
  • 填写百度 KEY在百度 AI 平台获取相关 KEY ,打开 main.py 填写相应 KEY
  • 启动 python main.py [.srt文件]

  • 安装 ffmpeg
  1. 下载解压ffmpeg
  2. 将解压的 ffmpeg/bin 路径添加到系统环境变量
  • 安装依赖

    python -m venv venv
    venv\Scripts\activate
    pip install -r requirements.txt
  • 启动 flask run浏览器打开 http://127.0.0.1:5000/ 获取并填写相关 key 后点击生成,所有生成的文件在 output 文件夹内。

  • 安装 ffmpeg
  1. 下载解压ffmpeg
  2. 将解压的 ffmpeg/bin 路径添加到系统环境变量(可能需要重启电脑)

由于申请不了谷歌api,目前做不了谷歌接口
报毒请添加白名单或者信任,我自己电脑都报毒→_→,不放心自己下载源码运行


视频案例演示

后记

后来发现一个有同样功能的软件:http://www.cross-plus-a.com/cn/balabolka.htm 打开工具->字幕转换器功能就是,这功能藏的太隐秘当初都没找到。


后后来发现一个叫字幕说的网站也有类似的服务,不过介绍来看,这个是输入文本,然后生成同步的语音和字幕。虽然节省了做字幕的功夫,但这种只适合那种一刻不停的说的视频,适用性还有待提高(有空我也可以整合实现这种功能)。

最后修改:2021 年 01 月 28 日
你的赞赏是我前进的动力