这是最新的更新消息,由于个人能力和时间的问题,几次更新后项目的发展和效果仍不能达到预期,请不要对最终效果抱有太大期望并且谨慎尝试源码,一段时间后我会修改该文章的公开状态直到项目再次迎来了有显著提升的大更新:
在使用更大的数据集完成模型的更新后,预测结果在大多数情况下仍然只能在秒单位基础上完成句子的分割,这样一来这个项目就缺乏实际运用所需要的精度。为此我需要重新检查更新神经网络或者使用一套崭新的神经网络来构建模型从而实现毫秒级的预测,这会花费我大量的时间。因此我想说这个项目没有被放弃但是由于技术原因停滞了。
当我能发现一套能够成功实现任务预期目标的完整方法体系时,我会尝试尽快更新项目。 - 2021.7
ASFG (auto-subtitle-file-generation) 是一款基于深度学习的字幕自动生成系统,基于Sound Event Detection技术,用于实现输入音视频 --> 输出对应字幕的功能,ASFG当前支持主流的音视频格式和ass,srt字幕格式,当前项目的关键是能够自动识别视频中人类语音出现的位置,实现自动打时间线,已初步实现离线音频识别,尚不包括翻译功能。
项目完全开放,只要你对项目感兴趣或者对深度学习感兴趣,都可以联系作者,个人资源精力有限,欢迎各位的参与!
2021.2
发布仅能够识别人类对话,自动打时间线的预览版本。
2021.4:
在介绍项目的正文内容之前,我想写一写项目开发的背景和长期考虑,以便各位读者更好地理解项目的结构和在功能上做出选择的原因,跳过此部分不会影响读者对项目的使用。
在完成考研的寒假期间,我在之前知识储备的基础上,动手开始实现整个项目。从技术含量上来说,项目开发的难度不在人工智能技术本身,而在于从输入到实现产出整个流程的工程化,重点包括:
我没有选择在神经网络结构上的大动干戈,原因有二:其一,在时间紧凑的情况下,设计和实现项目整体结构的稳定,保证能够实现各项功能的整合和应用产出是最重要的需求;其二,基于先前的研究,当前采用的PANNs model已经是SED领域表现最佳的深度学习模型,应该足够胜任该项任务。
综合以上考虑,我首先实现了稳定产出带时间线的字幕文件的功能,因为能否准确地识别人类语言在音视频中出现的前后位置,是该项目与众多现场式字幕生成系统的根本区别,现场式的字幕生成系统能够自动生成字幕,但是满足不了对时间线的吻合度要求很高的资源 - 如影视剧等 - 的需求。
也正是由于除了自动打时间线之外的功能在首阶段的开发都没能实现,功能如此不完善,实在惭愧。在将代码开源的同时,也开放了整个深度学习模型训练和应用的模型,希望感兴趣的读者,无论是像我一样的rookie,还是大佬,都能更容易地参与到项目的功能开发当中。
感谢!
2021.3
当前ASFG还处于裸奔阶段,尚未打包为可以独立运行的程序,因此需要python环境的支持(括号部分为构建程序运行环境所需要的步骤)。
python install -r requirements.txt
,pytorch若安装失败,则需要依照官网安装)python run.py
,输入资源路径 + 选择输出文件名即可。ASFG整体的工作流程包括三个方面:
音视频输入 --> ASFG处理 --> 字幕输出
对于使用者来说,当你选择好你希望生成字幕的相关音频或视频后,ASFG会做这些事:
前处理音视频输入 --> 使用训练好的深度学习模型进行预测 --> 语义分割算法后处理 --> 字幕编码及格式优化 --> 生成本地的字幕文件
使用者需要做的只是声明音视频文件路径,然后运行脚本即可。
深度学习是ASFG实现功能的核心组件,在提供面向使用者的python脚本代码的同时,项目中深度学习的整个流程同样是开放的,包含数据集的生成一直到最终模型过程的整个流程。ASFG已经帮你处理好了数据集生成的算法和各个环节的数据衔接,因此,任何感兴趣的人都可以基于ASFG创建自己的数据集,亲自调试参数,然后训练自己的模型,这个过程也会变得简单得多。
具体来说,想亲自来一把深度学习,关注以下几个流程即可:
收集原始数据材料 --> 生成数据集 --> 引用深度学习代码库在数据集上训练模型
原始材料指的是任何你可以收集到本地的音频/视频 + 对应字幕文件;深度学习的代码库指的是模型优化和训练流程中需要使用的各项组件(详见csrc文件夹);至于生成数据集,只需要告知python对应的原始材料文件路径(一般放在src文件夹下),然后运行脚本即可(需要事先创建好存放数据集的文件夹。
深度学习需要很多调试,我主要将调试任务在本地8GB 2070super上运行,性能限制下一些想法成本太高没有实现,开放整个流程也是希望能够有人能作出效果更好的模型,分享出来也能让字幕译制的大大们更好受益。
项目当下在时间线方面主要问题是:
项目预期实现的功能:
以上是两种生成带语音文字和翻译内容的方案,当前还在画饼,慢慢争取实现。
在最先push到github的程序中,训练最终模型使用的数据集为:
共七部电影全部时长构建总计19034个片段,每个片段时长三秒(这个参数也是几经调试最终选择的),由ASFG自动生成,其中包括包含对话片段10964个,不包含对话片段8070个。
选择电影是因为:
使用此数据集也带来了一些明显的不足:
预训练模型来自:PANNs: Large-Scale Pretrained Audio Neural Networks for Audio Pattern Recognition (Pretrained Models)
知乎版本,欢迎移步这里。