WAAPI+TTS—语音临时资源自动构建流程
前言
在大型项目的生产过程中,自动化是很常用的手段。
在一个上百人的团队中,反复沟通、 来回协作,是非常容易出错的。使用自动化流程取代机械化的人为操作,可以大大减少出错的概率,提高生产效率。
在工业化生产流程中,项目组往往会部署几台自动构建机、自动打包机等用于进行一些自动化等操作,配合通知机制,将自动化流程等结果反应在某个页面上,并提示相关人员。这使质量把控及工作流程更高效。
音频的生产也可以使用自动构建来完成一些机械化流程,减少人为操作和沟通:如使用构 建机完成自动打 Soundbank,可以避免多人协作过程中,本地生成 Soundbank 的冲突问题, 降低上传出错的几率。
在 Wwise 引擎的自动化部分,由于官方提供了 WAAPI(之前介绍 WAAPI 的文章较多,此处不多加赘述),其使开发者能够更方便的自动进行 Wwise 的内部操作, 使用 WAAPI 配合其他工具结合,开发一些自动化工具链,部署在打包机上,可使整个流程更紧凑与高效。
此处介绍利用 WAAPI 与 TTS,实现语音临时资源自动构建的流程。
语音生产中的问题及优化思路
在语音的生产过程中,可能会遇到配置麻烦,迭代频率高的问题,尤其是在配音需求较多的情况下。在没有任何工具支持的情况下,需要策划和音频设计师来回沟通、操作、上传,整个过程重复性高、容易出错,耗时且机械化:
1. 策划上传语音表,告知设计师;
2. 音频设计师在 Wwise 中添加资源,同步到引擎、配置、上传;
3. 项目组验收、测试。
解决配置问题
在工业化生产中,模块化是一种常用的方法,可以减少很多重复劳动,降低 debug 成本, 方便统筹和快速验证,使团队中的每个人专注于自己的工作,提高开发效率。通常且大致的思路是将文字、音频、美术表现及其他功能集成为一个模块进行配置,这样策划在配置文字的时候也就 顺便完成了语音的配置,不需要单独配置语音。其中,Event 名可按照规则拼写,可提前与策划商议。
解决沟通、Wwise 操作、上传等机械化操作问题
说到“减少来回沟通”,最直接的就是尽可能让机器来完成人为的协作,而语音生产中的协作,恰好是个非常机械化的过程,绝大部分可以用自动化来替代。
此处介绍一种语音自动构建的过程:先根据项目情况,找到机械化的人为协作,并规划好自动化流程,将要执行的过程封装到命令行中,其中涉及到 WAAPI 和 Microsoft TTS 等相关的 API,使用的上传和部署工具为 Perforce 和 Jenkins。
开始部署临时语音自动化构建流程
制定规则
1. 确定 Event 名的拼写规则;
2. 确保语音表的表头具有语音名称、语言、音色、语气、内容等相关信息;
3. 分别创建 Audio 层级和 Event 层级的 Workunit,在 Originals 的多语言目录下创建一个 用于存放 AI 生成的 wav 的文件夹;
4. 试听、选择 TTS 提供的音色,或自己训练一种音色模型。
需开发的内容
1. 将语音表转化为 SSML(语音合成标记语言)格式(Microsoft TTS 识别的格式)的工具;
输出目标范例
2. TTS 文字转语音工具;
(需自行去官网注册并申请 license key)
3. 用于自动导入资源、创建 Sound Voice 及 Event 的 WAAPI 工具;
4. p4、git 等版本管理工具相关内容、通知机制、流程部署;
5. 前端播放逻辑。
部署构建机
使用一台自动构建机器,需安装 Wwise 环境,将以下流程部署至机器:
1. 比对、列出语音表中增、删、改的内容;
2. 将有变动的部分转化为 SSML;
3. 执行文字转语音 TTS;
4. 使用 WAAPI 在 Wwise 中指定的 WorkUnit 中创建、更新 Voice SFX,并生成相关 Event,上传至服务器;
5. 在相关目录下生成 Soundbank 等游戏引擎使用的资源,上传到服务器;
当服务器检测到策划上传语音表,则自动执行以上流程。
改善后的工作流
1. 日常生产中,只需策划配表、上传、等待自动化流程、拉新,即可听到临时语音
2. 语音测试、debug 可以和发包同步进行
可能会遇到的问题
整个自动话过程会有些耗时,如果语音量很大,可能会占用构建机资源,可在特定的时间(如夜间)进行。构建机资源丰富的情况下,可以策划以上传语音表进行。
本文作者
黄超
心动网络,技术音频。喜爱美食,享受探索新事物的过程和团队协作的乐趣。
更多内容,欢迎关注我们官方B站和新浪微博!
游戏音频存档 | 第 2 部分:案例分析
游戏音频存档 | 第 1 部分:基本情况
Wwise+GME游戏语音方案:解锁更多语音玩法,让玩家“声临其境”