TTS有声书制作平台主要分为内容预处理、内容结构化、后期处理三个部分。
' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
2.1 内容预处理
网文作为一种较新的内容形式,作者的表述多样化,行文风格较传统出版文学有较大的差异性。内容预处理模块即是针对输入小说进行风格提取、文本校对、角色图谱构建等预处理步骤,为下一步合成奠定基础。
2.1.1风格提取
基于网文领域化预训练模型在海量样本构建的小说标签端到端深度语义模型,通过小说个性化标签提取确定小说风格,并基于此自动匹配小说整体音色风格和背景音。
例如:输入《大奉打更人》输出标签仙侠、幻想修仙,匹配得到背景音风格候选为古风系列音频文件。
' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
2.1.2文本校对
在网文内容中,由于每日创作字数较多,大部分作者在内容中难免会出现部分错别或冗余信息。这些信息一般不影响直接阅读,但在TTS转化的过程中,会造成很多错误,给输出的结果带来较多的混淆。文本校对部分主要对正文中影响TTS体验的文本内容进行过滤,提升文本语音合成准确率。主要分为文本纠错和符号正则、非正文过滤三个部分,(1)文本纠错。基于网文预训练模型构建纠错模型,并在自构建网文纠错样本上进行训练,经评估自研模型远优于开源纠错方案,通过文本纠错极大的减少小说文本易错字提升语音合成准确率。
例如:“之间一个小光点正朝着这边移动”其中“之间”会被纠正成“只见”。
' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
(2)符号改写。针对小说文本中出现的对话形式文本,纯符号文本从阅读者角度可以知晓其含义,但在TTS过程中,无法传达其含义,如“……”、“!!”、“???”,在不同上下文表达不同的意思。(3)非正文过滤。针对小说中存在非小说正文内容进行过滤,通过海量文本中存在的非小说正文沉淀规则,章末经常出现的ps、注、请假、通知等。
2.1.3 角色图谱构建
为了更好的输出每个角色独有的音色,首先需要做的便是角色的挖掘。故而角色图谱构建,是小说画本构建和音色匹配的基本,主要分成角色、属性挖掘、角色关系三个部分。
(1)角色挖掘。通过现有小说角色信息构建命名实体识别任务,并融合数据样本增强等策略进行端到端模型学习,使用网文预训练bert模型进行文本深度语义提取。例如:输入《大奉打更人》小说正文,提取对应角色名许七安、魏源、李秒真等同时提取其性别属性。
目前已构建男女角色、宝物、神兽、灵丹、功法等6种实体识别。其中角色识别在网文领域实现97%角色提取准确率。
角色属性通过句法依存分析对小说正文及用户互动评论进行角色性格提取。如上图是用户的一条评论,可以提取到关联角色的ATT(定中关系),对应的修饰语为可爱,此处也可限定属性修饰词的词包范围,提取出一定量级包含角色性格词汇后,进行聚类汇总。例如《大道朝天》角色属性列和音色描述列通过语义匹配可得到合适音色“xiaohui”,目前平台支持近十种音色,以适应不同品类、不同性格的角色人物,目前音色个数在不断丰富中。' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
(3)角色关系属性
角色关系属性有利于增强音色筛选的完备性,在小说文本中易出现别名,在进行音色匹配时需要统一,例如“相比起他们,名叫采薇的黄裙少女更多的是充当客卿身份,辅助办案。”其中采薇和黄裙少女是同一个人,应具备相同的音色。构建角色关系及正文组合样本,基于网文预训练模型构建深度语义角色关系模型。目前模型支持别名、兄妹、情侣等6种关系挖掘,例如:
' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
2.2 内容结构化
在TTS生成的过程中,如果希望做到丰富的表达形式,就需要对网文的内容进行结构化,识别出不同的场景、人物、动作甚至不同情感下,具体的表述内容。而这个关于不同部分内容表达形式的分割过程,我们把它定义成“网文内容结构化”,在这个处理过程之后,原先混沌的文本内容,则变成TTS转化过程中可以精准调控的输入。最终在输出TTS内容时,可以指定每段内容,以哪个角色的音色,以什么样的情绪,以及具体常见的一些附属背景音,进行输出。
内容结构化是创建小说画本最核心一环,而小说画本也是实现多角色多情感合成音频自动化的基础。
在结构化过程中,将书籍逐章内容,按照发言人将内容进行归属,这个过程我们把它称作章节结构化,换句话说,章节内容结构化指将章节正文拆解成类似于剧本性质的对话形式,例如:陈府尹略一沉思:“妖类做事从不问心,为所欲为,追究原因,不过是自寻烦恼。”拆解成对话如下:
' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
通常在拆解过程中主要分成单角色、多角色、无角色三种情况。' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
在小说文本中单角色、多角色、无角色占比约为17:2:1。故单角色提取已覆盖大部分场景,对于单角色可通过正则关系提取对话正文和旁白中的角色即可,但对于多角色和无角色场景则更为复杂。借助bertsum在文档中进行句子级别分类,构建章节句子角色标注。
在构建样本时将角色名用符号屏蔽,使得模型学习到更多是句式结构特征。
' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
如图,连续的句子通过CLS符号进行连接,经过网文预训练模型对CLS的输出接入分类器网络层进而得到每一个片段对应的分类。
2.2.2 情感和特效场景识别
除了识别出每句内容具体的发言角色,我们还需要明确每句内容表达时,TTS对应的情感,以及一些环境音,由此我们引入“情感识别”以及“特效音识别”两个模块。(1)情感识别
基于Bert构建文本情感分类模型实现文本细颗粒度情感(喜怒哀乐惊恐)分类,通过赋予文本情感属性,再进行语音合成具有情感的音频。
(2)特效场景识别
TTS合成平台维护30余类、超500种特效音库,通过关键词及场景语义提取对小说片段中存在特效的文字位置,并进行准确对轨,提升音频层次丰富度和代入感。
' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
例如:“忍不住又叹了口气,陆长生拿起紫玉翡翠葫芦,小酌一口,紧接着便往住处走去。”2.2.3 特效音对轨合成
对于入库的特效音及场景音进行统一处理,例如码率、响度、音频长度进行格式化等。在进行音频合成时,若音频元素格式不同,导致合成结果会有格式上的异常。如何进行精准的音频对轨合成,涉及到文字如何准确定位到对应的音频位置,对于固定单字耗时的音色,可通过字符计算进行定位,例如:“这里瀑布如银河似,山川日月,彰显仙家气派,远远看去,有一座座山头,散发出奇异光芒。”根据当前音色字符耗时,200ms/字,瀑布声在原始音频200*2=400ms处进行合成。同时对于音色情感波动较大的音色单从耗时无法推算出文字在音频中位置,通过音频静音切割,将音频切成自然句,再进行ASR进行文字转换,针对每个片段精确定位到瀑布所在场景
' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
2.3 后期处理与在线投放
通过智能内容处理能力将书籍文本转化成AI画本后,需配合前端页面更好地展示画本内容,同时需要提供入口手动审校文本信息,如人物识别、对话拆解、情绪识别、特效音识别等,提高AI画本整体的准确率。另外,还需结合第三方TTS供应商所提供的的音色,试听有声书的音频效果,并实时调整人物音色,实现“所听即所得”。2.3.1 TTS有声书制作平台
基于以上应用场景,配合搭建有声书制作平台,可在线生产指定书籍的有声音频,并提供在线试听预览功能,主要分为以下3块:在角色列表页面中,可智能识别全书中所有关键人物信息,包括名称、性别、角色描述等,同时支持系统模型智能匹配音色,实现多角色、多音色的收听效果。另外,还可通过人工方式根据角色性别、年龄等信息参考,手动选取指定TTS音色,并对音色进行二次调整,支持在线实时试听配音效果。在对话列表页面中,可展示结构化的画本详情,前端页面可展示出模型智能识别出的人物、情绪、特效音等结果,如第一句是“旁白”音色,下一句是“张三”音色,同时附上识别置信度参考,如模型识别出错,可由人工手动调整角色为“李四”,利用自动模型+人工标注的双保险,提高画本识别准确度。除人物识别外,单句中的情绪(如高兴、生气、伤心等)、特效音(如风声、走路声、钢琴声)等也可被智能识别出来,并支持人工审校。同时,除内容元素识别外,有声书平台还支持人工逐句精修加工,如语句间隔、词组语速等,可在操作面板中进行编辑调整,对标真人朗读的情感度和流畅度收听效果。编辑完成后,可随时在线提交音频合成任务,并等待第三方平台返回生成结果。针对合成的章节音频,可在作品管理页面实现统一查看及导出功能,方便音频作品的管理。' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
小说画本创建完成后,将内容结构化后的文本组合成ssml标签,提交画本信息到合成队列。服务定时任务从队列中获取画本并调用TTS引擎进行语音合成,合成成功后进行背景音融合,融合后更新数据库状态并上传到cos存储,为下游的分发投放做准备。对于角色音色调整,批量进行画本修改,重新提交到合成队列。在投放过程中,也需要结合在线的具体情况,优先支持头部的精品内容,以给用户更好的收听体验。' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)