MGSV 声音替换工具

MGSV 声音替换工具

轻松替换游戏中的音效/音乐/语音。无需替换大小限制,也无需使用十六进制编辑器。

Utility

MGSV 声音替换工具

《合金装备5》与其他许多游戏一样,使用专有格式将声音和事件信息打包到称为“Wwise Soundbank”的容器中。简单来说,音效库(使用 Audiokinetic 的 Wwise 软件创建)允许游戏开发者管理系统资源,并通过打包方式更有效地组织音效,使任何时刻只加载必要的声音。

幸运的是,这些音效库(扩展名为“.sbp”)只是容纳“RIFF”文件及其相关事件信息的容器。例如,在游戏中开枪会调用枪声的ID,该ID很可能位于当时加载到内存中的某个音效库中。

更新 v0.9:

不再需要使用“GzsTool”来提取“.bnk”和“.stp”音效库,因为本工具将自动处理。请务必阅读后续的更新指南。(同时,我已完全放弃对旧功能的支持,因为不再需要)

需求:

指南

我将演示一个从开始到结束的典型工作流程,希望一切顺利。我会沿途指出重要细节,考虑这些细节后,成功替换声音的几率接近100%。

在本指南中,我将替换一些枪声;这些枪声位于. \Steam\steamapps\common\MGS_TPP\master\chunk0.dat。如果你不知道某个声音存储在哪里,通常可以从“chunk0”开始查找。

提示:下载“Ravioli Game Tools”并将其与“.sbp”、“.bnk”和“.stp”扩展名关联,这样你只需双击文件,即可通过界面直接听取声音。

  1. 使用“File Monolith”中的“Archive Unpacker.exe”将. \chunk0.dat提取到名为“chunk0”的文件夹中,最好放在游戏目录之外。完成后,导航到. \chunk0\Assets\tpp\sound\asset\,找到许多 SBP 音效库。注意:不建议修改从“.dat”文件中提取的任何内容;相反,应将打算修改的内容复制粘贴到另一个工作文件夹。由于我们不会为了 SnakeBite 而重新打包 chunk0,因此可以依赖此文件夹保留未修改的文件,以便必要时重新开始。

  2. 将我的工具(Wwise.exe)以及要修改的音效库提取到合适的工作位置。“.sbp”文件的名称有时可以提示其包含的声音,但许多情况下,你只能逐个使用“Ravioli Explorer”播放每个声音,直到找到目标。在我的例子中,我将复制“common_bank_01.sbp”到新的工作文件夹。

