《ガールズバンドクライ》简评:
《マーダーミステリー・オブ・ザ・デッド》简评:
首先:机器字幕真就图一乐。这个不准。虽然没算错误率,但是稍微对比一下细节的话都能看出来,字幕组确实强。
不过咱也偶尔做了几次这个,所以稍微记录点螺蛳壳里做道场的事情之类的:
流程上基本就是asr,然后拿稿丢给llm。b站已经有很多这样制作的字幕。啊对了,咱不是做语音和llm这块的,只会调api,这个见笑了……
虽然听说gemini能做转写,但我没能成功拿到能用的结果,音频和(带音频的)视频输入都试过了;非常多幻觉,长度也经常不够,而且你让他从某个时间点开始的话表现更糟糕。不过如果你是人看的话可以参考一眼,虽然也很乱。gpt-4o的音频输入还没试过。还没试过先切段再丢给他。
asr的方面。whisper最知名;当然要用faster-whisper,并且仔细调参数。本机如果没条件,可以考虑groq家的api。除了官方的v3 large,也有一些变种,efwkjn/whisper-ja-anime-v0.1就挺好,litagin/anime-whisper的readme也值得一看(但我没试);kotoba whisper v2试了感觉不太行。reazonspeech家的espnet v2也很好用,在他们自家的,电视节目的数据集(有bgm)上训的,tv anime属于in-domain了;官方做了长音频推理实现;容易在台词前有个“心の声”的幻觉,很好去掉。同家的k2架构v2看跑分挺好,但官方没实现长音频推理;k2官方倒是提供了有silero vad集成版本的推理代码,但用跑出来效果不好。闲得慌也可以跑nvidia/parakeet-tdt_ctc-0.6b-ja,一般般。owsm试着不行,但可能是我跑的问题。商业方案的话,capcut免费(transcript->caption),切的粒度细适合拿来参考语义,准确度不行;阿里百炼的sensevoice粒度有点太长,准确度就那样;clipchamp,粒度偏长,也能用。
作为asr的预处理,去掉bgm这步 (voice separation) 的话,mvsep.com训了一些权重跑分挺好的,但是私有,然后在线用也限时长。所以一般就用kimberleyjensen/mel-band-roformer-vocal-model那个colab,也够用了。
llm的话,glm-4-plus好像特别擅长日译中,语言风格也接近一般的acg中译,但是指令跟随不太行,每次输入的字幕数量不能太多。不过我只试了qwen,deepseek和llama,当然可能有更好的。偶尔如果有gbc这种,拿到的源语言是法语字幕的情况,好像只能弃疗,选择译英。虽然自己写脚本可能是最好的调用方法,但我懒。试过沉浸式翻译和subtitleedit,现在感觉cerlancism/chatgpt-subtitle-translator超好用,就是偶尔会有点错位。用的prompt大概长这样:
逐行翻译下面的日本动画字幕为中文。请完全遵照你收到的编号和分行,不要乱改。口语对话中的文本可能简短、不完整,但请尽量翻译,并注意保持原文的语气细节,如语尾、称呼。xxちゃん 应译为 小xx,xxさん 应译为 xx小姐(不得混淆!)。请只返回译文本身,而不要说明或注释是如何翻译的。【注意】原文中可能存在转写错误,请自行按读音判断并修正;请参照以下人名表,如有不符合表中人名的应按照读音纠正:ミコト(中译:美琴),蘭奈(中译:兰奈;昵称:蘭,中译:兰),史香(常被误写为“文香”,请更正为“史香”),莉莉,夕(常被误写为“優”,请更正为“夕”),るみな(中译:留美奈),ムルムル(中译:姆露姆露)。“信奉者”中译为“信奉者”即可。
don't get your hopes up,很多时候他不会听话的,还得手修。
如果没有自虐倾向的话(w,到这就可以发了。不过我脑子点有问题的,以所一般会拿几个稿对一下再打个轴。说打轴就说到vad。
所以为什么llm已经那么厉害了,但是vad这样的简单任务还是很……也不是不能理解这种比较注重延迟,但是,呃。pyannote v3和nemo (frame-level) vad是我能找到的最好的玩意了。purfview/whisper-standalone-win有一个xxl variant支持前者,这很好。后者用着还得调参……这种的话输入原始音频就好,用分离出来的人声反而掉点(我真算了aucroc,不过也只是一集)。b站有人做了zhimingshenjun/dd_kaorou2,用的spleeter+librosa,试过一次但还没跟上面俩拖一起对比过。silero和speechbrain的不太堪用。
对于打轴这个用途,可能有人会想到forced alignment。大伙都知道whisper的word level timestamp没那么准经常会飘一两个token,其实用nemo或者espnet官方给的基于ctc的代码跑一下parakeet或者owsm就会发现这个也一样飘。这种感觉本身就做不到frame level。
然后,轴都打完了,要不找个字幕组投一下减少点他们工作量。(其实时轴又没版权,文件都在那了,谁看着行直接拿去用就是。)这里面可能涉及到很多后处理,比如时轴前后最好适当延长一些,有时要贴靠到切镜头的点之类的,不过脚本基本能解决问题。传的文件一般是贴着声音打的紧轴,方便万一有人拿去用(虽然质量确实就那样……)。另外如果想拿中日对照的字幕参考用的话,又需要把日文匹配回去;可能用llm会比较好,不过目前就是对asr稿做一些增强(合并相邻项,以及恢复标点+切割之类的),然后用intersection over union匹配一下时间,这就没考虑语义。
最后来提一个小场景,歌词。一般弄机器字幕的时候当然是弃疗了,但如果是自己等不及了想看的话可以用moises和lamucal,前者更准一些但免费限1分钟,后者有时候会给中文而不是日文汉字需要修正。都可以复制出来丢给llm翻译。另外moises的话可以拿到json,对于k歌词轴有点用,让llm匹配回正确歌词的位置,然后就是手工活。
来自:Bangumi