在Wwise中进行大批量音频管理的思路分享

游戏音频 / Wwise 技巧和工具

在我的日常音频工作中,经常会遇到需要做大批量语音文件导入、配置的情况,由此产生的批量化处理需求大致可分为三种:

  • 第一种,大批量的多性别语音文件的导入及配置需求,例如:游戏中已存在男、女和少女三种性别,需要在Wwise中使用Switch Container来做切换管理,包括新增Switch Container,分配Switch GroupAssign Objects,简单讲:为已有性别进行批量资源导入与Switch配置;
  • 第二种,在现有的Switch Container里面重新批量插入一种新增性别的语音文件,简单讲:增添新的性别类别后资源的批量导入与Switch配置;
  • 第三种,由于项目语音文件数量庞大,我们采用动态分包加载Soundbank的方式,经常会需要按照地图位面IDMapID)来批量重新调整音频事件与Soundbank之间的归属。

由于项目的DAU非常高,出于“稳定优先“的考虑,我们让Wwise版本停留在了2016。然而由于此版本的Wwise中还没有WAAPI功能(2017.1才加入),因此当发现每两个月就有两三千句左右的语音需要进行上述三种批量处理的时候,声音设计师心态简直要炸裂了,所以必须要找到办法解决这个问题。以下便是我的处理思路的分享,仅供参考。

注:”位面”在游戏《天涯明月刀》指剧情分支得以展开的地图副本。

需求一的解决思路

针对需求一,可以使用Wwise自带的Template模板功能,将每一句台词三种性别版本的语音文件放到一个文件夹里,再用这个文件夹来新建Switch Container,从而可以批量套用现有的Switch Container的模板。这样做还可以套用模板的Switch Container里的Bus通道设置、流媒体wem设置、Switch GroupSwitchAssign Objects情况等设置,非常实用。如图,两千句语音文件几秒钟便可导入、配置完毕。Template的功能帮我们解决了很多配置的套用,很赞。

1封装好的文件夹全选后,选择要套用的模版
2开始批量套用模版来新增Switch Containers

然而有一个问题不能忽视:面对两三千的语音文件,将不同性别的语音文件移动到一个文件夹并使文件夹命名与其子项中相同的字段一致,也是个不小的工作量,这时候便需要程序同事帮忙开发一个小工具——AudioGenerateFolder.exe(这里要给同事+鸡腿1)。这个小工具可以批量将不同后缀标记的源文件封装在同一个文件夹,并且新增同名文件夹。

注:

  • 小工具的做法很多种,本文只是聊下思路;
  • 若使用具备WAAPI的Wwise版本,Bernard Rodrigue提供了用于解决此类需求的Python工具:https://github.com/decasteljau/waapi-python-tools-1/tree/master/auto-rename-container;
  • Hou Chenzhong提供了带GUI的该工具的二进制版本,可直接在这里下载使用。
3批量新建封装文件夹的小工具 
4不同后缀文件封装前后的示意图

需求二的解决思路

针对需求二——将新增文件插入到已有Switch Container里,我们可以通过修改Wwise工程中与语音相关的WorkUnit xml文件(下文中统一以项目中采用的Voice.wwu指代)的内容来实现。

5已有Switch Container

单个或多个文件的拖拽添加是很容易,但当你有大量的新增的Switch选项需要插入到已有的Switch Container里,数量多到几千个的时候,查找到原有的Switch Container就要耗费大量时间(尽管可以用List View,后来的版本也可以直接在Container Editor里搜索),就更别提一个一个拖拽插入后再做Switch分配设置了。这时候你需要程序同事帮忙开发一个小工具,AudioMoveSwitch.exe(为同事+鸡腿2)。

注:小工具的做法很多种,本文只是聊下思路。

6批量修改移动Switch归属的小工具

原理其实就是通过批量修改了Actor-Mixer Hierarchy下的Voice.wwu文件来实现的。

7Wwise里面SwitchContainer和待添加的语音

比方说我们现在要把0331_L移动到同名的Switch Container里面,先打开Voice.wwu,搜索关键词0331就会看到SwitchContainer Name="0331",和他的两个“孩子”躺在ChildrenList里。

8Voice.wwu里已有的SwitchContainer结构图

 这时候新生儿”0331_L躺在外面,如图:

9新增语音文件在Voice.wwu里的结构图

然后我们打开工具里文档,写下新生儿”0331_L的名字

10批处理工具的文档截图

然后再打开Voice.wwu文件就会发现新生儿”0331_L回到了“妈妈”的怀抱了。

11Voice.wwu中三个“孩子”的样子
12Wwise工程中三个“孩子”的样子

给几个新生儿找妈妈或许还算容易,给几千个新生儿找到妈妈让他们乖乖躺在摇篮里,通过手动的方式就不容易了。通过截图,大家应该也能明白,把新增语音先导入Wwise中,在Voice.wwu表格中获得ID等信息,然后就是顺着名字做归类,放到同名的SwitchContainer下的ChildrenList里面就好了。

