《原神》提取出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条评论

  • gura 评论于 回复

    解压出来了唯一的缺点是,角色语音的最后一个字似乎太过急切短暂,我怀疑似乎是米哈游将最后声音和最后一个字的语音拆开了,分成两部分,这就让人很难受。

  • 喵喵 评论于 回复

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

    有什么办法吗

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

      @喵喵
      你可以尝试,找到这条语音,然后删除,创建一个同样的文件名,如果没有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 不是内部或外部命令,也不是可运行的程序或批处理文件。
    哪里输错了 :嘴锤:

  • 白白白白白 评论于 回复

    请问各位大佬,你们这个太深奥了,本人小白一个看不懂,求各位大佬谁方便发一个稻妻小浣熊跳舞的那个音频给我,跪谢!(wav文件已经导出来了,就是转换不好) :害羞: :害羞: :害羞: 569627263@qq.com

  • XwX 评论于 回复

    请问要拆多久呢 :汗:

  • Vans 评论于 回复

    @echo off
    for /r %%i in (*.wav) do (
    “E:\Download\ha_extractor\vgm\test.exe” “%%~nxi”
    )
    md codemusic
    for /r %%i in (*.wav.wav) do (
    copy “%%~nxi” “codemusic”
    )
    for %%i in (*.wav) do (
    del “%%~nxi”
    )
    pause

    直接把.wav.wav移动到新的文件夹然后删除当前文件夹所有的wav文件 :doge:

      • Vans 评论于 回复

        @弟中弟
        1.在你导出来的音频文件夹下面新建一个文本文件把它的后缀改成bat
        2.右键bat记事本打开 把这一堆东西复制进去
        3.把 “E:\Download\ha_extractor\vgm\test.exe” 改成你下的那个解码软件的地址
        4.保存 双击 bat

        • yezi 评论于 回复

          @Vans
          第一次运行后文件出来了 codemusic文件夹也出来了 但是里面啥也没有 而且文件还在原地 cmd自动关闭了
          pause
          @echo off
          for /r %%i in (*.wav) do (
          “D:\genshin\wav\test.exe” “%%~nxi”
          )
          md codemusic
          for /r %%i in (*.wav.wav) do (
          copy “%%~nxi” “codemusic”
          )
          for %%i in (*.wav) do (
          del “%%~nxi”
          )
          pause

    • 刺杀小赵 评论于 回复

      @Vans
      兄弟,你的引号出问题了。我费解了半天 :二哈:

    • none 评论于 回复

      @Vans
      python版本:
      import os
      import shutil

      path = “./解包数据/”
      new_path = “./wav提取/”

      if not os.path.exists(new_path):
      os.mkdir(new_path)

      for filename in os.listdir(path):
      if filename.endswith(“.wav.wav”):
      print(filename)
      shutil.copyfile(path + filename, new_path + filename.replace(“.wav.wav”, “.wav”))

  • shooe 评论于 回复

    那个批量处理是,在你解压的wav文件的目录下,先创建一个txt文件,名字非中文的就可以,然后把那几行代码写进去,然后把text.exe那一串改成你电脑里面test.exe文件的位置,保存,然后修改后缀为.bat,双击运行即可

  • 小人鱼 评论于 回复

    谢谢!终于可以享受无损的原神音乐了,已成功!(2.0版本测试)

    • 神绘 评论于 回复

      @小人鱼
      为啥我成功解压出来并转换完了,时间却都是00:00没法播放,是哪步出错了吗?

      • 小人鱼 评论于 回复

        @神绘
        可能转换的问题。我是用楼主的代码。弄进txt然后改后叠改成cmd。然后管理员运行

        • 神绘 评论于 回复

          @小人鱼
          问题解决了,应该是我选错要解压的文件了(以为Chinese文件夹外面就是日语语音没注意看大小),感谢大佬,比心❤~~~

  • 评论于 回复

    大佬,原神的打击音效可以替换吗,单手剑“噼噼噼噼噼”太恶心了,想换成崩坏3里的单手剑武器音效

  • NBNBNNB 评论于 回复

    XDM我提取出了2.0预升级包里面稻妻的BGM!!!快去试试!
    不敢发怕被内鬼举报

    • 烟花 评论于 回复

      @NBNBNNB
      老哥能发我邮箱嘛

  • soar 评论于 回复

    能够提取 UI贴图之类的资源么。

  • 泠鸢 评论于 回复

    大佬,问一下为什么照这解包出来的. wav. wav没有声音呢?

  • 木小狐 评论于 回复

    批处理优化
    @echo off
    for /r %%i in (*.wav) do (
    “test.exe” “%%~nxi”
    )
    pause

    • LXHcat 评论于 回复

      @木小狐
      引号要用英文的””不能用中文的“”

  • p7 评论于 回复

    怎么打包回去

  • 小杰 评论于 回复

    :咧嘴: :咧嘴: :咧嘴: 感谢作者大大的分享!!!

  • 小杰 评论于 回复

    :萌: 弄出来了,然后转码文件和源文件分离弄一会,没啥办法,最后想到隐藏文件扩展名,然后用文件批量修改器把转码文件后面部分(.wav)修改成(.mp3),虽然文件仍旧是(.wav)类型,但是这样就进行搜索,然后全选分离了 :二哈:

    • 痴也 评论于 回复

      @小杰
      关于转换后文件分离的方法.
      可以按时间排序,转换后的文件都是最新的,一下子就可以全选中,直接剪切到另一个文件夹里就好啦.

  • QAQ 评论于 回复

    vgmstream打不开怎么办?

  • 约修亚 评论于 回复

    运行批处理提示:文件名目录名或卷标语法不正确 这个是啥情况啊

  • engrave233 评论于 回复

    批处理的过程就是把程序记入记事本然后保存为.BAT文件,把该文件放入你的音频文件目录,然后运行就行啦

  • 厉害猫 评论于 回复

    大佬你好,用vgmstream转码的、运行test.exe的时候提示我failed opening XXX.wav,请问知道什么原因吗?最新版本的语音包。

    • 厉害猫 评论于 回复

      @厉害猫
      已解决,打扰了

  • ewww 评论于 回复

    小白不会批处理啊,新建一个txt运行不了啊 具体要怎么做

    • ewww 评论于 回复

      @ewww
      诶 研究了一下会了 谢谢大佬们

  • 我人傻了 评论于 回复

    批量处理提示
    系统找不到指定的路径
    请问一下这个地址格式哪里出了问题
    @echo off
    for /r %%i in (*.wav) do (
    “E:\迅雷下载\TEST\test.exe””%%~nxi”
    )
    pause

    • 我人傻了 评论于 回复

      @我人傻了
      真的不会敲代码 这个.bat都是看评论里的大佬一点点按照步骤做的
      是不是这一段for /r %%i in (*.wav)里边的r%%i是对应目录内容替换的呀

      • 嘎嘎嘎 评论于 回复

        @我人傻了
        程序有没有添加到环境变量里

    • moyan 评论于 回复

      @我人傻了
      for /r %%i in (*.wav) do (
      “E:\迅雷下载\TEST\test.exe” %%~nxi”
      )
      pause

  • 跪求恢复 评论于 回复

    说是64位win不能运行16位程序怎么回事啊大佬

  • 零年十七 评论于 回复

    在转码那一步提示打开失败,只开test能开,只开游戏文件也能开,他俩放一起就失败

    • 零年十七 评论于 回复

      @零年十七
      解决了,我自己整的那个test有毛病,换上楼主帖子里的那个就能用了,非常感谢

  • 巫医 评论于 回复

    批处理是复制的要仔细对照一下,编辑之后使用.bat结尾,批处理也要对照路径用cmd处理,cmd报错进去看看楼主的代码是不是自己一样或者少个/ 或者路径没有“”包起来最后谢谢楼主 :doge:

  • 夏素 评论于 回复

    有人知道刻晴的是在哪个文件多少至多少吗

  • 木木 评论于 回复

    感谢bug侠,在失败了n次后终于成功提取了语音,我在代码方面算是小白,下面和大家分享一下自己的经验
    首先在“转码”那里是要用cmd的(右键桌面左下角win图标,选择搜索cmd,然后在cmd里键入test.exe的路径和需要转码的wav)
    批量处理要先在wav文件夹里创建一个文本文件(.txt),注意里面test.exe的路径要写对

    • 木木 评论于 回复

      @木木
      还有路径中不能有中文,否则报错

  • 杀小岛 评论于 回复

    @echo off
    for /r %%i in (*.wav) do (
    “D:\BaiduNetdiskDownload\素材\素材\test\test.exe” “%%~nxi”
    )
    pause
    大佬能看一下我的批处理哪里出了问题吗?

    • 木木 评论于 回复

      @杀小岛
      文件夹不能用中文

      • 杀小岛 评论于 回复

        @木木
        a :笑哭: woc,我已经被坑不知多少次了,谢谢大大

    • admin 评论于 回复

      @杀小岛
      你先创建一个临时文件夹,放进去两三个音乐文件,试验一下效果。试验的过程中,去掉echo off,好看清过程。有时候可能就是多一个空格或者少一个空格的问题,还有的时候是中文乱码。如果是中文乱码,请用记事本打开批处理,另存一个文件,可以是同名,但必须改成ansi,不能保存默认的utf-8,这很关键!!!

  • 萌新、 评论于 回复

    求大佬讲解下如何批量处理,不懂小白

  • 渡鸦1235 评论于 回复

    test解压出来后,test.exe点击运行闪了一下就关闭了。研究了半天,还是弄不好。

    • Bug侠 评论于 回复

      @渡鸦1235
      test.exe只能在命令行下运行,无法双击执行。

      • 123 评论于 回复

        @Bug侠
        批处理用不了 提示 不应该有%%i

      • 阿萨德 评论于 回复

        @Bug侠
        批处理的具体过程是什么啊,纯小白一个,求大佬讲解

  • miim 评论于 回复

    :doge: 建议听砂糖的声音..

    • Bug侠 评论于 回复

      @miim
      哈哈哈,LSP~~~ :笑哭:

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