我的工作文件夹,我决定也将提取的“chunk0”文件夹放在这里 工作文件夹

  1. 要从“.sbp”文件中提取音效库,可以在同一目录下打开命令提示符(在资源管理器中按住 Shift 并右键单击,选择“在此处打开命令窗口”),然后输入. \Wwise.exe <path_to_sbp>;或者直接将“.sbp”文件拖放到“Wwise.exe”上。这将提取所有包含的声音文件(命名为“RIFF_####.wem”而非ID,以便更容易找到),并创建稍后放置替换声音的目录。

Wwise_Output 包含提取的文件,Wwise_Input 是放置替换文件的位置 输出目录

Wwise_Output/common_bank_01 的内容,不要删除其中的任何内容,但更重要的是,不要删除原始的“.sbp”文件。 输出内容

注意:大多数情况下,输出文件夹会包含一个“.bnk”文件和一个“.stp”文件(两者都是音效库容器),此时适合使用“Ravioli Explorer”,听取每个文件的内容,并记下你想要替换的特定声音的文件编号(某些音效库可能不包含声音,这很正常)。在我的例子中,我想要位于 . \common_bank_01_sbp\common_bank_01.bnk 中的“M-2000 Silencer”枪声,其ID为:363550897。

使用 Ravioli Explorer 听取声音 Ravioli Explorer

提示:实际上,暂时将“.bnk”扩展名改为其他名称,然后用“Ravioli Explorer”读取它可能是个好主意,因为这样文件将以“File####.wem”的格式按顺序列出,更容易记住。

  1. 接下来,我打开“common_bank_BNK.log”以获取ID为363550897的“M-2000 Silencer”声音所需的信息。在日志中搜索“363550897”,即可获得查找/创建替换文件所需的所有信息。可以看到它是“RIFF_0985.wem”文件,格式为“PCM”(稍后请注意)。虽然不是必需的,但最好匹配声道数,本例中为“Mono”。

日志文件顶部: 日志顶部

搜索 363550897 后: 搜索后

  1. 假设你对要替换的声音有一定的想法,建议先使用“Adobe Audition”或“Audacity”编辑并导出替换文件,格式为“.wav”,并匹配原始文件的声道数。对替换文件满意后,启动 Wwise v2015 并创建一个名为“MGSV”的项目。然后通过“Project > Import Audio File”导入新的“.wav”文件,并使用其中的对话框。

重要:按“Shift + K”打开项目设置,点击“Source Settings”选项卡。将“Default Conversion Settings”更改为日志中注明的格式。例如,“M-2000 Silencer”声音被提取为“RIFF_0985.wem”,格式为“PCM”,因此我将相应更改 Wwise 中的转换设置。然后点击“Project > Convert all audio files”,默认情况下转换后的文件放在 <Project_name>\.cache... 文件夹中。

Wwise 设置

  1. 现在我们有了扩展名为“.wem”的替换文件,只需将其命名为与原始文件相同的名称(因此我会命名为“RIFF_0985.wem”),放入. \Wwise_Input\<Soundbank>文件夹中。然后重复步骤3,工具将自动检测替换文件,并在. \Wwise_Output\文件夹中创建一个全新的“.sbp”文件,包含所有必要的更改。

我的替换文件放在 .\Wwise_Input<Soundbank> 文件夹中 替换文件

运行命令 .\Wwise.exe .\common_bank_01.sbp 后,这是 .\Wwise_Output 文件夹,包含新生成的音效库 输出结果

注意:. \Wwise_Output\common_bank_01 文件夹中的所有原始文件仍然存在以供听取,只要你有原始的“.sbp”文件,就可以自由地在. \Wwise_Input 文件夹中添加/删除 RIFF 文件,不会产生不良后果。建议只使用原始音效库运行工具。你甚至可以管理多个音效库,因为生成的文件夹名称来自作为参数提供的音效库。

  1. 显然,我现在需要重新打包“.sbp”文件到“chunk0”中。如果尚未安装,请安装并启动 SnakeBite,阅读出现的对话框并接受默认选项。这(以及其他功能)会为我们处理“.dat”文件的解包和重新打包,并允许我们使用内置的“Makebite”工具创建模组。将新的“.sbp”文件放在自己的文件夹中,但务必创建与 chunk0 中相同的目录层次结构,即其原始位置。例如,我的文件夹结构是:
M-2000
|___Assets
|___|___tpp
|___|___|___sound
|___|___|___|___asset
|___|___|___|___|___common_bank_01.sbp

然后启动“SnakeBite”,选择“mods”,进入“File > Launch Makebite”并相应填写。 我的情况: Makebite

这将创建一个存档,你可以在“SnakeBite”中使用,从而安全地启用和禁用你的模组。

基本上就是这样了。请注意,我没有时间测试每个音效库是否在游戏中正常工作,但我已经测试了其中很多。虽然我不会积极开发此工具,但如果有人遇到问题,我很乐意修复。

如有任何问题,我会尽力回答。

提示:关于找到特定声音,以下是我遵循的指南以及我对 Wwise 音效库的一些理解。希望能有所帮助,并欢迎任何意见/批评。 音效库的目的有两个:组织和优化。 目标是让任何时候加载到内存中的音效库尽可能少,同时当然要使该关卡的所有声音可用。 开发者很可能遵循一个模板,以便团队“保持同步”。 不太可能有重复的声音,因为(尽管有限/不理想)声音可以按需从其他库中流式传输。 枪声、撞击声、移动声、咕哝声/呻吟声、爆炸声等……很可能存在于一个地方,格式为“PCM”。 从运行“Wwise.exe”后生成的日志中可以看出声音的格式。需要快速读取的声音(例如响应玩家输入且无法预测的声音,如开枪)更可能是“PCM”格式,而“Vorbis”是压缩格式,因此需要更多时间/处理能力。 我不太确定这一点,但我认为只有“.bnk”音效库可以关联事件信息。实际上,Wwise 库是“.bnk”,但 MGSV 使用“.sbp”,其典型结构如下: << SBP >> << BNK >> << STP >> << | Header | >> << | Header | Data | HIRC | >> << | Header | Data | >> STP 头部对我来说特别有趣,原因我不赘述。重要的是,如果这是正确的,那么我会预期“.stp”只包含不需要事件信息的声音。 我希望能对此有更明确的解释。