Wwise语音管理探究

游戏音频 / Wwise 技巧和工具

游戏的角色语音管理是一项细致且繁琐的工作。从项目的前期到后期,会遇到对角色语音的增删改查、添加动态效果处理及创建不同语种间的切换等需求。建立一套稳定可靠的语音管理流程会为工作带来效率。

采用Wwise External Source

不采用Wwise时的工作方式

不采用音频中间件的项目一般采用数据库作为和故事编辑器(StoryEditor)沟通的桥梁。所有的语音文件通过数据库来进行管理,便于执行增删改查及其他拓展配置。

image0011管理表格举例(这里选的SFX资源,Voice资源也是同理)

比如,上图的表格大家都不会陌生——我们在Excel里安排了ID、声音类型、文件名、文件路径、以及输出BusOutput)等等的列标签。在项目运行时,据此调用文件的ID或者文件名,找到各个文件的真实路径,进行一系列的约定处理(设置)——比如这里的Output就是对应不同声音类型的输出Bus,最终音频文件得以正确播放。

采用Wwise时的工作方式

同样的思路也可通过Wwise提供的 External Source来完成。我们可以把External Source理解成一个具有通用属性(Actor-Mixer Property)的模板,在项目运行中程序将指定的原始语音资源放入这个模板,模板上的属性由我们在Wwise里提前设置,或者项目运行时代码实时设置,最后播放出带有特定属性的声音。

我很喜欢这条思路,它既能利用到数据库的便捷性,又可利用到Wwise引擎的强大功能,因为角色语音文件是大批量的单句资源,同时具有通用属性的资源量也多,不像SFX需要配置很多播放逻辑(各种switchblendsequencedelay巴拉巴拉),所以很适合采用External Source来实现。

External Source作为“模板”

image0022多个不同用途的external_source

External_Source可以被创建多个,并分别用作对应不同声音类别的“配置模板”。如上图,我们创建了三个External_Source,(一定记得各自重命名(Name),这样才会自动生成各自的哈希索引(Cookie))其中External_Source_normal为通用对话使用的模板,External_Source_reverb为使用了混响辅助发送的模板,External_Source_phone则为用于为语音增加对讲机效果的的模板(例如,插入了EQ及失真效果器)。

当然,这只是个简单的示例,在实际项目中需要根据具体情况,结合声音对象属性(EffectsPositioningOutput BusAux Bus等等)进行更有针对性的设计。

需要注意

通常,灵活也意味着更多的工作。音效需要根据自己的项目,应需设计不同的External_Source、不同的Output Bus、或静态/动态加载的效果器等等。这也需要和程序员在数据库的设计上进行沟通及做出约定,记得程序的工作量也会相应增多。当然,具体工作量跟项目的大小、复杂度有关。能实现特定需求的设计可能性有很多,尽量找到大家都省事的方案。

使用WAAPI批量导入语音

Wwise的语言管理器(Language Manager)为多语言版本的切换提供了支持——我们可以把语音文件的不同语言版本分别导入”Sound Voice“,设置好语言版本,并定义和管理好对应的语音Event以及Soundbank

虽然Wwise提供了Auido File ImporterVoice Asset Importer之类的工具,比如可以基于TabDelimited文本文件导入,基于模板(Template)导入,以及采用Localize languages的导入模式等。但是,经过笔者的实验验证,对于批量导入多语种语音来说会显得有点繁琐,容易出错。对于此需求,采用WAAPI进行批量化导入会是一个明智的选择。这里提供一个脚本分享一下思路:

https://github.com/aadsache/waapi_tools/tree/main/voices_importer

  1. 首先约定外部的资源管理器文件结构为:Voicefolder//Character_name(folder)//EN_xxx.wav
  2. 具体的音频文件会有一个前缀代表它的语言版本:EN_xxx.wav/CN_xxx.wav
  3. 约定要创建Audio项下的层级结构为:Default Work Unit//Voice(Folder)//Character_name(Actor_Mixer)//xxx(Sound_Voice)
  4. 根据音频文件的前缀EN\CN指定Sound_Voice下的语言版本English(US)\Chinese
  5. 约定要创建Event项下的层级结构为:Default Work Unit//Voice(Folder)//Character_name(Folder)//xxx(Event) ,并分别定义好Auido项下对应xxxSound_Voice)的播放行为

