如果有一天,周遭的世界突然变得很安静,动听美妙的音乐,在你看来只是沉寂;振奋人心的演讲,对你而言只是默剧;大自然的千里莺啼,于你来说也只是画卷。你会不会感到害怕?
而有这么一群人,每天都在与这世界无声交流着,他们就是听力障碍人士。据2006年第二次全国残疾人抽样调查显示,我国的听力残疾人约2780万,占全国残疾人的30%以上,而且数据每年都在增加。受限于发病原因及家庭情况,能够使用助听器、人工耳蜗的听障人士占比较少,其他人不仅面临着生活中的种种不便,也难以感受到世界的精彩纷呈,所以手语成了他们与人们的主要沟通桥梁。
但是手语看不懂、专业知识不够、翻译技巧不够、体态不够生动、手语翻译在翻译的过程中有存在帮助聋人回答问题的现象……这些暴露的问题都极大的影响了听障人士在翻译服务中的用户体验。据残联统计,我国专业的手语翻译不足1万人,难以满足听障人士参与社会生活时的沟通需求。这就需要一些App能够添加将文本翻译成手语的能力,在手语翻译有限的情况下,满足听障人士的基本生活和学习的需要。
每年9月的第四个星期日是国际聋人日,为了关爱听障人士,华为手语服务(SignPal Kit)提供手语生成能力,将文本实时翻译为流畅、自然且符合听障人士表达习惯的手语动作数据,能够轻松构建信息无障碍创新应用,构筑无缝交流的世界。可用于家庭日常生活交流、教育学习、外出购物、媒体播报等场景。例如在教学场景中,可帮助听障儿童学习阅读,实现手语教学。
基于深度神经网络技术,实时将输入文本翻译为时序稳定、连贯且符合听障人士表达习惯的手语动作数据。
手语生成不仅包括手部动作和身体姿态,还支持面部表情,包括开心、愤怒、伤心、疑惑等基本表情信息,以及皱眉、鼓腮等多种非手控表情。
手语生成支持符合听障人士表达习惯的口动。
手语服务能将输入文本转化为手语动作数据,可用于家庭日常生活交流、教育学习、外出购物、媒体播报等场景。运用手语动作及面部表情,手语服务精准流畅地传递讲师的授课内容,让处在无声世界的特教学院听障学生,也能实现无障碍网课学习。
自然流畅:手语动作流畅、自然,符合手语表达习惯。
词汇覆盖广:按照中国国家通用标准有1万多个词汇,满足多场景应用。
手语表达丰富:手语动作包括手部动作、身体姿态、面部表情和口型驱动。
在开始App开发工作之前,您需要完成必要的开发准备工作,确保您的工程中已经配置AppGallery Connect、集成HMS Core SDK、配置混淆脚本以及添加权限。
1、开通鉴权。需要使用“agconnect-services.json”里的api_key值,在应用初始化时通过AccessToken或者api_key来设置应用鉴权信息,AccessToken的优先级较高。
通过setAccessToken()方法设置Access Token,在应用初始化时设置即可,如果Token过期了,需要更换Token重新设置。
SignPalApplication.getInstance().setAccessToken("your
AccessToken");
通过setApiKey()方法设置api_key,在应用启动时初始化设置一次即可,无需多次设置。
SignPalApplication.getInstance().setApiKey("your api_key");
当您在AppGallery Connect上注册您的应用时,系统会给您的应用分配api_key,可参见添加当前应用的AppGallery Connect配置文件。
2、创建手语生成实例。可以通过手语生成自定义配置类GeneratorSetting创建手语生成SignGenerator实例。
// 1.创建新的配置项,不是必须设置,不设置则使用默认值
GeneratorSetting
setting
= new GeneratorSetting()
.setLanguage(GeneratorConstants.CN_CSL)
// 2.配置方法
// a.初始化时设置
SignGenerator
signGenerator
= new SignGenerator(
setting
);
// b.过程中更新
signGenerator
.updateSetting(
setting
);
3、给SignGenerator实例设置手语生成回调GeneratorCallback,用于处理手语生成结果。
signGenerator
.setCallback(new GeneratorCallback() {
@Override
public void onEvent(String taskId, int eventId, Bundle bundle) {
switch (eventId){
// 以下回调事件类型是在使用手语生成过程中需要关注的
case GeneratorConstants.EVENT_START:
// 任务开始回调
break;
case GeneratorConstants.EVENT_DOWNLOADING:
// 任务下载中
break;
case GeneratorConstants.EVENT_STOP:
// 任务停止回调
boolean isInterrupted = bundle.getBoolean(GeneratorConstants.EVENT_STOP_INTERRUPTED);
break;
default:
break;
}
}
@Override
public void onSignDataAvailable(String taskId, SignMotionFragment signFragment, Pair<Integer, Integer> range, Bundle bundle) {
// 获取手语动作数据
ArrayList<Map<String,float[]>> motionDataList= signFragment.getSignMotionDataMap();
// 获取表情数据
int[] faceArr = signFragment.getFaceMotion();
// 获取口型BlendShape驱动数据,如果不设置开启则为空数组
float[] faceBlendShape = signFragment.getFaceBlendShapeArray();
// 手语动作表情绘制,需要您自行实现
}
@Override
public void onError(String taskId, SignPalError err){
// 手语生成失败处理
}
@Override
public void onWarning(String taskId,SignPalWarning warning){
// 告警处理(不影响业务逻辑)
}
});
4、调用text2SignMotion()方法进行手语生成,text取值为字符串类型。
String
id
=
signGenerator
.text2SignMotion(
text
, GeneratorConstants.QUEUE_MODE);
5、停止当前正在执行的手语生成任务,并清空队列中的所有任务与缓存。
signGenerator
.stop();
6、合成结束后,释放资源。
if (
signGenerator
!= null) {
signGenerator
.shutdown();
}
了解更多详情>>
访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub、Gitee
关注我们,第一时间了解 HMS Core 最新技术资讯~
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除
require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame
我有一个使用PDFKit呈现网页的pdf版本的Rails应用程序。我使用Thin作为开发服务器。问题是当我处于开发模式时。当我使用“bundleexecrailss”启动我的服务器并尝试呈现任何PDF时,整个过程会陷入僵局,因为当您呈现PDF时,会向服务器请求一些额外的资源,如图像和css,看起来只有一个线程.如何配置Rails开发服务器以运行多个工作线程?非常感谢。 最佳答案 我找到的最简单的解决方案是unicorn.geminstallunicorn创建一个unicorn.conf:worker_processes3然后使用它:
关于如何使用git设置类似Dropbox的服务,您有什么建议吗?您认为git是解决此问题的合适工具吗?我在考虑使用git+rush解决方案,你觉得怎么样? 最佳答案 检查这个开源项目:https://github.com/hbons/SparkleShare来自项目的自述文件:Howdoesitwork?SparkleSharecreatesaspecialfolderonyourcomputer.Youcanaddremotelyhostedfolders(or"projects")tothisfolder.Theseprojec
我将以下代码放在一起用于一个简单的RubyTFTP服务器。它工作正常,因为它监听端口69并且我的TFTP客户端连接到它,我能够将数据包写入test.txt,但我不只是写入数据包,我希望能够从我的客户端通过TFTP传输文件到/temp目录。预先感谢您的帮助!require'socket.so'classTFTPServerdefinitialize(port)@port=portenddefstart@socket=UDPSocket.new@socket.bind('',@port)whiletruepacket=@socket.recvfrom(1024)putspacketFile