引言
去年接到一份外包项目,为一部国人原创的 Gal Game 作品的配音内容进行剪辑、后期处理的需求,其实这里面包含了素材剪辑、文件管理、后期处理等工作流程,本文着重于项目的管理方面,现在将这些经验分享给大家。
(涉及的图文资讯已经脱敏处理)
简要流程陈述
一期
- 建立工作目录:使用 TortoiseSVN(或 TortoiseGit)进行项目版本控制。一个典型的工作目录中的各文件夹应包括
- Assets - 台本源文件、场次表、格式化后的角色台词表格、VO 状态表等
- Projects - 工程文件,例如 REAPER 工程文件
- Requests - 甲方的需求文件,例如额外的音效需求清单
- VO Feedback - 返音说明文件,其实也可以整合到 Assets 目录内
- VO Output - 输出的所有配音文件
- VO Source - 甲方提供的音频源文件,包括返音文件也在里面
- Workflow - 根据工作内容提炼的制作流程,参考用
- 整理台本:将收到的台本按规范整理成【角色名】——【台词】对应的表格。
- 整理场次表:将上述表格使用筛选功能提取角色与场次形成的二维关系表,要求通过该场次表能快速审阅某名角色是否在某场中出现配音内容。
- 记录 VO 状态:用一份表格记录当前的配音文件状态,例如是否已经提交,是否有返音等
二期
根据规范开始进行配音文件的剪辑,将剪辑的内容输出至 VO Output\Raw,要求按场次设置文件夹进行存放,以方便后续处理。每当处理完一部分内容时,都应更新场次表的状态,方便后续审阅整体进度。
- 剪辑过程中可能存在一部分 VO Source 有 Feedback,则优先检查 Feedback 文件,并将内容涂色到角色-台词表里方便区分。
- 剪辑过程中可能存在大量的音频复用情况(例如亚尔维特线的亚尔维特大部分台词文件会被复用到其他路线),经讨论后的解决方案是:在剪辑工具中复制这些音频内容,严格按照剧本路线做到一条台词对应一条音频。
- 该项目不是广播剧的后期预处理,所以没必要按场次依次建立工程文件,也没必要严格按照对白出现顺序排列角色台词,直接按角色建立工程文件进行拆分会更省事。
期间遇到的配音质量问题,例如削波或需要降噪,先不作技术方面处理,仅记录到 VO 状态表。乙方在判断配音质量太差实在不可用时,可以向甲方反馈。
三期
对拆分后的配音内容应用标准化。例如降噪、去杂音、音量标准化或特效化处理。
配音文件规范化命名方案
导出拆分的 VO 应放置在 VO Output 目录,在 REAPER 中使用通配符配置文件层级与文件名。
Raw\$track\$parenttrack_$track
这样将会生成如下形式的拆分配音文件:
例如对于“虚空线 - 2 磁流体加农炮”,角色亚当第一份配音文件名应为
X-2_YD-001
其中:
X-2_AD
可由上述通配符生成,X
代表“虚空线”;2
代表第二场;AD
为角色名缩写;001
*(子序号)则为 REAPER导出音频文件时自动为重名文件进行的区别化命名,且能确保它是按顺序生成的。(即能确认该角色在该场的第几句台词)缺陷:无法在台本中根据全局序号快速找到角色的台词,只能将搜索范围缩小到“该角色在该场的第几句台词”。 可见,_下划线符号是字段功能划分,-连字符是作为某个功能的扩展。前者的级别更高。
规范化建议
形如 x-y_character-n 格式的字段,我们将规定规范如下:
- x - X 虚空线,N 纳米科技线,D 堕入虚境线;
- y - 取罗马数字对应场次号,特别地,对于 ENDING,额外标注 E1 / E2 / E3 加上场次号,例如虚空线的 END 3 - 15 场,记为 E3-15;
- character - 角色名缩写。
- n - REAPER 生成的序号。
遗漏内容的解决方案
考虑到操作过程是人为进行,潜在的遗漏现象在所难免,当出现部分序号的配音内容遗漏而需要“插队”时:
核心思路为建议在不破坏现有文件名序号结构的前提下追加遗漏的内容。
例如在X-2_AD-003
之后,X-2_AD-004
之前需要插队一份遗漏的音频文件,则可以将其命名为:
X-2_AD-003_X-001
即 X-001
字段作为补漏使用,且整体继承了 X-2_AD-003
的顺序。
其他事项
拆分阶段对有问题的音频不作处理,仅将问题(例如削波)登记到透视表的角色属性及 VO 状态表。
为保证后续操作保留余地,应将输出至 VO Ouput\Raw 目录下的音频文件,采用 24 Bit,44.1 kHz,Wav 格式进行保存。
占位思想:即使存在缺漏问题,仍可用占位音效的方式将配音内容提交给制作方(前提是沟通好)。因为每个配音文件的名称是唯一且不变的,在制作方测试阶段可方便地进行资源导入,且可通过听到提示音来判断是否存在缺漏,后续拿到修正后的音频执行一遍替换即可正常使用。
制作方可以考虑将当前台词对应的配音文件名输出至游戏引擎的控制台,方便判断是否存在缺漏或其他异常。
微观控制
这里列举一些实际操作过程中常见的问题,以及能增加效率的操作。
技术需求 1:从原始台本中提炼出“【角色名】—【台词】”的内容
一、观察该项目的原始台本后发现,带语音内容的台词必有类似
【亚尔维特】说实话,我很好奇这些玩意是怎么做出来的。
的字段,故考虑用正则表达式进行筛选。
经测试,适用的正则表达式为:
【.*】.*
它适用于 Sublime text、Atom、Notepad++ 等文本编辑工具。
二、因为台本 .doc 格式无法直接查找内容,可以先将内容导入上述文本编辑工具中,使用正则表达式来进行检索,然后导入电子表格做后续编辑。
三、将其导入电子表格后,为了将内容自动拆分为【角色名】—【台词】两列形式,使用“查找与替换”将“】”改为“】 | ”;然后在“文本转多列”(Text to Columns)将“ | ”作为分隔符识别即可。 |
技术需求 2:在音频工作站中快速拆分连成片的配音内容
在 REAPER 中,我为如下组合命令:
Item: Split items at time selection Remove items/tracks/envelope points (depending on focus) - no prompting
分配了快捷键 Z,该组合命令的作用为“将选区内的剪辑拆分,并将其移除”。
随后,配合鼠标右键进行选区的选择即可一键移除配音的空白段落。
最后,执行如下命令即可快速地为选中的剪辑创建 Region,它可以作为导出时每个单个文件的选区识别内容。
SWS/BR: Create regions from selected items (name by item’s notes)
技术需求 3:为剪辑进行音量标准化
处理配音平衡最大的难点在于如何把很微小的声音抬高而不影响音量大的内容,如果直接使用压缩只会对瞬态产生破坏,因而核心思路是使用扩展器,将人声中音量较低的部分抬高。在这里我使用的是 F.lux Sorela。
其实任意扩展器配合压缩器就能实现类似的功能。而 Solera 同时具备压缩和扩展(以及反过来的)功能,以及输出时可以启用 Clipper 来防止处理后的音频削波,所以我在这里选用了它来进行一站式处理。
注意看下图 IO 关系的扩展段,它正好跟压缩相反,作用变成了“把输入较低的部分抬高”。
原文地址:https://zhuanlan.zhihu.com/p/112991679