- MOD前置REFramework:https://github.com/praydog/REFramework-nightly/releases
- 解包工具与list表
- RingingBloom:https://github.com/Silvris/RingingBloom
- Foobar2000:https://www.foobar2000.org/download
- vgmstream:https://github.com/vgmstream/vgmstream/releases
- Wwise:https://www.audiokinetic.com/zh/products/wwise/
下载好这些工具后(wwise或许你不会下载,后面会说),我们先不急着去管他,等到后面教程会教怎么使用这些工具。
教程内容包括:
- 解包。将音频文件从根目录下的pak中提取出来
- 找到对应文件。介绍了提取出来的文件格式、分类
- 拆包。将音频文件从spck.1.X64.Ja中提取出来,提取出来的文件是wem类型。
- wem试听。使用Foobar2000试听提取出来的wem文件。
- wem格式转wav。如何把wem文件转换为wav格式文件。
- wav编辑。如何编辑wav格式的音频。
- 音量调整。如何调整新的音频(wav格式文件)的音量。这步比较复杂,但是没有难点,别出错是重点。
- wem封包回spck.1.X64.Ja文件。如题,把转换好的文件封包回去。
- 其他
←←←看左侧目录!!
如何解包、使用什么工具与list表,其他各种教程已经教过许多了,这里不多赘述。可以参考风过无痕大佬的外观mod教程中的解包教程。
这里要说的是我们会用的哪些文件。
如图所见,这是本征大佬的ree-pak-rs工具的截图。
我们需要的是natives下的,Sound与streaming/Sound两个文件夹。
勾选这两个文件夹后,选择Extract导出即可。
首先来到natives\STM\streaming\Sound\Wwise这个路径下。这个路径是存放npc配音音频的路径。
在这个路径下存放着成吨的文件:
这时候我们不用着急,右键空白处,选择分组依据-类型,随后选择排序方式-名称:
随后我们会发现,这里所有文件的后缀名有且只有:DE(德语)、EN(英语)、ES(西语)、FR(法语)、IT(意大利语)、JA(日语)、PTBR(葡萄牙语-巴西)、RU(俄语)、X64(其他)。
而某一个后缀名下的文件,又大致可以分为:
- Event_Dia_......
- NPC_.....
- NPC+数字_数字_数字_......
- OT_.....
- PL_.....
这五种。其中第3种包括绝大多数npc的配音文件。如果你知道npc对应的编号(例如丁真是NPC101_00_004),则复制那一个文件出来;如果你不知道,那就全部复制出来。这里以日配为例:
要打开上面的spck.1.X64.Ja文件,你需要下载ringing bloom软件。在github下载zip后直接解压,随后双击其中的exe文件就能打开ringing bloom。
这里注意左上角的Mode。在MHworld或者MHrise模式下,有些后缀名是打不开的。直接选择RE8模式即可。
选择之后点击PCK Editor打开针对...spck.1.X64....的编辑器,如图:
选择被我涂红的import,打开一个spck.1.X64.Ja文件,如下图所示:
这里的wem ID、Wem Name不急着去管它,我们先选择Export Wems,然后新建一个文件夹,下面file names显示的是save here,不用管他,选择打开就可以。
请注意,一定要在你的mod目录里新建一个文件夹。
随后你会得到一大堆wem文件,如图:
要试听这些wem,以及转换wem为wav文件,你需要下载Foobar2000以及其插件vgmstream。
在foobar2000官网,如下图所示,选择64-bit版本。
下载完成后是一个exe安装程序,打开后,一路next即可完成安装。安装完成的快捷方式在桌面。
随后下载vgmstream。在github上下载最新的
foo_input_vgmstream.fb2k-component
就可以。下载完后双击下载的文件,foobar2000会自动完成安装。
安装完成之后,你就可以双击.wem文件打开foobar2000播放了。
对于那些不确定哪个spck.1.X64.Ja对应哪个npc的人,我建议你在这一步完成后,找到你想要修改的npc对应的哪个文件。
在找到想要修改的文件后,同样的,在foobar2000页面,全选所有wem文件,右键-convert-quick convert,将这些wem转换为wav文件。
!!注意这些wem文件是从0开始命名的。虽然命名并不影响游戏的读取,但是当你要大量修改音频的时候,最好要保证不同格式的每个文件命名相同或至少相近。
你可以使用ai音色模拟软件,例如,GPT-SoVITS、CosyVoice、So-vits-svc(SoVITS)、seed-VC等。本人对上述项目不负责,仅举例。
或者你可以从其他地方选择音频文件,以替代原先的特定某句台词,例如交互时的回答,或者角色时不时的问好。
作者常用的是seed-VC:https://github.com/Plachtaa/seed-vc
首先但是,它不具备批量转换的能力,只能一条条的生成。
但是但是,即使你能够批量转换,你也没法保证全部音频的转换效果过关(至少要没有喷麦/哨音)。所以我认为这个软件够用了。
然而但是,你转换过后的音频文件,它保存的命名方式为audio.wav,十分杂乱。因此我写了一个脚本(重命名wav文件工具),可以将当前目录下的所有wav文件按照写入顺序命名。你可以在文末的附件中找到它。
这样就可以保证你的音频文件是同样从0开始的,按创建顺序排列的.wav文件了。
关于如何使用这些ai翻唱软件,你可以参照网上的其他教程。绝大多数现在的ai翻唱软件使用难度都很低,我就不过多介绍了。
使用ai翻唱软件“唱”出来的音频,尤其是情感比较丰富的那些,还有喘息、受击声音,往往音量会和原先的音频差距巨大。所以我们需要参照原音频的音量,调整我们新获得的音频的音量。
(当然你可以使用au/pr等其他软件进行调整,但是我觉得麻烦。)
因此我写了一个脚本(音量调整工具),你同样可以在文末的附件中找到它。
打开这个工具的目录,你会找到三个文件夹:目标、要调整的、调整后的。
将你拆包得到的wav音频文件放到目标里面,将修改后的wav文件放到要调整的里面。注意对应的两条音频文件的名字必须一致。
运行程序,他会根据拆包得到的wav文件,计算平均的db,然后调整要调整的文件夹里面的wav文件的音量并保存到调整后的里面。
这里我们要用到软件Wwise。
进入官网,右上角选择下载,注册账号后,下载一个wwise launcher。
下载过后运行这个软件,选择侧边栏的Wwise:
这里第一次使用的时候,INSTALLED VERSIONS下面应该提示你们Wwise是没有下载的。下载它。然后就会得到我这个界面。
点击Launch Wwise,启动Wwise。
然后得到如下图所示的窗口:
第一次启动时这里没有项目。选择New,新建一个项目。
在Name栏里随便输入一个项目名称后,记住这个项目的路径,点ok进入这个项目。应该长这样:
选择我黄笔高亮的ShareSets。
在左侧栏里面找到Conversion Settings-Default Work Unit-Default Conversion Settings。如图:
双击打开它。在右侧偏上找到Format,改为vorbis,后面quality是4不用管他。如图:
然后再在左侧,点击回到audio栏,右键下方的Default Work Unit,选择import audio files,如图:
然后在弹出窗口中,选择Add Files,选择你要转换格式的所有文件后,点确认,然后点import,然后再在新弹出的窗口中再点import。如图:
然后你的wav文件就导入到Default Work Unit的下拉栏中了。如图:
你可以在这里试听、调整音量试听等(虽然我觉得用不到,但是要说明,这里调整音量并不会改变这个wav文件以及一会导出的wem文件本身的音量。)
右键一个文件,选择convert,然后在弹出窗口中再点convert,就能把它转换为wem文件。
首先注意!
在你导出之后,一定要到(你的项目目录/.cache/随机两字符文件夹)下看一眼导出的wem文件!这个文件的文件大小很重要!因为你使用的编辑wav的手段会或多或少的改变wav文件的大小,使之更大,所以务必务必和最开始拆包时得到的wem文件对比一下。如果你正常设置了Format,改为了vorbis,那么这个wem应该至少小于等于或仅仅略微大于(<15%)最初的wem。否则你需要调小前面我提到的quality,直到不再显著大于原文件。
其次但是!
这个软件很傻逼的两点是:
- 它直接把转换后的wem文件放到了(你的项目目录/.cache/随机两字符文件夹)下,所以我之前说,你一定要记住你的项目在哪。
- 它转换出来的wem的命名,只!能!是!乱!码!
所以如果只是少数三四个文件还好,但是像丁真的语音文件,有从0-508一共509个,完全不可能一个个去和原文件对比。
因此我又又又写了一个脚本(针对wwise转换格式的)。把这个程序直接放到你的项目目录里面。如图:
然后双击启动这个程序,效果如图:
然后回到Wwise程序里面。
手动,按顺序的,一个一个的,
选择每一个要转换的音频文件,并转换。
这里会很麻烦,所以有一个技巧:你不用右键点击这个文件,你只需要鼠标左键聚焦到这个文件的上一级,然后按shift+c,然后按回车,就可以完成转换。但是注意一定要选择上,不要点到旁边的“√”。如图:
随后在我写的那个程序的窗口中会提示:
提示一次文件被占用没有问题。只要下面的moved...路径...新建文件夹\数字.wem显示了,那么就是运行正常的。
转换完成后,在项目目录下面的新建文件夹中,就能得到一连串的数字.wem文件了。
现在咱们终于可以把折磨了自己许久的wwise关掉了。
现在咱们下一步是要用ringing bloom-PCK Editor,把音频文件替换掉。
然而,即使ringing bloom作者最新更新里面提供了mass replace功能,但是效果是这样的:
还是那句话,如果仅仅是替换少数几个还好,但是如果要替换上百个,毫无疑问是在浪费生命与视力。
因此!!我们可以选择使用另一个功能:ID Replace
我叕写了一个脚本(针对ringing bloom封包的)。这个东西略微有点复杂。
首先:用PCK Editor打开你要替换的spck.1.X64.Ja文件(就是你的wem最开始从哪拆包出来的那个)。然后点击第一行的除文本框/下拉栏以外的地方,聚焦到上面。效果如图:
然后双击运行“从窗口中读取所有可写元素”这个程序,然后再次聚焦到PCK Editor这个窗口上,等。等待过程应该如图:
在此期间程序会慢慢读取所有文本框里面的内容,即左侧的Wem ID和右侧的Wem Name里面的内容。
等到程序一直显示未读取到新内容后,且条数与PCK窗口里面的条数的两倍相近之后,选择程序窗口,按ctrl+c,程序会将所有读取到的内容按序号排列输出。
如图(这里只截取一小段):
共xx条,条数应该是PCK Editor读取到的wem数量的恰好两倍。
把(共xx条下括号冒号)后面的每一行,包括前面的序号,复制。
然后双击打开(提取纯数字)这个程序,然后粘贴进去,然后敲回车,然后按ctrl+C。随后效果应该如图(这里只截取一小段):
复制最下面的排序结果。这是按照id的大小排序过后的所有id。
而恰好,我们的id与导出的wem文件,也与刚刚我们转换完成后的wem文件,就是从小到大对应的,最小的id对应0.wem,然后是第二小的与1.wem等等等等。
随后我们打开一个新的PCK Editor。然后选择import wems,选择所有你在上一步里面准备好的wem文件。
效果如图:
现在你可以看到,Wem ID全都是0。
然后,点击右上的ID Replace。
在弹出的窗口里面,粘贴上你刚刚复制的那一大坨,用英文的半角逗号隔开的,id。如图:
然后点Confirm。
然后选择export。注意这里一定要给文件起一个名字,一定要带有.(语言)的后缀
然后你就能在你选择的路径下,得到两个文件:
没有点nonstream的文件,改名为你拆包时用的文件,放到那个文件的目录下(即natives\STM\streaming\Sound\Wwise)
有点nonstream的文件,删掉后缀的nonstream,同样改名为你拆包时用的文件,(一样的名字。)放到路径(natives\STM\Sound\Wwise)下。
然后,这就是一个完成的mod。
如果你运行之后发现角色没有声音,说明你压缩后的wem文件太大了。去仔细读第8步(wav再转wem),看看注意事项。
欢迎补充,欢迎反馈。
教程中的脚本基本由deepseek使用python编写。deepseek我爱你。
感谢诸葛不太亮大佬提供的工具列表,感谢他的群聊中的各个其他大佬提供的支持。
感谢风过无痕大佬提供的从零开始做外观mod教程,让我可以不用给这个教程想格式。