如果有一天,周遭的世界突然變得很安靜,動聽美妙的音樂,在你看來只是沉寂;振奮人心的演講,對你而言只是默劇;大自然的千里鶯啼,于你來說也只是畫卷,你會不會感到害怕?
而有這么一群人,每天都在與這世界無聲交流著,他們就是聽力障礙人士,據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 one rror(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 最新技術資訊~
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/509446.html
標籤:Android
上一篇:本文相關主要記錄一下使用Hbuilder打包成蘋果IOS-App的詳細步驟。
下一篇:C C++指標面試題零碎整理
