《原神》提取出BGM+人物角色语音

Windows, 折腾 2020/11/04

最近沉迷原神了……

工具

Extractor2.5 https://www.cr173.com/soft/30307.html

vgmstream CLI https://github.com/vgmstream/vgmstream/releases/download/r1050-3312-g70d20924/test.zip

解包

原神的音频都打包在:

安装目录\Genshin Impact Game\YuanShen_Data\StreamingAssets\Audio\GeneratedSoundBanks\Windows\

其中 BGM 为根目录下的 Music0~31.pck ,人物对话语音、角色音效都在对应语言(中文、英文等)子目录下的 External0~31.pck

比如截图为使用Extractor提取人物对话语音,提取到 F:\B\

转码

上步骤提取出的wav文件无法直接播放,需要转码,用到vgmstream,将test.zip解压

比如我这里解压到 E:\SystemFile\Desktop\test\test.exe

由于是命令行工具,所以需要执行命令来转换,其他参数不用理解,例如:

#后面的文件路径带了空格,需要使用引号括起来
E:\SystemFile\Desktop\test\test.exe "F:\B\External1 00001.wav"

即可得到人物语音,因为没有注释,只看文件名不知道是什么,只能听了才知道。

批处理

按上述方法已经可以顺利提取并转换BGM和语音,但是转换一条一条命令的敲,太蛋疼

写个批处理吧,将批处理保存到提取出 .wav 的目录下执行即可遍历转换

@echo off
for /r %%i in (*.wav) do (
	"E:\SystemFile\Desktop\test\test.exe" "%%~nxi"
)
pause

哒哒哒~啦啦啦~



76 条评论

  • 喵喵 评论于 回复

    大佬你好,散兵冲刺语音太吵了,我想把那两条冲刺语音删了。

    有什么办法吗

    • 这个真的不错 评论于 回复

      @喵喵
      你可以尝试,找到这条语音,然后删除,创建一个同样的文件名,如果没有MD5校验,那么就可以了,如果有MD5校验,需要MD5欺骗

  • nuqg 评论于 回复

    vgmstream CLI脚本使用方法
    Usage: …\test.exe [-o ] [options]
    Options:
    -o : name of output .wav file, default .wav
    wildcards can be ?s=subsong, ?n=stream name, ?f=infile
    -l loop count: loop count, default 2.0
    -f fade time: fade time in seconds after N loops, default 10.0
    -d fade delay: fade delay in seconds, default 0.0
    -F: don’t fade after N loops and play the rest of the stream
    -i: ignore looping information and play the whole stream once
    -e: force end-to-end looping
    -E: force end-to-end looping even if file has real loop points
    -s N: select subsong N, if the format supports multiple subsongs
    -m: print metadata only, don’t decode
    -L: append a smpl chunk and create a looping wav
    -2 N: only output the Nth (first is 0) set of stereo channels
    -p: output to stdout (for piping into another program)
    -P: output to stdout even if stdout is a terminal
    -c: loop forever (continuously) to stdout
    -x: decode and print adxencd command line to encode as ADX
    -g: decode and print oggenc command line to encode as OGG
    -b: decode and print batch variable commands
    -h: print extra commands (for testing)
    -V: print version info and supported extensions as JSON
    -I: print requested file info as JSON

  • 高山之上的沼泽 评论于 回复

    其实wav解码不需要批处理,直接把原始wav拖到test.exe上松手就可以了 :笑哭:

  • 痴也 评论于 回复

    建议:
    1\把test里的所有文件拷贝到提取出来的wav文件夹里去.
    2\在里面再创建个批处理文件运行就好.
    3\批处理文件按up主的那个修改简单一点.把下面内容直接复制成新文件BAT后缀的就好.
    @echo off
    for /r %%i in (*.wav) do (
    test.exe “%%~nxi”
    )
    pause

    • 小彭 评论于 回复

      @痴也
      大佬你好,我想请问一下 为什么我按照您的步骤生成出批处理文件后,双击直接闪退,拖到命令提示符里运行的话 会显示%~nxi的用法无效?

      • 痴也 评论于 回复

        @小彭
        试试用管理员权限运行看看?

  • 啥味儿若 评论于 回复

    为什么我转换后的音频不全,最后人物还没说完话就结束了,然后紧接着一个文件还是格式错误的?

  • 夜立 评论于 回复

    可以求一段公子的语音吗?就是公子说那句 你不会不要我吧 那句QAQ

    • Bug侠 评论于 回复

      @夜立
      不容易,因为语音是乱序的,没法精确的找到。我记得我之前看过一位大佬通过语音识别转换出来了一部分,你可以找找

      • 夜立 评论于 回复

        @Bug侠
        好的,还是非常感谢啦。

    • admin 评论于 回复

      @夜立
      要不,直接在游戏内录一下?譬如说virtual audio cable……

  • 喵仔 评论于 回复

    大大,能够当个伸手党吗?球球,最近也是沉迷原神,可惜误入亚服,如果您也是亚服,可以一起玩阿

    • Bug侠 评论于 回复

      @喵仔
      可以当个伸手党啊 :doge: 不知道你求什么……
      我已经脱坑了,没时间玩了现在

      • 喵仔 评论于 回复

        @Bug侠
        想求个胡桃的原声

        • Bug侠 评论于 回复

          @喵仔
          不容易,因为语音是乱序的,没法精确的找到。我记得我之前看过一位大佬通过语音识别转换出来了一部分,你可以找找

  • anheng 评论于 回复

    转码那个打不开,哭了…………直接闪退

  • anheng 评论于 回复

    转码那个软件打不开 :汗: 直接闪退

  • 太难了 评论于 回复

    C:\Users\ASUS>metadata from: Audiokinetic Wwise RIFF header metadata 不是内部或外部命令,也不是可运行的程序或批处理文件。
    哪里输错了 :嘴锤:

  • 评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)