梦璃
梦璃
梦璃

基于本地部署的AI模型的生肉啃食教程(视频篇、附字幕)

原创教程 zxyzxy123 - 2

封面

写在前面

之前有写过一篇教程,但现在回头看过于杂乱了而且有些比较严重的错误。再加上sakura模型有一些更新,于是再写一篇更简单易懂的。

本教程基于openAI公司开发的whisper开源语音识别模型及二次开发的faster-whisper(以下简称fw)等相关应用,以及HuggingFace上的项目sakuraumi/Sakura-13B-Galgame系列模型(以下简称sa),以及基于以上这些模型开发的软件进行。这些软件或模型基于各类开源协议,并且提供了本地部署的方式。首先在此感谢各位软件开发者的工作。本文引用的软件都会标明出处,侵删。
本教程需要有一定的冲浪基础(但相信能上梦璃的各位这些应该都不是问题),同时有一定的硬件要求和计算机知识要求。文章尽可能在详细的同时简单易懂。部分教程不会说明或仅提供链接,烦请自行查看。

本教程的目的是在即使不会日语或者只是勉强能理解一些番剧或者小电影用日语的情况下,尽可能的减少因为听不懂日语导致的一脸懵逼或者。最终呈现的效果是输出视频的中文字幕,主要可以分为语音识别和日语转中文两个步骤。文章末尾也会放出大量我之前自己用AI出的字幕文件,各位也可以看一下这样的识别和翻译效果是否达到了自己心目中的可用水平。

硬件需求

语音识别相关:

省流:最好是20系之后、显存大于等于8G的N卡

whisper推荐使用medium模型,对显存要求不高,但是一旦爆显存速度会非常的缓慢,且会出现幻听、超过20分钟直接啥都听不出来的情况。不推荐使用。

faster-whisper提供了模型量化的方式,说白了就是可以用新N卡(20系及以后)、老N卡(16系及之前)和纯CPU都可以使用。目前主推large-v2和large-v3两个版本。
在使用float16纯显卡方案时,fw对于显存的要求较为严苛,显存不够会直接提示爆显存并停止运行。本人的4060 8G在float16的情况下刚好没有爆显存,推荐N卡在20系以上或者搭载TensorCore或者明确显卡半精度浮点够强的情况下使用float16。不具有或者半精度浮点很差的老N卡(16系及之前、M40等老计算卡)可以优先试试float16,不行再换float32,再不行再换int8。纯CPU方案推荐32G及以上运行内存并选择int8,具有AVX512指令集的CPU(如AMD 7000系CPU)可以加速AI相关应用,部分CPU可在主板BIOS中开启或关闭AVX512。需要注意的是开启AVX512会显著增加CPU的发热,请做好散热或限制功耗。in8量化可能会降低一些精度。
虽然说了这么多,但Faster-Whisper-GUI的作者指出,无论选择什么精度都无所谓,因为精度之间会进行转换。尽管如此还是推荐选择正确的/合适的精度,尽可能最大化的利用硬件性能和加快识别速度/精度。

whisper并没有明确指出是否必须使用N卡、A卡或i卡,但faster-whisper目前只提供了CUDA(即N卡)和纯CPU方案。i卡和A卡请自行探索。

日语翻译相关:

sakura官方表示模型经过调试是可以在A卡上运行的,但官方并不提供A卡支持。i卡未知。建议使用新N卡。sakura模型提供纯CPU和N卡两种方案。纯CPU方案依旧推荐32G及以上运行内存。由于sakura模型所需的硬件和需要选择的模型有很强的关联性,并且可以租用显卡跑,故放在后文的翻译模型选择处具体说明相关内容。

软件/AI模型准备

基于ffmepg的音视频处理软件(可选),如格式工厂(不推荐)

UVR5 人声分离(可选) https://www.bilibili.com/video/BV1ga411S7gP Anjok07/ultimatevocalremovergui: GUI for a Vocal Remover that uses Deep Neural Networks. (github.com)