image003图 3各界面的层级图

这里有几个小提示,WAAPI对象的导入和创建可采用mergeuseExisting这样的模式,这样就可避免之前就存在的资源、对象不会被重新导入、创建;工作中搭配数据库使用WAAPI依然是必要的。

以上是导入双语言版本语音并设置event的小实验,工作中还应采用更规范化的做法,这里只是提供了一个思路。以下还有几个值得拓展的地方:

#可以配合Add-ons来配合使用WAPPI——Add-ons也可以做出很多有意思的事情,拓展出更多的功能。

image004图 4Add_on的拓展思路

#配合数据库也可做很多拓展。比如Waapi不仅仅只是能导入音频文件,也可以同时指定对象属性,如音量(Volume),输出(Bus)、发送(AuxBus)等等。对于低延迟要求不高的语音文件,可以同时设置磁盘流式播放模式(Stream)来可以减小内存的占用。("@IsStreamingEnabled" : True,"@IsNonCachable":True

#值得一提的是如果把注释(Notes)用来放语音文件的台词,那简直太酷了!

具体操作可以参考此脚本(https://github.com/aadsache/waapi_tools/tree/main/importer_withnotes),如图,可以直接在Wwise搜索框通过搜索台词字符内容,找到相关声音对象。但是这里搜索框不能做到高级搜索,必须从第一字符就要严格匹配才能搜索到

image0055 按台词查找声音对象

动态语音及其他

Wwise提供了Dynamic Dialogue来灵活性、选择性地完成对白,也可通过其他(containerswitchRTPC等)工具搭建自己的对话系统,会稍微有点复杂,但是思路上也挺有意思。这里笔者压制了两个中文字幕的视频,分别关于Dynamic DialogueInterruptible Dialog的案例演示。

(国内观赏视频通道

(国内观赏视频通道

希望能带给大家一些帮助,如有纰漏,欢迎大佬们指正。

 

 

吉吉(徐喆)

游戏声音设计/配乐

吉吉(徐喆)

游戏声音设计/配乐

爱好音乐的理工男,五年音频行业从业经验,负责过几款独立游戏。喜欢音频行业的技术研究。声音啊,就是算命!

评论

留下回复

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

更多文章

《Yonder: The Cloud Catcher Chronicles》- 音频系列日志 - 第一篇:充满风险的开端

《Yonder: The Cloud Catcher Chronicles》于 2016 年底在 Sony PSX 展会上发布。它是一款由澳大利亚 Prideful Sloth...

15.5.2018 - 作者:史蒂芬·舒茨(STEPHAN SCHÜTZE)

“零代码”开发小游戏—UE4蓝图与Wwise结合的设计思路 — Part 1

大家好,我叫伍岚珊(Coffee...

6.1.2020 - 作者:伍岚珊

怪物语音制作分享

怪物语音声音设计大致分成两类,一类是不同状态下的嘶吼和喉音(Short...

8.6.2020 - 作者:李敬平

Tell Me Why | 音频日志 – 第 2 部分:音乐

《Tell Me...

30.3.2022 - 作者:路易斯•马丁 (Louis Martin)

关于如何在团队工作环境中使用 WAAPI 和 Python

在本文中,我想说说自己很长一段时间以来是如何使用 WAAPI 的。这当中用到了 Python、命令扩展 (Command Add-on) 和一个小的辅助程序 (Helper) 库。藉此,能以比...

11.5.2022 - 作者:尤金•乔尔内 (Eugene Cherny)

GME 语音聊天系统在《Suspects: Mystery Mansion》中的应用

简介 这篇博文将介绍 GME 语音聊天系统在 Wildlife Studios 开发的《Suspects: Mystery...

25.8.2022 - 作者:菲利佩•洛佩斯 (Felippe Lopes)

更多文章

《Yonder: The Cloud Catcher Chronicles》- 音频系列日志 - 第一篇:充满风险的开端

《Yonder: The Cloud Catcher Chronicles》于 2016 年底在 Sony PSX 展会上发布。它是一款由澳大利亚 Prideful Sloth...

“零代码”开发小游戏—UE4蓝图与Wwise结合的设计思路 — Part 1

大家好,我叫伍岚珊(Coffee...

怪物语音制作分享

怪物语音声音设计大致分成两类,一类是不同状态下的嘶吼和喉音(Short...