Loading...

GenASL 基于生成性人工智能的美国手语虚拟形象 机器学习博客



GenASL:基于生成AI的美国手语虚拟形象

作者:Alak Eswaradass Suresh Poopandi 和 Rob Koch日期:2024年8月26日来源:AWS部落格

重要要点

GenASL利用生成AI技术将语音或文字转换为生动的美国手语ASL虚拟形象动画,从而促进沟通的包容性。方案依赖AWS的多种服务,包括Amazon Transcribe、Amazon SageMaker和Amazon Bedrock,实现无缝的ASL翻译。这一创新的解决方案将大幅提升视觉沟通的效率,打破传统沟通工具的限制。

在当今社会,有效的沟通对促进包容性和打破障碍至关重要。然而,对于依赖视觉交流方式的个体,如使用美国手语ASL的人来说,传统的沟通工具往往无法满足需求。GenASL正是为此而生。GenASL是一种基于生成人工智能AI的解决方案,能够将语音或文字转换为表情丰富的ASL虚拟形象动画,桥接口语和书面语言与手语之间的鸿沟。

随著基础模型FMs的崛起,以及我们所处的令人惊叹的生成AI世界,我们看到了构思和实现之前不可能的事物的机会。AWS使得各种规模的组织及不同技能水平的开发者都能够安全地构建和扩展生成AI应用。

在这篇文章中,我们将深入探讨GenASL的架构和实施细节,该方案使用AWS生成AI技术来创建人类般的ASL虚拟形象视频。

方案概述

GenASL解决方案由多个AWS服务协同工作,实现从语音或文字到ASL虚拟形象动画的无缝转换。用户可以将音频、视频或文本输入GenASL,该方案则生成一个解释所提供数据的ASL虚拟形象视频。此解决方案使用AWS的AI和机器学习AI/ML服务,包括Amazon Transcribe、Amazon SageMaker、Amazon Bedrock以及FMs。

以下图表显示了架构的高层概述。

工作流程包括以下步骤:

创建ASL虚拟形象:一个Amazon Elastic Compute CloudAmazon EC2实例启动一个批处理过程,通过RTMPose一种基于MMPose的实时多人姿势估计工具包从超过8000种姿势的视频数据集中创建ASL虚拟形象。应用分发:AWS Amplify将包含HTML、JavaScript和CSS的GenASL网页应用分发到用户的移动设备。身份验证:Amazon Cognito身份池授予Amazon Simple Storage ServiceAmazon S3桶的临时访问权限。上传数据:用户使用AWS SDK通过网页应用将音频、视频或文本上传到S3桶中。调用后端服务:GenASL网页应用通过将S3对象键作为有效载荷发送到托管在Amazon API Gateway上的API来调用后端服务。状态机调度:API Gateway启动Amazon Step Functions状态机,协调AWS AI/ML服务Amazon Transcribe和Amazon Bedrock,并使用AWS Lambda功能存取NoSQL数据存储Amazon DynamoDB。生成视频链接:Step Functions工作流程生成ASL虚拟形象视频的预签名URL,对应于音频文件。返回视频:通过API Gateway将存储在Amazon S3中的视频文件的预签名URL异步地发送回用户的浏览器。用户的移动设备使用预签名URL播放视频文件。

如以下图所示,语音或文本将被转换为ASL字符,然后生成ASL视频。

接下来,我们来详细探讨每个组件的实施细节。

批处理过程

ASL词汇视频数据集ASLLVD由多个同步视频组成,显示了来自1至6名母语ASL签署者的超过3300个ASL手语的不同角度签署。语言学注释包括字义标签、手势开始和结束时间码、双手的开始和结束手形标签,以及手势类型的形态学和发音分类。对于复合手势,数据集还包括每个语素的注释。为了促进基于计算机视觉的手语识别,数据集还包括手势变体的数字ID标签、无压缩原始格式的视频序列,以及相机标定序列。

我们将输入数据集存储在一个S3桶中视频数据集,并使用RTMPose和一个基于PyTorch的姿势估计开源工具包来生成ASL虚拟形象视频。MMPose是OpenMMLab项目的一部分,包含了丰富的2D多人体姿势估计、2D手部姿势估计、2D面部标记检测和133个关键点全身姿势估计的算法。

EC2实例启动批处理过程,将为每个ASL字义生成的ASL虚拟形象视频存储在另一个S3桶ASL虚拟形象中,并将ASL字义及其对应的ASL虚拟形象视频的S3键存储在DynamoDB表中。

后端

后端处理分为三个步骤:将输入音频处理为英语文本、将英语文本翻译为ASL字义、以及从ASL字义生成ASL虚拟形象视频。这一API层由API Gateway进行前端控制,使得用户能进行身份验证、监控及节流API请求。因API Gateway的超时限制为29秒,本解决方案采用异步方式并使用轮询。每当API接收到生成手势视频的请求时,它会调用一个Step Functions工作流程,然后返回Step Functions运行时URL给前端应用。Step Functions工作流程包括三个步骤:

语音转文本:使用Amazon Transcribe,这是一种自动语音转文字的AI服务,利用深度学习进行语音识别。Amazon Transcribe是一项全管理并持续训练的服务,设计用来处理各种语音和声学特征,包括音量、音调和说话速度的变化。文本转ASL字义:使用Amazon Bedrock,该服务用于构建和扩展基于FMs的生成AI应用。Amazon Bedrock是一项全管理服务,提供来自AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI和Amazon等领先AI公司的高效FMs,通过单一API提供广泛的能力。我们在AWS Bedrock上使用了Anthropic Claude v3 Sonnet来创建ASL字义。生成ASL视频:根据翻译层中创建的ASL字义,我们查找DynamoDB表中对应的ASL手势。如果GenASL数据库中不存在该字义,则使用逐字拼写每个字母。Lookup ASL Avatar Lambda函数将视频串接在一起,生成一个临时视频,将其上传到S3桶中,创建预签名URL,并通过轮询将预签名URL发送回前端。前端循环播放视频。