faster-whisper-large v2或v3等模型

NVIDIA CUDA套件(可选)教程参见 下载cuda和cudnn(11.8版本)_cudnn下载-CSDN博客

语音识别软件:音视频转文字|字幕小工具(作者:B站@万能君的软件库)或 FasterWhisperGUI(作者:B站@UAreGoing2nd,需要安装CUDA套件)

音视频转文字|字幕小工具V1.2:https://www.bilibili.com/video/BV1d34y1F7qA

FasterWhisperGUI:CheshireCC/faster-whisper-GUI: faster_whisper GUI with PySide6 (github.com)

https://www.bilibili.com/read/cv25312969 https://www.bilibili.com/read/cv26636573

Faster Whisper large v2 v3等模型:Models – Hugging Face

Subtitle Edit等字幕编辑器 SubtitleEdit:SubtitleEdit/subtitleedit: the subtitle editor 🙂 (github.com)

Notepad3等高级文本编辑器 https://github.com/rizonesoft/Notepad3

Sakura-7B-v0.9模型 SakuraLLM/Sakura-7B-LNovel-v0.9-GGUF at main (huggingface.co)

Sakura-13B-v0.9b模型 SakuraLLM/Sakura-14B-LNovel-v0.9b-GGUF at main (huggingface.co)

0、消除背景音/分离人声(可选/可直接跳过)

曾经进行字幕转写前比较重要的一件事是消除背景音。影片中的背景音乐会干扰模型的识别,尤其是老whisper模型,甚至一段不含有任何语音的BGM都会干扰整体的识别(即使语音部分不再包含BGM)。多人同时说话对于whisper更是灾难性的。但fw模型似乎对这一问题进行了完善(参考BV1Fj41197Vs),没必要再在语音识别前进行各种处理了。
如果你觉得BGM对识别有干扰或者是存在长时间的多人同时说话场景,可以使用软件UVR进行人声分离。这是一个利用AI模型对音频进行人声分离的软件。教程上参考BV1ga411S7gP。在此不进行过多赘述。

1.1、选择语音识别模型

省流:选faster-whisper-large v2

fw v2和v3识别效果差不多,v3添加了对于粤语的支持。同时由于fw开源的特性,有很多基于fw微调出来的模型,例如优化了中文翻译的模型。你可以在huggingface上搜索faster-whisper来寻找这些模型。

1.2、选择合适的语音识别软件

省流:懒就选语音识别软件:音视频转文字|字幕小工具(作者:B站@万能君的软件库),需要功能多调各种参数就选FasterWhisperGUI(作者:B站@UAreGoing2nd)
音视频转文字|字幕小工具(作者:B站@万能君的软件库)不需要折腾CUDA套件算是一个优势了,提供国内网盘的下载,软件包内直接包含了faster V2和V3模型,但功能比较简单,主打一个简单易用。目前最新版本是1.2(BV1d34y1F7qA)
FasterWhisperGUI是我现在在用的,功能多不少而且集成了其他一些有用的工具,会复杂一些。但是相对webUI的版本看起来简洁得多,参数也能看懂不少。

本教程以FasterWhisperGUI为例:

1.3、调整语音识别参数

省流:懒得话编辑一下模型参数页面的几个选项就行了。

FasterWhisperGUI提供了很多调节选项,这里选择几个常用的参数进行说明:
首先是“模型参数”:

1、尽可能把模型先下到本地然后使用本地模型,2、使用v3模型记得勾选“使用v3模型”,3、处理设备如果是N卡记得选CUDA,4、设备号可以在 任务管理器-性能 中查看,特别是带核显的(主要是笔记本),别选到核显去了,5、计算精度见 硬件需求,6、软件会同时使用CPU和GPU跑,CPU可以全部拉满或者留2~4个线程给其他软件用,7、并发数建议16G运存及以下默认1,如果不同时开其他软件的话勉强可以2

