ASFG - AI可以帮你自动生成字幕文件

ASFG - 开发中的字幕文件自动生成系统

这是最新的更新消息,由于个人能力和时间的问题,几次更新后项目的发展和效果仍不能达到预期,请不要对最终效果抱有太大期望并且谨慎尝试源码,一段时间后我会修改该文章的公开状态直到项目再次迎来了有显著提升的大更新:

在使用更大的数据集完成模型的更新后,预测结果在大多数情况下仍然只能在秒单位基础上完成句子的分割,这样一来这个项目就缺乏实际运用所需要的精度。为此我需要重新检查更新神经网络或者使用一套崭新的神经网络来构建模型从而实现毫秒级的预测,这会花费我大量的时间。因此我想说这个项目没有被放弃但是由于技术原因停滞了。

当我能发现一套能够成功实现任务预期目标的完整方法体系时,我会尝试尽快更新项目。 - 2021.7


ASFG (auto-subtitle-file-generation) 是一款基于深度学习的字幕自动生成系统,基于Sound Event Detection技术,用于实现输入音视频 --> 输出对应字幕的功能,ASFG当前支持主流的音视频格式和asssrt字幕格式,当前项目的关键是能够自动识别视频中人类语音出现的位置,实现自动打时间线,已初步实现离线音频识别,尚不包括翻译功能

项目完全开放,只要你对项目感兴趣或者对深度学习感兴趣,都可以联系作者,个人资源精力有限,欢迎各位的参与!

开发日志

2021.2

发布仅能够识别人类对话,自动打时间线的预览版本。

2021.4:

  • 实现了音频转文字功能,生成的时间线包含对话文字了。功能实现稳定接入,识别效果不甚理想,仍需要优化表现和完善整合。 接下来:
    1. 重新回到SED部分。在应用语音转文字时,发现离线的语言转文字模型无法帮助SED进行优化,表现都不好,其无法进行准确的语句分割和识别,也根本不能完善和替代SED的功能;同时,Sound Event Detection(用来打时间线的,识别人说话的时间点)模块暴露出了问题,需要优化完善。以下改进可能帮助提高表现:数据集单个音频片段过长(原始3s,计划2s或者1s),数据集样本较少(原始19000条数据,计划40000~50000条数据,越多越好),数据集采样频率过高(这个无关乎模型表现,主要是为了节省训练成本,根据论文,16khz和32khz表现差不多,也可能减轻过拟合),采用mixup进行音频预处理(对训练设备要求高,根据训练时间考虑加入)以及其它的模型表现的提升手段,包括修改Loss方程,改进模型结构等等;另外,发现可能造成预测不准的重大问题:acc、dts等语音格式会产生几秒乃至几十秒的音频延迟和冗余,之前只验证的能否支持这些格式的音频训练,没有仔细检验音频解码与原视频/音频的总时间能否对的上,可能会造成严重漏洞,今后所有的数据集全部都要基于无损的wav格式进行训练!!!综上,重新搞个数据集,重新开始一遍遍地跑模型,这可能是个很漫长的过程,下次大更可能要晚一点了。。。
    2. 实行预测和语音识别的并行支持,加快程序运行速度。
    3. 优化语音转文字的离线效果,考虑加入语音增强,待定。

开发背景

在介绍项目的正文内容之前,我想写一写项目开发的背景和长期考虑,以便各位读者更好地理解项目的结构和在功能上做出选择的原因,跳过此部分不会影响读者对项目的使用。

在完成考研的寒假期间,我在之前知识储备的基础上,动手开始实现整个项目。从技术含量上来说,项目开发的难度不在人工智能技术本身,而在于从输入到实现产出整个流程的工程化,重点包括:

  • 人工智能技术在项目识别中的工程化,如项目输入 -> 人工智能输入 -> 人工智能输出 -> 项目输出的无缝衔接。
  • 字幕文件的编码和产出,音视频解码、转换和切片。
  • 生成人工智能技术所需数据集的算法设计和程序设计。

我没有选择在神经网络结构上的大动干戈,原因有二:其一,在时间紧凑的情况下,设计和实现项目整体结构的稳定,保证能够实现各项功能的整合和应用产出是最重要的需求;其二,基于先前的研究,当前采用的PANNs model已经是SED领域表现最佳的深度学习模型,应该足够胜任该项任务。

综合以上考虑,我首先实现了稳定产出带时间线的字幕文件的功能,因为能否准确地识别人类语言在音视频中出现的前后位置,是该项目与众多现场式字幕生成系统的根本区别,现场式的字幕生成系统能够自动生成字幕,但是满足不了对时间线的吻合度要求很高的资源 - 如影视剧等 - 的需求。

也正是由于除了自动打时间线之外的功能在首阶段的开发都没能实现,功能如此不完善,实在惭愧。在将代码开源的同时,也开放了整个深度学习模型训练和应用的模型,希望感兴趣的读者,无论是像我一样的rookie,还是大佬,都能更容易地参与到项目的功能开发当中。

