最新版本
最新版本请转下面这篇
这是什么
起因是我做视频懒得说话,最多在视频做好后加上字幕,但光有字幕没语音感觉还是差了点意思。市面上有很多文本朗读器,可是我并没有找到一款能朗读字幕的应用,我这里的朗读字幕指语音能自动和字幕时间轴匹配。虽然有几款播放器(potplayer、kmplayer、VLC)自带字幕朗读功能,通过一边朗读一遍录音的话就可以得到我想要的音频,但这种做法过于笨拙。本着学习的目的,我试着用py写了一个小程序实现了字幕朗读的功能。
实现原理
充分利用已有的轮子
代码
写完了发现比想象中要简单,几行代码就搞定了。目前只支持SRT格式的字幕文件,反正字幕文件间可以互相转,对于复杂的字幕可能引发的bug现在一概忽略(比如字幕重叠、一句话语音过长,多轨字幕等)。另外目前都是单线程,速度可能有点慢,程序可能出现假死无响应状态,只要后台文件一直在增加,大可不用管。(因为语音平台都是限制并发数的,感觉多线程有必要?)
现已添加多线程。
下载
使用
- 安装依赖
pip install -r requirements.txt
- 安装 ffmpeg
- 下载解压ffmpeg
- 将解压的 ffmpeg/bin 路径添加到系统环境变量
- 填写百度 KEY在百度 AI 平台获取相关 KEY ,打开 main.py 填写相应 KEY
- 启动
python main.py [.srt文件]
- 安装 ffmpeg
- 下载解压ffmpeg
- 将解压的 ffmpeg/bin 路径添加到系统环境变量
安装依赖
python -m venv venv venv\Scripts\activate pip install -r requirements.txt
- 启动
flask run
浏览器打开 http://127.0.0.1:5000/ 获取并填写相关 key 后点击生成,所有生成的文件在 output 文件夹内。
视频案例演示
后记
后来发现一个有同样功能的软件:http://www.cross-plus-a.com/cn/balabolka.htm 打开工具->字幕转换器功能就是,这功能藏的太隐秘当初都没找到。
后后来发现一个叫字幕说的网站也有类似的服务,不过介绍来看,这个是输入文本,然后生成同步的语音和字幕。虽然节省了做字幕的功夫,但这种只适合那种一刻不停的说的视频,适用性还有待提高(有空我也可以整合实现这种功能)。
33 条评论
字母朗读软件里的Balabolka不知道怎么用
Balabolka这个软件没有字幕处理功能字幕里的数字时间码也朗读了
能不能把这个功能做成一个网页像字幕说那种,你这种还是太复杂,太费事,收费也可以的,
怎么设置那个环境变量啊 太复杂了 怎么新建 谢谢了
看最新版那个,不用设置环境变量,解压即用
合成好的音频总感觉清晰度不好,单个生成的音频每一句听着清晰度还可以,就是合成一个mp3后,音质下降比较多,是不是生成mp3码流压缩的比较狠?这个能不能调整?谢谢!
阿里云的声音更新了,增加了文学大类的声音,是不是咱们这个软件也更新下?另外个人觉得讯飞的机器配音比阿里云的好很多,是不是可以集成一下讯飞的配音。OωO 祝版主天天开心!
现已更新
嗯好的,预计假期可以抽空更新。
麻烦问下,最近有更新吗?盼星星盼月亮啊(☆ω☆)
下载下来的都是0字节
评论区有蓝奏云下载地址,有空我加上|´・ω・)ノ
appkey怎么获取
去百度或者阿里云后台开启相关服务后获取
ok,找到问题了,是ffmpeg,我的路径设置有问题,已经解决,谢谢。。。。。
百度云下载第一句语音后就卡住了,app id应该没设置错误,audio目录下生成了第一句字幕语音
用我示例字幕测试了吗,绝大多数问题都是因为字幕不规范导致的问题
另外用Balabolka的语音库,会突然提示没了第几句wav文件,然后卡住 。 看audio文件夹,wav文件都已经下载,就是没合成 为一个文件。我比较丧心病狂,合成的是400句,5000字 左右的srt。能不能把n个wav合成一个按字幕播音mp3,这个功能单独分出来?
这个不难,过几天看看∠( ᐛ 」∠)_
用的就是软件自带的srt问句,出了个错误框“Expecting value:line1 conlumn 1 (char 0)”.
百度用的是免费的app id,默认开通了语音合成。阿里云的app id好像要收费?
没见过的报错,我也不知道你问题出在哪╮(╯▽╰)╭ 阿里那个免费试用三个月吧好像
我用win7,win10的纯洁系统都出现这个问题,“Expecting value:line1 conlumn 1 (char 0)”,好像是Python的错误反馈,请检查一下代码是不是有bug?
我视频演示都在那了,演示文件不会出错的
我用阿里云对范例的srt进行合成,也出现同样的错误提示,看audio文件夹,4个语句的mp3已经下载好,所以api是没问题的。balabolka的发音人选择太少,真是郁闷。。。。
那你可能是ffmpeg没有配置好
嗯,我把bin下面三个文件直接移到软件的根目录下,解决了。