lol-voice

通过解析英雄联盟游戏内WAD、BNK、WPK、BIN等文件来提取音频文件,并可以按照触发事件分类


Keywords
league, wad, bnk
License
GPL-3.0-only
Install
pip install lol-voice==1.0.4

Documentation

py-bnk-extract

英雄联盟语音解包工具, 由Python语言编写.

介绍

可以将英雄联盟中wpk或bnk中音频文件按照皮肤的触发条件分类解包, 默认为wem音频格式, 使用 vgmstream 可转码.

其余bnk文件结构来参考:http://wiki.xentax.com/index.php/Wwise_SoundBank_(*.bnk)

安装

pip install lol-voice

pip install -e git+https://github.com/Virace/py-bnk-extract@package#egg=lol_voice

使用

此包适合提取已知皮肤语音, 如需全部提取请关注 lol_extract_voice

from lol_voice import extract_audio
from lol_voice.formats import WAD


def example():
    """
    按触发事件文件夹分类提取 剑魔 语音文件
    :return:
    """

    # 临时目录和最终输出目录
    temp_path = r'D:\Temp'
    out_path = r'D:\Out'

    # 英雄名字, 以及对于默认皮肤的三个文件路径
    champion = 'aatrox'
    bin_tpl = f'data/characters/{champion}/skins/skin0.bin'
    audio_tpl = f'assets/sounds/wwise2016/vo/zh_cn/characters/aatrox/skins/base/{champion}_base_vo_audio.wpk'
    event_tpl = f'assets/sounds/wwise2016/vo/zh_cn/characters/aatrox/skins/base/{champion}_base_vo_events.bnk'

    # 需要解析两个WAD文件, 这个路径修改为自己的游戏目录
    wad_file1 = r"D:\League of Legends\Game\DATA\FINAL\Champions\Aatrox.wad.client"
    wad_file2 = r"D:\League of Legends\Game\DATA\FINAL\Champions\Aatrox.zh_CN.wad.client"

    # 将上面三个文件提取到临时目录
    WAD(wad_file1).extract([bin_tpl], temp_path)
    WAD(wad_file2).extract([audio_tpl, event_tpl], temp_path)

    # 根据三个文件对应提取语音并整理
    extract_audio(
        bin_file=os.path.join(temp_path, os.path.normpath(bin_tpl)),
        event_file=os.path.join(temp_path, os.path.normpath(event_tpl)),
        audio_file=os.path.join(temp_path, os.path.normpath(audio_tpl)),
        out_dir=out_path
    )

if __name__ == '__main__':
    example()

问题

待解决:

  • 不同事件调用相同语音, 导致文件重复
  • 不排除文件有缺失问题, event文件解析不完整

维护者

Virace

感谢

许可证

GPLv3