需求三的解决思路

针对需求三,前面也已说到,在我们项目中,语音Soundbank是根据不同的地图位面信息(MapID)进行动态加载的,这要求我们根据MapID来命名Soundbank,从而方便负责程序同事对Soundbank进行查找比对与调用。因此一旦MapID有变更,音频也要做相应调整才能保证正确的调用(反之事件移动到了不同Soundbank亦然)。这种问题若是偶然出现的话还好,但当涉及的事件数量大到一定程度,搜索找到这些音频事件并且移动到正确的Soundbank就变得非常耗时。

为此,我们会首先监测拉取最近的分包比对表格,SoundbanksInfo.xml这时就显得特别有用了。

13音频事件在声音引擎和语音配置表格里的Soundbank差异对比

注: 我们的客户端,制定了位面场景ID编号和Soundbank 的命名关键词的一一对应关系,例如:进入一个ID为1000的位面场景,就会自动调用命名中含有关键词1000的Soundbank,例如DIALOG_1000便是依据这样的命名规则设置的。

在我们获取到哪些音频事件需要处理以及它们应该放置的Soundbank归属信息之后,这时候就需要程序同事帮忙开发一个小工具——AudioMoveBank.exe(给同事+鸡腿3)。

注:小工具的做法很多种,本文只是聊下思路。

14批量修改移动Soundbank的小工具和读取的信息表格

原理其实就是通过修改了Events路径下的Voice.wwu文件来实现,因为我的操作习惯是每一个Soundbank都会在Events页签下有一个对应的打包放置音频事件的文件夹。

15Soundbank的文件夹管理和打开Voice.wwu可以看到的文件夹结构

所以移动音频事件的Soundbank分包,只要在Voice.wwu里面批量修改Folder的归属就好了。

以上就是当我在大批量语音文件管理的思路,感谢Wwise,感谢程序大佬们的技术支持。

 

葛鑫

音频策划

北极光工作室

葛鑫

音频策划

北极光工作室

评论

黄 耀沛

October 31, 2020 at 12:30 pm

感谢经验!

黄 耀沛

October 31, 2020 at 12:30 pm

感谢经验!

留下回复

您的电子邮件地址将不会被公布。

更多文章

《NieR: Automata》的空间声学设计以及如何借助 Wwise 实现对多种游戏玩法的支持 – 第 2 部分

请阅读本文第 1 部分。 利用 Wwise 控件为各种游戏玩法提供支持...

25.3.2019 - 作者:PlatinumGames Inc.

十条你得知道的 Wwise Launcher 用法(2019 版)

注:本文基于 2018 年初在 Audiokinetic 公众号上发表的文章《十一条你可能不知道的 Wwise Launcher 用法》,由作者针对软件更新做了改动,不影响操作的截图沿用旧版本。...

15.7.2019 - 作者:李北南

Wwise八个易忘小操作

大家好,我是来自深圳创梦天地乐逗的音频设计师洪伟森,主要负责自研部门的游戏音效设计与制作,和Wwise项目整合工作。...

2.3.2020 - 作者:洪伟森

在Mac环境下使用Wwise为VikingVillage 进行声音设计

背景 近日在完成了 Wwise 301 认证课程的学习之后,我以 Unity 商店中提供的 Viking Village 免费 Project 为基础,对其进行了全面的声音设计,并在 Mac...

16.3.2020 - 作者:孙宇轩

游戏和影视行业在音频制作上的一些区别 – 第 2 部分

在本文第 1...

10.8.2020 - 作者:杰斯帕.安卡菲尔德(JESPER ANKARFELDT)

Wwise Unity 速查表

今天我们来说说 Wwise Unity Integration。这些年来,相关学习资源越来越丰富,随时都可以拿来参考。就拿 Audiokinetic 官方资源来说,YouTube...

19.1.2021 - 作者:麦斯·麦雷蒂·桑德鲁普 (Mads Maretty Sønderup)

更多文章

《NieR: Automata》的空间声学设计以及如何借助 Wwise 实现对多种游戏玩法的支持 – 第 2 部分

请阅读本文第 1 部分。 利用 Wwise 控件为各种游戏玩法提供支持...

十条你得知道的 Wwise Launcher 用法(2019 版)

注:本文基于 2018 年初在 Audiokinetic 公众号上发表的文章《十一条你可能不知道的 Wwise Launcher 用法》,由作者针对软件更新做了改动,不影响操作的截图沿用旧版本。...

Wwise八个易忘小操作

大家好,我是来自深圳创梦天地乐逗的音频设计师洪伟森,主要负责自研部门的游戏音效设计与制作,和Wwise项目整合工作。...