人声活动检测基本需要调的只有最小语音持续时间,建议至少拉700。默认的500会产生太多嗯嗯啊啊。也不建议超过1000,否则会漏一些短句。VAS默认开启,没啥事别关。其他选项同理,不知道是啥不要瞎调。

转写参数最重要的就是音频语言。如果视频中有多种语言请选择auto,单一语言的情况下尽可能不要auto。whisper模型自带翻译功能,即如果音频文件是英文但音频语言选择成了中文,那whisper会自动把字幕翻译成中文,但那个翻译质量感觉对于涩涩内容来说连机翻都不如。如果你懒得去做第二步的日语转中文,你可以直接把音频文件选择为中文,或者下载一个经过调优特化的日语转中文的fw模型。其他选项不知道是啥不要瞎调。

所有参数调整完成后回到模型参数加载模型。如果模型加载成功就去 执行转写 里添加需要转写的音视频文件开始转写就可以了。

网上会有人分享自己调优过的模型的参数,你可以套用,但是注意不同模型参数效果并不完全相同,记得使用同样的模型。

完成转写后跳转到字幕编辑界面,可以在这里对字幕进行对齐和编辑。如果不选择输出字幕的目录就会默认保存到每个音频文件同目录下。输出文件格式建议选择srt方便后续转写和编辑。

在这一步如果你懂日语看得懂日文就可以直接查看字幕是否可用了。具体方法是拉到最后的字幕 ,找一句不是嗯嗯啊啊之类的字幕,对照着视频听听看是不是这句话。如果不是就可以不要这个字幕了。常见问题环节会具体说。

总之,到这里日语字幕就完成了,接下来我们需要把日语字幕用sa转为中文。

2.1、选择合适的日语翻译模型

省流:懒得话N卡8G显存及以下或者要求翻译速度快就选7b-0.9-Q2、12G显存及以上或者翻译质量要求高选13B-.09b-Q2。
sa在基础的13B版本发布后续又迭代了多个版本。在这里主推两个版本:13B和7B,13B为0.9b版本,7B为0.9版本。前者消耗显存很大,翻译质量较好,速度慢,适合大显存的显卡(推荐12G及以上)一跑跑一夜翻译轻小说。后者消耗显存小,翻译速度很快,更适合galgame的即时翻译和小显存显卡(sa作者表示这个模型最低即使是1060 3G也能做到玩gal很快出翻译)。
在确定大版本的模型后我们需要选择合适的模型量化类型。如果你选择了13B模型可以直接参考官方提供的显存大小推荐。如果是7B模型,你可以尝试从Q2开始从小到大一步步往上探,当探到一个模型启动之后测试提示爆显存之后往前退一个模型就是最适合你的模型,或者使用这个刚刚好开始爆显存的模型根据教程卸载一部分模型到CPU上(方法见下文)。

sa允许将部分模型卸载到CPU上跑,说白了就是显卡显存放不下的那部分模型可以移到内存上用CPU跑。参见Sakura模型本地部署教程 (fishhawk.top)。举例来说,我的4060 8G用sakura-7b-lnovel-v0.9-Q4_K_M刚好就能不爆显存运行,如果使用sakura-13b-lnovel-v0.9b-Q2_K就需要设置ngl为32。下面是我摸索出来的一些ngl值,如果你也是4060 8G可以直接抄作业:13b-0.9b-Q2用32、13b-0.9b-Q3用25、7b-0.9-Q4及以下用42、7b-0.9-Q5用31。
sa也支持租用显卡跑,目前支持AutoDL和Kaggle。前者要钱还经常没货,价格偶尔用用还行,后者每个月可以白嫖两张Tesla T4 30小时。具体教程参见Sakura工作区顶部链接。

2.2、运行翻译模型处理字幕

所有翻译均在Sakura工作区进行 Sakura工作区 | 轻小说机翻机器人 (fishhawk.top) 。因为官方教程写的已经够详细了,所以这里不再做过多赘述,请严格遵循官方教程。
说几个要点:1、翻译字幕一般不需要添加术语表,2、翻译的进度不一定会实时反映在右侧的列表里,3、刷新网页会导致翻译停止,不要手贱。但即使翻译中断也能通过缓存恢复。

