如果有一天,周遭的世界突然變得很安靜,動聽美妙的音樂,在你看來只是沉寂;振奮人心的演講,對你而言只是默劇;大自然的千里鶯啼,於你來說也只是畫捲。你會不會感到害怕? 而有這麼一群人,每天都在與這世界無聲交流著,他們就是聽力障礙人士。據2006年第二次全國殘疾人抽樣調查顯示,我國的聽力殘疾人約2780萬 ...
如果有一天,周遭的世界突然變得很安靜,動聽美妙的音樂,在你看來只是沉寂;振奮人心的演講,對你而言只是默劇;大自然的千里鶯啼,於你來說也只是畫捲。你會不會感到害怕?
而有這麼一群人,每天都在與這世界無聲交流著,他們就是聽力障礙人士。據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 最新技術資訊~