感谢!

2021.3

直接上手

当前ASFG还处于裸奔阶段,尚未打包为可以独立运行的程序,因此需要python环境的支持(括号部分为构建程序运行环境所需要的步骤)。

  1. (安装python)
  2. 下载项目文件夹至本地
  3. 进入本地ASFG根文件夹,在项目根文件夹下打开命令行
  4. (命令行输入运行python install -r requirements.txt,pytorch若安装失败,则需要依照官网安装)
  5. 命令行输入运行python run.py,输入资源路径 + 选择输出文件名即可。
  6. 在项目文件夹的result文件夹中收获生成的字幕文件(支持ass和srt格式)

ASFG的流程及工作原理

ASFG整体的工作流程包括三个方面:

音视频输入 --> ASFG处理 --> 字幕输出

使用者流程

对于使用者来说,当你选择好你希望生成字幕的相关音频或视频后,ASFG会做这些事:

前处理音视频输入 --> 使用训练好的深度学习模型进行预测 --> 语义分割算法后处理 --> 字幕编码及格式优化 --> 生成本地的字幕文件

使用者需要做的只是声明音视频文件路径,然后运行脚本即可。

深度学习流程

深度学习是ASFG实现功能的核心组件,在提供面向使用者的python脚本代码的同时,项目中深度学习的整个流程同样是开放的,包含数据集的生成一直到最终模型过程的整个流程。ASFG已经帮你处理好了数据集生成的算法和各个环节的数据衔接,因此,任何感兴趣的人都可以基于ASFG创建自己的数据集,亲自调试参数,然后训练自己的模型,这个过程也会变得简单得多。

具体来说,想亲自来一把深度学习,关注以下几个流程即可:

收集原始数据材料 --> 生成数据集 --> 引用深度学习代码库在数据集上训练模型 

原始材料指的是任何你可以收集到本地的音频/视频 + 对应字幕文件;深度学习的代码库指的是模型优化和训练流程中需要使用的各项组件(详见csrc文件夹);至于生成数据集,只需要告知python对应的原始材料文件路径(一般放在src文件夹下),然后运行脚本即可(需要事先创建好存放数据集的文件夹。

深度学习需要很多调试,我主要将调试任务在本地8GB 2070super上运行,性能限制下一些想法成本太高没有实现,开放整个流程也是希望能够有人能作出效果更好的模型,分享出来也能让字幕译制的大大们更好受益。

总结当前,展望未来

项目当下在时间线方面主要问题是:

  • 一些对话的时间轴会出现整个延迟或者提前的情况。
  • 在人物急促对话,语句间间隔很小的情况下不能实现准确分割。

项目预期实现的功能:

  • 音频识别(音频转文字),包括每个切割出来片段分别识别和整个音视频文件整个识别两种情况。
  • 能够接收输入的翻译内容(人工精译或机器识别皆可),对应并填入系统自动生成的时间线。

以上是两种生成带语音文字和翻译内容的方案,当前还在画饼,慢慢争取实现。

附:初发布版本数据集和模型详细

在最先push到github的程序中,训练最终模型使用的数据集为:

  • 两杆大烟枪 - Lock, Stock and Two Smoking Barrels 及其字幕文件
  • 美国丽人 - American Beauty 及其字幕文件
  • 达拉斯买家俱乐部 - The Dallas Buyers Club 及其字幕文件
  • 碟中谍4 - Mission: Impossible – Ghost Protocol 及其字幕文件
  • 蝙蝠侠 黑暗骑士崛起 - The Dark Knight Rises 及其字幕文件
  • 国王的演讲 - The King’s Speech 及其字幕文件
  • 天国王朝 - Kingdom of Heaven 及其字幕文件

共七部电影全部时长构建总计19034个片段,每个片段时长三秒(这个参数也是几经调试最终选择的),由ASFG自动生成,其中包括包含对话片段10964个,不包含对话片段8070个。

选择电影是因为:

  • 资源易得
  • 对话形式丰富,内容多样
  • 带有强干扰的背景音和各种各样干扰项
  • 边看电影边调试评估模型表现相当有意思

使用此数据集也带来了一些明显的不足:

  • 只包含了英语资源,对其它语言可能不友好(加入其它语言的影视音频资源)
  • 不包加工后语音,对变声处理的音视频可能不友好(加入变声处理的音视频资源)
  • 只包含了电影,未必就能在其它音频和视频环境下表现好(加入其它类型的音视频资源)

预训练模型来自:PANNs: Large-Scale Pretrained Audio Neural Networks for Audio Pattern Recognition (Pretrained Models)

知乎版本,欢迎移步这里。

你可能感兴趣的:(笔记,python,人工智能,深度学习)