前端

前端应用是使用Amplify构建的,这是一个可以构建、开发和部署全栈应用的框架,包括移动和 应用。通过Amplify命令Add Auth,可以为前端Amplify应用添加身份验证,这会生成注册和登录页面,以及后端和Amazon Cognito身份池。在将音频文件上传到Amazon S3期间,前端会使用Amazon Cognito身份池提供的临时身份连接Amazon S3。

最佳实践

以下是创建ASL虚拟形象视频应用的最佳实践。

API设计

API Gateway支持最大29秒超时。此外,对于长时间运行的进程,不建议构建同步API。因此,我们建立了包含两个阶段的异步API,通过允许客户端轮询REST资源检查请求状态来实现。我们使用API Gateway和Step Functions实施了这种模式。在第一阶段,S3键与桶名称发送到API端点,将请求委派给Step Functions工作流程,并返回执行ARN的响应。在第二阶段,API根据提供的ARN检查工作流程运行的状态。如果ASL虚拟形象成功创建,则该API返回预签名URL。否则,它会发送RUNNING状态,前端将等待几秒钟,然后再次调用第二个API端点。这一步将重复进行,直到API返回预签名URL给呼叫者。

Step Functions支持与Amazon Bedrock的直接优化集成,因此我们不需要在中间放置Lambda函数来创建ASL字义。我们可以直接从Step Functions工作流程调用Amazon Bedrock API,以节省Lambda计算成本。

DevOps

从DevOps的角度来看,前端使用Amplify进行构建和部署,后端则使用AWS Serverless Application ModelAWS SAM来构建、打包和部署无服务器应用。我们使用Amazon CloudWatch构建了一个仪表板,以捕获指标,包括API调用次数生成的ASL虚拟形象视频数量、创建视频的平均响应时间和错误指标,以通过监测失败情况来提升用户体验,并适当警报DevOps团队。

提示工程

我们提供了一个提示,将英语文本转换为ASL字义,连同输入文本消息一起发送到Amazon Bedrock API以调用Anthropic Claude。我们使用少数示例提示技术以生成准确的ASL字义。

鲸鱼加速器官方版下载

相关代码示例可在附随的GitHub仓库中找到。

前置条件

在开始之前,请确保您已设置以下项目:

Docker:确保在您的计算机上安装并运行Docker。Docker是容器化应用开发和部署的必要条件。您可以在Docker官方网站下载并安装Docker。AWS SAM CLI:安装AWS SAM CLI。该工具对于构建和部署无服务器应用至关重要。详细说明请参考安装AWS SAM CLI。Amplify CLI:安装Amplify CLI。Amplify CLI是一个强大的工具链,用于简化无服务器的Web和移动开发。详细说明请参考设置Amplify CLI。基于Windows的EC2实例:确保您可以访问一个基于Windows的EC2实例来运行批处理过程。该实例将用于视频处理和数据准备等多项任务。详细说明请参考启动实例。FFmpeg:GenASL解决方案的视频处理步骤需要正确安装FFmpeg,这是此解决方案用于分割和合并视频文件的多媒体框架。详细说明请参考下载FFmpeg。

设置解决方案

本节提供使用AWS服务部署ASL虚拟形象生成器的步骤。我们将概述克隆仓库、处理数据、部署后端和设置前端的步骤。

使用以下命令克隆GitHub仓库:

bash git clone https//githubcom/awssamples/genaiaslavatargeneratorgit

按照dataprep文件夹中的说明初始化数据库:

修改genaiaslavatargenerator/dataprep/configini,填入您特定环境的信息:

ini [DEFAULT] s3bucket= ltyour S3 bucketgt s3prefix= ltfiles will be generated in this prefix within your S3 bucketgt tablename=ltdynamodb table namegt region=ltyour preferred AWS regiongt

通过安装所需的Python包来设置您的环境:

bash cd genaiaslavatargenerator/dataprep chmod x envsetupcmd /envsetupcmd

为每次处理运行准备手势视频注释文件:

bash python prepmetadatapy

下载手势视频,将其分割并存储在Amazon S3中:

bash python createsignvideospy

生成虚拟形象视频:

bash python createposevideospy

使用以下命令部署后端应用:

bash cd genaiaslavatargenerator/backend sam deploy guided

设置前端:

初始化您的Amplify环境:

bash amplify init

修改前端配置以指向后端API:

打开frontend/amplify/backend/function/Audio2Sign/indexpy。修改stateMachineArn变量,使其包含从后端部署生成的状态机ARN。

为Amplify项目添加托管:

GenASL 基于生成性人工智能的美国手语虚拟形象 机器学习博客

bash amplify add hosting

在提示中选择Amazon CloudFront和S3,并选择用于托管GenASL应用的桶。

通过运行以下命令安装相关包:

bash npm install force

部署Amplify项目:

bash amplify publish

运行解决方案

在使用amplify publish命令部署Amplify项目后,将返回一个Amazon CloudFront URL。您可以使用此URL访问GenASL演示应用。打开应用后,您可以注册一个新用户并测试ASL虚拟形象生成的

鲸鱼加速器官网,致力于实现全球连线,只需一键轻松提升您的网络体验。无论身处何地,畅享高速、稳定的网络连接,为您提供无忧的上网体验。