Duolingo 在为其世界角色动画赋予生命的过程中,采用了创新的技术手段,以确保角色能够生动地与学习者互动。通过使用 Rive 工具,Duolingo 实现了高效的口型动画制作,提升了用户学习体验,确保了动画的质量和可扩展性。
-
动画挑战:Duolingo 需要为其超过 40 种语言的 100 多个课程中的角色制作动画,但手动动画口型是不切实际的,因此寻求可扩展的解决方案。
-
Rive 工具的应用:Rive 是一种基于网络的实时互动动画工具,允许通过状态机(State Machine)编程控制动画状态的切换和混合,从而实现高效的动画制作。
-
语音技术的整合:为了准确制作口型动画,Duolingo 建立了丰富的语音技术生态系统,使用内部的语音识别和发音模型来获取每个单词和音素的时序信息。
-
嘴形设计:为确保角色的嘴形动画真实可信,Duolingo 设计了 20 多种嘴形,结合角色的个性和 Duolingo 的美学。
-
动画集成:完成动画后,通过 Rive 的状态机将动画与音频同步,确保角色能够实时响应用户的操作,例如在点击单词时角色能够发声并动画化。
-
未来展望:Duolingo 将继续探索新技术,以克服技术挑战,进一步提升学习体验,并在未来的项目中应用这些经验。
Duolingo 如何为角色添加动画
在为每个角色开发了独特的声音后,我们开始思考如何让它们更有活力——不仅仅是现有的闲置行为动画。我们希望确保我们的角色能成为学习者生动有趣的学习伙伴!
首先:动画化这么多的口型动作是一项巨大的工程!
我们教授超过40种语言,涵盖100多个课程,每个课程包含数千个句子和课时,所以要为我们十个世界角色的每个口型动作手动画是不可能的。我们需要一种可扩展的方法来处理每个角色的各种口型,同时保证文件大小足够小,以便在Android、iOS和Web平台上运行。此外,我们还希望确保动画质量不受影响!
我们发现,游戏引擎的替代方案可能是答案——一种能帮助我们用有限的资源生成几乎无限组合的工具。这就是我们了解到Rive的原因!
什么是 Rive?
Rive 是一种基于网络的工具,用于制作实时互动动画和设计,类似于游戏引擎。它解决了我们许多问题:文件大小小巧,与Duolingo的应用架构无缝结合,从动画师到工程师的交接过程也很顺利。
但最吸引我们的是Rive的状态机:这是一个可视化的逻辑系统,用于连接动画(即“状态”)。它让我们能够通过编程控制调用的动画状态、调用方式以及如何过渡和融合。状态机的强大系统让这个项目能够在大规模上实现。我们知道Rive是实现口型同步动画的理想工具!
语音技术的魔力
为了制作口型动作,我们需要对语音内容有详细的了解。当我们为文本到语音生成声音时,我们使用的解决方案没有提供发音和时间信息,但我们有一个为语言学习设置的丰富语音技术生态系统。为了生成精准的动画,我们会生成语音,将其通过我们的内部语音识别和发音模型,获取每个单词和音素(语音单位)的时间信息。每个声音都会映射到一个视觉表示或唇形,这是我们基于语言学特征设计的一套系统。
有了这些功能,我们创建了一个系统来生成课程内容所需的所有唇形时间数据。当然,我们还需要确保这些数据的准确性,并将其传递给数百万用户。我们不仅开发了生成内容的工具和流程,还在必要时进行审核和修正。
设计口型世界
在开始动画制作前,我们需要确保准确地表示与特定声音对应的嘴形。
我们需要设计每一个嘴形,保持Duolingo的美学风格。此外,每个角色还需要一套独特的唇形,符合其个性特征。设计过程中最关键的一步是确保唇形在动画中看起来真实可信。
一旦设计指南确定,我们就可以开始动画制作。我们为每个角色在课程中的常规姿势创建了动画状态,也为角色的嘴部设计了单独的状态。所有动画状态设置完毕后,最后一步就是将这些动画导入Rive的状态机,并与之前标注的嘴部输入结合起来。
状态机设置完成后,我们将其导出为一个运行时文件,然后交给工程师进行应用程序的集成!
集成过程
当需要展示一个挑战时,我们会获取音频和时间信息,并利用这些时间信息同步触发动画状态机。这将数据传输量降到最低——远低于传输一个小视频——并让我们能够实时响应用户的操作。当你点击一个单词时,角色会说出并动画该单词;如果你在它说完之前完成练习,角色会及时停止说话。我们还可以展示闲置行为,如点头、眨眼和眉毛移动。最后,根据挑战的结果——你是答对还是答错——我们可以进入一个最终状态,展示角色的反应!
Duolingo 动画和技术的未来
Duolingo 一直在测试各种功能,这些嘴部运动也不例外。这个项目是一次有趣的实验,旨在使学习体验更加有趣,也是一次使用新软件和技术的机会。看到我们如何克服技术难题,并继续打造或改进其他有趣的功能,真是令人兴奋!
请查看我们在2023年Duocon上的演讲,了解更多关于我们动画制作的方法!