问题:如何正确地将
wav
文件转换为博德之门 3 的 wem
格式,以使这些文件在游戏的配音中正常工作?
ExportTool-v1.18.5
提取 Voice.pak
和 English.pak
文件的内容。C:\UnpackedData\English\Localization\English\english.xml
并记下该行中的 contentuid
。contentuid
文件夹中的 C:\UnpackedData\Voice
搜索音轨。v2c76687d93a2477b8b188a14b549304c_hcb228250g01eeg4e3cg88abg3f55fb87ee71.wem
。v2c76687d93a2477b8b188a14b549304c_hcb228250g01eeg4e3cg88abg3f55fb87ee71.wem
将文件 wav
转换为 vgmstream
格式,以确保我找到了正确的音轨。wav
格式合成了新的录音。wav
将wem
文件转换为Wwise
格式。转换成功,连vgmstream
都可以正确播放转换后的wav
。然而,在游戏中,音轨不播放,一片寂静。wem
音轨替换了原始 wem
音轨。ExportTool-v1.18.5
,我编译了一个新的 pak
文件,确保选择 No compression
和 Solid
。wem
文件的方法是有效的,我给复制的轨道赋予相同的名称,以确保编译过程正确。这样,游戏中的音轨就被修改了。但是,如果我尝试合成新的音轨并将其转换为 wem
格式,游戏中的对话期间会出现沉默。使用命令检查您的初始 .wem(例如):
vgmstream-cli.exe 103010647.wem
它将显示解码后的 .wem 格式:
decoding 103010647.wem
sample rate: 48000 Hz
channels: 1
channel mask: 0x4 / FC
stream total samples: 82148 (0:01.711 seconds)
encoding: Custom Vorbis
layout: flat
metadata from: Audiokinetic Wwise RIFF header
bitrate: 76 kbps
play duration: 82148 samples (0:01.711 seconds)
但是如果您使用 wwise“按原样”将 .waves 编码为 .wems,它将像这样编码:
decoding 103010647.wem_818F3B66.wem
sample rate: 48000 Hz
channels: 1
channel mask: 0x4 / FC
stream total samples: 82148 (0:01.711 seconds)
encoding: Little Endian 16-bit PCM
layout: flat
metadata from: Audiokinetic Wwise RIFF header
bitrate: 768 kbps
play duration: 82148 samples (0:01.711 seconds)
因此您需要更改 wwise 转换格式,使其比特率更接近您的初始 .wem: 默认工作单位 - 单击导入的文件之一 -> 转换 -> 默认转换设置 -> 选择格式并在 Adv 中选择比特率。
之后像往常一样在 wwise 中 -> 转换所有文件
对于后人来说,我在研究《古墓丽影:暗影》时遇到了同样的问题,并发现问题出在 .bnk 文件(Wwise SoundBanks)中。通常,声音要么完全嵌入到 SoundBank 中,要么单独存储为 .wem 文件。然而,介于两者之间的东西显然也是可能的:完整的声音存储为 .wem 文件,并且声音的第一部分也嵌入到 .bnk 文件中。我猜这是一种延迟对策:在游戏准备流式传输外部 .wem 时为游戏提供一些要玩的数据。
在任何情况下,如果 .bnk 包含(例如)声音的前 300 个字节,游戏将跳过 .wem 文件的前 300 个字节。您可以将原始 .wem 的整个标头清零,它仍然可以播放。但如果您将 .wem 替换为自定义的,它将不再与 .bnk 中的预取数据匹配并拒绝播放。
解决方案是从 .bnk 中删除此预取数据。您可以使用 010 Editor 的此模板来执行此操作:https://github.com/eXpl0it3r/bnkextr/blob/master/bnk.bt
您会想要: