英雄联盟音频文件整理计划 —— 11.10

2021年06月13日 265点热度 0人点赞 0条评论

书接上文, 去年疫情在家萌生出一个想法, 整理英雄台词文件. 但后续因人工校对工程量大、更新频繁等问题一直进度缓慢. 所以将其分割为两个计划, 一、文件整理计划, 二、音频"转写" 计划. 计划一已经差不多了, 后续按时更新即可, 计划二需要小伙伴们一起协助完成.

当前进度

由于游戏每半个月更新一次, 虽然对一整年来说只更新24次, 但每次都需要手动更新还是挺麻烦的. 涉及到游戏文件两次解包, 还有音频文件与触发事件对应哈希要处理.
所以编写了一系列的脚本用来处理相关事件:

py-bnk-extract

这是一个音频文件解包的程序, 英雄联盟使用Wwise来处理音频的, 其打包后的文件就有wpk和bnk两种文件. 当前模块就是用来处理这些事件, 提供事件文件还可以按照事件文件夹来解包. 整个模块编写参考 https://github.com/Morilli/bnk-extract, 这里特别感谢原作者Morilli.

简单梳理一下逻辑, 英雄对应皮肤配置相关文件

data/characters/{champion}/skins/skin0.bin

其文件中包含音频触发事件, 就是什么时候播放这个音频. 比如: 有些英雄放个技能说一句话, 看见谁说什么话. 从中提取出发事件以及其哈希值, 也就是对应ID.

再从wpk或bnk中获取音频相关信息, 根据上一步获取的哈希值对应分类解包. 不提供事件的话就直接解包不分类罢了.

lol_extract_voice

这个就是批量操作了, 正常我们提取语音, 是需要解包wad, 找到bnk、wpk再进行解包. 如果需要时事件, 还需要处理皮肤bin文件. 这个包就是将所有带有音频文件wad, 将其中bnk、wpk文件以及皮肤bin文件解包, 再使用上述包处理成wav或是其他格式文件.

当前这个代码也有些许问题, 只能解包本地游戏文件、没有对旧版本游戏进行支持. 旧版文件这个因为目前没有这个需求, 所以没动力去做这件事. 而前者早就优化了, 但是并没有在这个仓库中体现. 因为设计一些接口怕被滥用, 所以单独私有仓库更新. 前段时间写的安卓Termux介绍的文章, 这个脚本就在手机上跑.

整个逻辑就是先根据拳头的cdn获取新版游戏文件, 完成后再进行上述操作. 对于获取新版文件这部分很繁琐, 有兴趣可以去GitHub上开源仓库https://github.com/CommunityDragon/CDTB, wad解包部分也参考了不少这个仓库.

Gitvoice(暂定)

这是我和点木发起的一个"组织", 这个仓库用来存放英雄音频文件, 这些文件用于网站试听. 点木之前也一直在做类似的网站: https://lol.modty.top/, 现在也在更新. 但目前所有资源均存放在服务器中, 这种资源如果没有限制被打网站就挂了. 所以为后续考虑将资源暂定放在GitHub用jsdelivr进行cdn加速.

虽然这么做违反了jsdelivr规定(做这类资源cdn), 先试试. 不行再考虑其他, 例如onedrive啥的. 在GitHub中有一点好处就是, 可以单独管理指定英雄, 如果以后组织人多, 可以1个人处理几个甚至一个仓库进行更新. 可以单独管理英雄仓库进行更新, 后续发展可能更好吧(理想状态).

目前该仓库已经上传了一版音频文件, 考虑到后续如果有小伙伴想和我们一起玩, 使用国内的仓库(coding.net)进行管理资源, 然后使用GitHub Action或是coding的持续集成进行仓库同步, 这样在本地管理时不会出现同步仓库时GitHub无法访问的问题.

试听网站

根据Gitvoice整理的文件, 做出了第一版的试听站. 事件用关键词替换成中文了, 大部分语法顺序都是不对的, 但是可以看懂. 因为是用脚本批量替换, 所以肯定有和原事件不符的. 这部分还没有一个完善的反馈计划, 还在打磨中.

资源

下载说明

阿里云盘目前还不支持分享压缩包,但是不要紧,通过其秒传功能也可以将已在服务器上有的文件直接添加到你的网盘内。但是需要一开源的第三方工具:阿里云盘小白羊版,可以在下方提供的阿里官方分享连接中下载到一个,xx.xx秒传.txt的文件,xx.xx是版本号。文档内直接预览复制,到小白羊版内导入秒传连接即可。

Onedrive是利用其网盘搭建的一个分享站,但是是有访问频率限制的。如果打开出现xxx限制字样,说明访问量已经到达官方限制,次天会完全恢复,如果遇到相关问题,可以等待或使用其他方法下载。

11.10

后续会选择性更新, 可能是目前最全的合集了, 除游戏大厅那些按钮音效等, 其余游戏所有音频全部包含. 游戏内的音效也是用事件文件夹分好类了.

但是文件名还是以ID形式存在, 并不是实际台词. 那就是之前那个计划了: 英雄联盟英雄台词语音音频文件整理

处理几个仓库, 以及编写更新脚本花了大量的时间. 希望因为这个更多视频作者可以获益吧~

文章评论