之前哈利波特出了新版有声书有坛友讨论过这个问题: 关于新出的《哈利波特》多人配音版音频书 字幕快速生成的探讨 - 软件经验交流展望 - FreeMdict Forum
我虽然之前一直在用Subtitle Edit,但总感觉不尽如人意,其实之前匹配日文课文时就想写个类似的工具,更适合电子书或者文章的匹配,现在AI编程越来越强,终于可以快速实现这个想法了。
这次用了一晚上用ai写了个音频对齐工具,复刻了Subtitle Edit的部分功能,而且侧重电子书的强制对齐。目前思路和之前写的OCR工具类似,先识别,后匹配,然后可以通过静音区优化,为了方便调用各种模型,仍然选择了python。目前支持两种ASR模型,包括Whisper和Qwen ASR,此外还支持Qwen3-ForcedAligner-0.6B直接对齐。
github地址:
注意,虽然github编译了一个版本,但是是cpu版,需要用gpu加速的话还是下载源码自行配置gpu版torch环境比较好。打包gpu版python环境太大了,光cuda相关就要4gb。
测试采用了哈利波特的日语版和西语版,支持三个视图,句子,文章和对比视图:
可以选择波形图或者频谱图,可以手动编辑段落
结果可以导出为网页或字幕:
winn
3
我以前都是用程序分拆音频。有些分拆得不好的,需要人工编辑。
版本更新,现在支持全书识别,而且长任务会主动释放缓存防止显存占用过高。增加大量编辑功能,支持自动分句和按词定位
我也是程序拆分+人工编辑集成的功能,不过是直接实现了subtitle edit的主要功能,而且用了更好的Qwen模型,可以词级别对齐,比whisper的大致时间准很多
Vim
6
对 subtitle edit 比较熟悉,但我还是不太理解本程序要解决或优化的核心问题是什么?能否说说主要的使用场景?我的以下理解是否正确:
- 场景1:各种英文教材,如果我已有官方提供的音频和文本(称为A),那么就可以使用该软件先调用 whisper 或 qwen 模型将音频识别为文本(称为B)及时间戳等必要的信息,然后对齐A和B文本,通过时间戳实现文本A与音频的对齐,最终实现逐句或逐词的点击定位朗读,或音频播放时高亮相应的文本?
- 场景2:电影或视频,只有语音,没有字幕,那么就可以使用该软件识别出相应的文本和时间轴(这是whisper的基本功能),并可以按需编辑文本并自由断句,在此基础上就可以进一步转换为字幕格式?
- 场景3:视频编辑中,要添加字幕,已有语音和文本,但还没有打轴对齐,剪映有个自动对齐的功能(不熟悉,好像是这么称呼),原理上好像也是先语音识别,将其与用户提供的文本对比,从而对齐时间抽,但给到用户的感觉,好像很智能,将文本自动匹配到音频上了,是否本软件也实现了类似的功能?
是的,我写这个主要是用来对齐多章节的音频和文本,和之前ocr工具思路类似,ocr是用一个能输出带位置信息的模型,对比另一个不准确的文本,然后人工修正的,人工修正因为可以直接定位到图片,会方便很多。这个是类似的用asr生成的文字,对齐另一个准确的文本定位,生成字幕和带时间的可以按句跳转的html,没有准确文本直接用生成的文本也可以,然后人工修正时间轴。就是给电子书和有声书对齐设计的,所以一开始就支持分章节,m4b格式,长音频,导入epub,现在很多工具要不就是能对齐但不能修改,要不就是对齐不准确,要不就是不支持分章节,没一个满足我需求的,所以自己写了一个。
Vim
8
之前我使用 whisper,如果篇幅一长,会出现很多识别问题,使用 whisperx 会好一些。您对于电子书等这种长篇幅的音频,是如何解决这个问题呢?
目前是分段识别的,一段5分钟左右,优先用静音区域分割
查了下WhisperX其实是多步骤的,也是前面有VAD分段,然后调whisper识别,不用whisper本身的时间,而是后面加了个wav2vec2模型对齐,还有pyannote-audio分析说话人。
我实现的就是这个啊,asr对比界面就是左侧是实际文本,右侧是词级别对齐的识别结果,点右边的词可以直接定位,然后各段是可以直接编辑的。另外8小时的mp3没分章节肯定是不对的,应该是用的工具不支持m4b的章节信息强行转换的。
天气敷和
13
音频播放器的桌面歌词功能可以支持srt吗?不支持的话需要再转成lrc呢
重大更新,编辑界面添加很多优化,然后标题和章节单独的地方也会合并,而且现在支持直接导出epub3 media overylay格式,需要支持的阅读器,比如Thorium。
导出后效果如下:
Vim
16
我之前也实现了这些,不过我的思路与楼主的可能有所不同:
- 我将每个步骤都拆分为一个独立的模块,甚至还有更多的辅助模块,如纯文本的清理(低级错误等)、智能断句(有些文本没有标点)、智能断行(适配字幕长度)、各种格式转换、视频和字幕下载、翻译、翻译与原文的时间轴匹配等
- 像搭积木一样,根据任务的不同,使用 DAG 将这些模块组装为一个workflow,而这些 workflow 可以保存和加载,最终实现灵活应对各种任务。
我做这些,主要用于一个场景:对于喜欢的视频等,但是没有字幕或字幕断句不合理,或翻译不正确等各种不爽,使用这些工具,就可以生成完美的字幕,特别适合对各种新领域的学习等。
版本更新0.3.2,优化原书视图和对齐视图,可以直接预览原书的排版了,html导出接近原书格式,大量编辑功能优化:
之前试过用workaudiobook单纯打轴字幕,周末试用一下这个
天气敷和
20
就是像听歌那样,在桌面显示一个歌词小组件,播到哪句字幕就滚动到哪句,而且不会影响其他窗口。音乐播放器一般只支持lrc格式