《原神》提取出BGM+人物角色语音
最近沉迷原神了……
工具
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欺骗
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侠
cv8595206 B站这个文章里面有2.4全语音索引
@夜立
要不,直接在游戏内录一下?譬如说virtual audio cable……
大大,能够当个伸手党吗?球球,最近也是沉迷原神,可惜误入亚服,如果您也是亚服,可以一起玩阿
@喵仔
不知道你求什么……
可以当个伸手党啊
我已经脱坑了,没时间玩了现在
@Bug侠
想求个胡桃的原声
@喵仔
不容易,因为语音是乱序的,没法精确的找到。我记得我之前看过一位大佬通过语音识别转换出来了一部分,你可以找找
转码那个打不开,哭了…………直接闪退
转码那个软件打不开
直接闪退
C:\Users\ASUS>metadata from: Audiokinetic Wwise RIFF header metadata 不是内部或外部命令,也不是可运行的程序或批处理文件。
哪里输错了
请问各位大佬,你们这个太深奥了,本人小白一个看不懂,求各位大佬谁方便发一个稻妻小浣熊跳舞的那个音频给我,跪谢!(wav文件已经导出来了,就是转换不好)
569627263@qq.com
请问要拆多久呢
@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文件
@Vans
大佬这个咋用啊
@弟中弟
1.在你导出来的音频文件夹下面新建一个文本文件把它的后缀改成bat
2.右键bat记事本打开 把这一堆东西复制进去
3.把 “E:\Download\ha_extractor\vgm\test.exe” 改成你下的那个解码软件的地址
4.保存 双击 bat
@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
兄弟,你的引号出问题了。我费解了半天
@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”))
那个批量处理是,在你解压的wav文件的目录下,先创建一个txt文件,名字非中文的就可以,然后把那几行代码写进去,然后把text.exe那一串改成你电脑里面test.exe文件的位置,保存,然后修改后缀为.bat,双击运行即可
谢谢!终于可以享受无损的原神音乐了,已成功!(2.0版本测试)
@小人鱼
为啥我成功解压出来并转换完了,时间却都是00:00没法播放,是哪步出错了吗?
@神绘
可能转换的问题。我是用楼主的代码。弄进txt然后改后叠改成cmd。然后管理员运行
@小人鱼
问题解决了,应该是我选错要解压的文件了(以为Chinese文件夹外面就是日语语音没注意看大小),感谢大佬,比心❤~~~
大佬,原神的打击音效可以替换吗,单手剑“噼噼噼噼噼”太恶心了,想换成崩坏3里的单手剑武器音效
XDM我提取出了2.0预升级包里面稻妻的BGM!!!快去试试!
不敢发怕被内鬼举报
@NBNBNNB
老哥能发我邮箱嘛
大佬 那个转码的软件下不了啊
能够提取 UI贴图之类的资源么。
大佬,问一下为什么照这解包出来的. wav. wav没有声音呢?
批处理优化
@echo off
for /r %%i in (*.wav) do (
“test.exe” “%%~nxi”
)
pause
@木小狐
引号要用英文的””不能用中文的“”
怎么打包回去
大佬,有成品打包么?我是伸手党
@小杰
关于转换后文件分离的方法.
可以按时间排序,转换后的文件都是最新的,一下子就可以全选中,直接剪切到另一个文件夹里就好啦.
vgmstream打不开怎么办?
运行批处理提示:文件名目录名或卷标语法不正确 这个是啥情况啊
批处理的过程就是把程序记入记事本然后保存为.BAT文件,把该文件放入你的音频文件目录,然后运行就行啦
大佬你好,用vgmstream转码的、运行test.exe的时候提示我failed opening XXX.wav,请问知道什么原因吗?最新版本的语音包。
@厉害猫
已解决,打扰了
小白不会批处理啊,新建一个txt运行不了啊 具体要怎么做
@ewww
诶 研究了一下会了 谢谢大佬们
批量处理提示
系统找不到指定的路径
请问一下这个地址格式哪里出了问题
@echo off
for /r %%i in (*.wav) do (
“E:\迅雷下载\TEST\test.exe””%%~nxi”
)
pause
@我人傻了
真的不会敲代码 这个.bat都是看评论里的大佬一点点按照步骤做的
是不是这一段for /r %%i in (*.wav)里边的r%%i是对应目录内容替换的呀
@我人傻了
程序有没有添加到环境变量里
@我人傻了
for /r %%i in (*.wav) do (
“E:\迅雷下载\TEST\test.exe” %%~nxi”
)
pause
说是64位win不能运行16位程序怎么回事啊大佬
在转码那一步提示打开失败,只开test能开,只开游戏文件也能开,他俩放一起就失败
@零年十七
解决了,我自己整的那个test有毛病,换上楼主帖子里的那个就能用了,非常感谢
批处理是复制的要仔细对照一下,编辑之后使用.bat结尾,批处理也要对照路径用cmd处理,cmd报错进去看看楼主的代码是不是自己一样或者少个/ 或者路径没有“”包起来最后谢谢楼主
有人知道刻晴的是在哪个文件多少至多少吗
感谢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
大佬能看一下我的批处理哪里出了问题吗?
@杀小岛
文件夹不能用中文
@木木
woc,我已经被坑不知多少次了,谢谢大大
a
@杀小岛
你先创建一个临时文件夹,放进去两三个音乐文件,试验一下效果。试验的过程中,去掉echo off,好看清过程。有时候可能就是多一个空格或者少一个空格的问题,还有的时候是中文乱码。如果是中文乱码,请用记事本打开批处理,另存一个文件,可以是同名,但必须改成ansi,不能保存默认的utf-8,这很关键!!!
求大佬讲解下如何批量处理,不懂小白
test解压出来后,test.exe点击运行闪了一下就关闭了。研究了半天,还是弄不好。
@渡鸦1235
test.exe只能在命令行下运行,无法双击执行。
@Bug侠
批处理用不了 提示 不应该有%%i
@Bug侠
批处理的具体过程是什么啊,纯小白一个,求大佬讲解
@miim
哈哈哈,LSP~~~