字幕生成V2.3-Stable : 吞句子现象fix,mp4原因导致字幕偏移音画不同步fix,提供GUI,支持保留标点和限制句子长度。
更新介绍「Important!」「Important!」「Important!」
1.7/30 引入了一个大 bug:convert short text to long 吞句子现象。「Important!」
代码里有一个 combine_line 是将间隔不超过 combine_line 的合并到一句:
然后发生了离谱的一幕:
input:
5808710|5812470|极少发现混凝土微观结构存在蜂窝空洞现象
5812750|5815045|混凝土配置时采用的
5815770|5818030|啊沙地磨原度相对较高
5818190|5819690|水泥水解充分
5819990|5823850|水泥浇解料与砂骨料接触密实度
5823850|5824090|好
5824110|5824985|我们就说到这儿
5825950|5826190|好
5826350|5828025|华能公司有无补充
5829650|5830030|那么
5830670|5831425|针对
5832610|5832850|呃
5833070|5834455|铁把公司的
output-bug:
5808710|5815045|极少发现混凝土微观结构存在蜂窝空洞现象混凝土配置时采用的
5823850|5824985|好我们就说到这儿
5825950|5828025|好华能公司有无补充
5829650|5830030|那么
5830670|5831425|针对
5832610|5834455|呃铁把公司的
注意需要连续合并的地方,只剩下了开头和结尾一句,其他中间的句子全部被吞了。而只有两句合并的地方,是正常的。
for 循环没写好,代码审查没做好。
output-fix:
5808710|5815045|极少发现混凝土微观结构存在蜂窝空洞现象混凝土配置时采用的
5815770|5824090|啊沙地磨原度相对较高水泥水解充分水泥浇解料与砂骨料接触密实度好
5824110|5824985|我们就说到这儿
5825950|5828025|好华能公司有无补充
5829650|5830030|那么
5830670|5831425|针对
5832610|5834455|呃铁把公司的
2.某些 mp4 转录 wav 后可能长度和 wav 不一致导致字幕偏移。「Important!」
有人反馈过转录的字幕会随着时长递增而渐渐发生偏移,最后音频和字幕错位,能够达到两三秒。
我最初以为是错误累积,但是最后发现是 mp4 的问题。用我的 mp4->wav 软件会少掉三秒,大部分网页版转换和工具包也会有同样的问题。
Solve 详细参见:
mp4 -> wav 少掉三秒 | ffmpeg 音频编解码器选择 XnneHang's Blog
ffmpeg 默认选项的转换也会少掉三秒,但是指定一些特定参数后就正常了。但它让 wav 相当大,于是后面我引入了 GUI,并且把 wav 作为中间产物,支持直接 input mp4->wav。
3.提供 GUI
GUI 是用 TK 写的,我也会 PyQt,但是,那个环境修改起来相当麻烦。tk 大部分内置。
但你依然需要增加一个库(几百 kb):
tkinterdnd2
如果你是用我的整合包,也可以双击 V2_DLC 下提供的『修改环境.bat』,以及你需要 ffmpeg,我会在最后讲如何部署和更改环境。
在有了 GUI 后使用起来会比以前方便很多,我这里略微演示。
快速启动
win+r:

Snipaste_2024-08-08_10-00-27
你可以在任意你需要处理 mp4 的位置打开它。

Snipaste_2024-08-08_10-01-57
生成在相同目录下并且自动删除.wav

Snipaste_2024-08-08_10-02-44
4.标点可以选择「Important!」
有的人用来做长视频文档提取或者教程视频字幕辅助,碰到长句较多的没有标点真的也挺难受的。
现在可以在 config.yaml 中选择:

Snipaste_2024-08-08_09-39-59
新增:
need_punc
- max_sentence_length
- ffmpeg_path。
不得不说 copilot 有一瞬间让我觉得他和我心有灵犀。
这里有一份对比,
左侧 need_punc=True,max_sentence_length=20,
右侧 need_punc=False,max_sentence_length=10

punc_nonpunc
5.合并了 7/30:V2.3 的第 0 个 Issue,英文单词被拆分成字母
具体参见:字幕生成 V2:一个离线字幕提取的一键包,基于阿里的 Funasr,支持 hot_words
那个时候还在测试,没什么问题我就把它加到 Stable 的版本里了。
因为之前的那个版本太水了,所以这个版本依然是 V2.3,不过是 Stable=-=。
怎么部署。
1.对于 github 的朋友们
pip install -r extra_requirements.txt
然后到FFmpeg这里来下一个 ffmpeg,并且在 config.yml 中指定就可以了。
2.对于使用我整合包的朋友们。
通过百度网盘分享的文件:字幕自动生成
链接:https://pan.baidu.com/s/1eLsrEtRON4DXMGtKAJC8bw?pwd=6j95
提取码:6j95
将 V2_DLC 下方所有文件下载,直接覆盖字幕生成 V2 根目录,然后把 ffmpeg 的压缩包解压一下,保证 config.yml 指定路径正确。
双击『修改环境.bat』看到
"Successfully installed tkinterdnd2-0.4.2
Press any key to continue . . ."
就可以使用了。
如果是第一次构建,那么需要先下载字幕生成 V2.7z 然后解压。然后同上覆盖到其根目录。