3、字幕后处理+常见问题处理

字幕翻译完成后,选择中文进行下载,会拿到一个名为zh.Ys.+原文件名+.txt的文件。可以批量下载后使用Everything或者Advanced Renamer等批量重命名工具重命名方便后续验证字幕是否可用。

字幕拿到手第一件事就是验证字幕是否可用。使用字幕编辑器加载视频,把字幕拉到最下面,找到倒数几句话里的人话,时间短一点的那种,结合视频辨别是否正确。需要多验证几条,建议三条。举例:

如果验证了视频末尾的字幕都是正确的话,那这份字幕基本是可用的。如果末尾的字幕对不上视频的话,那基本上可以放弃用AI对这个视频做字幕的想法了。一般这个问题出在fw上,表现形式有时候是时间轴后移了非常多,有时候是出现了不存在的对话之类的。基本是无解了。可以尝试换模型再次识别,但大概率是没什么用。
接下来对字幕做问题处理,以下是一些常见的问题:

1、时间戳的冒号和逗号变成了中文符号/冒号和逗号缺失/时间戳异常

这其中最常见的就是时间戳的冒号和逗号变成了中文符号。主要是单次翻译的字幕国长导致模型劣化(存疑)。比较暴力的解决方法就是使用文本编辑器把所有的“:”替换为“:”,“,”替换为“,”。尽管这样可能会让一句话看起来怪怪的,但也确实省事多了,相比一个个手动改。这个问题无法通过在术语表里设置“:”–>“:”解决,只能通过后处理解决。

常见的冒号和逗号缺失通常是这样的。这种只能手动处理:

时间戳异常目前已经很少见了,就不做说明了。如有问题,字幕编辑软件也能发现。

2、字幕重叠

字幕重叠通常是fw幻听,一句话听成两句意思差不多但是表达不一样的语句。比如说第一个重叠“你到底有什么目的?”“目的?”。这个时候就需要去看视频听到底应该是什么。
有时还会出现这种时间抽错乱导致的重叠,例如:

805
00:04:54,800 --> 01:04:56,800
老师,你在开玩笑对吧?

可以看到非常匪夷所思的时间戳出现了,sa的锅。这种情况同样需要手动调整,并且最好使用文本编辑器进行调整,因为Subtitle Edit只能编辑时间戳的起始时间和持续时间,并不能直接编辑结束时间,对于这种问题处理很是不方便。

3、出现不存在的字幕

比如说不明所以的emoji字幕:

唐突的数字:

这种删掉就好了。大概率是sa抽疯

4、字幕调优:删除无用字幕/合并字幕

fw经常会把嗯嗯啊啊也给识别出来,或者识别出来一些很奇怪的东西,这些东西如果愿意精修完全可以删掉。比如:

这样的字幕可以删除,也可以合并来让字幕审核轻松一些。工具——合并字幕我一般只用合并内容相同的行。但注意不要使用包含增量行,有可能会破坏时间轴。合并完成后建议再次检查时间轴是否正确。

总结

上次写完教程后fw和sa都有了不小的更新,可以让更多人玩起来了。这个教程适用80%的小电影,剩下20%fw识别直接乱轴或者幻听。番剧会好一些,因为都是配音,杂音也少,但是我没有做过很多番的字幕所以也不能下定论。总之这个野路子(?)还是值得一试。

下载里是迄今为止我做的所有字幕,主要是cosplay相关的。时间上靠后的质量可能会好一些。绝大部分没经过精校,仅检查了末尾的时间轴以及合并了字幕。还在对这个项目犹豫或者只是凑个热闹想看看效果如何的可以参考参考。

下载涩涩此资源下载价格为2萌娘币(VIP折扣、永久会员免费),请先
如果链接失效,请记得点击举报反馈

梦璃 Since 2019

友情链接与合作请戳我

让璃月来随时通知阁下更新吧~ 同意 不用了