2017-04-24 48 views
-1

我想建立一個團結的遊戲,有阿拉伯語語音識別在Android設備上使用。我被困在語音識別工具中。哪一個更適合統一?我可以直接使用Google API嗎?如果是,我可以控制數據嗎?統一遊戲引擎,獅身人面像和谷歌語音API在Android上

或獅身人面像更適合Android設備上的遊戲?我已閱讀關於獅身人面像,但阿拉伯語的聲學模型不可用,但它。

我嘗試過使用MATLAB,但使用MATLAB編碼器在移動設備上構建它並花費我很多,並且它沒有全部所需的庫。

對此有幫助嗎?

回答

0

說到語音和Android,Google平臺是最好的方法。問題在於它需要致電該平臺。有一個我沒有試過的離線版本:Offline Speech Recognition In Android (JellyBean) 對於Google平臺,在Asset Store中有20美元的廉價插件。

主要問題,它們不提供連續檢測,您必須觸發錄製並停止發送。也許它適合你。 問題是,如果你得到很多用戶,每個月只有1小時免費,你最終支付服務器使用費。我認爲約爲0.015美元/分鐘。另一方面,它有80多種工作語言,包括當地口音。

CMUSphynx是另一種解決方案。開源和離線功能使其成爲一個不錯的選擇。我們不得不爲Unity提供我們自己的Android插件,但是我們得到的結果很差,導致我們放棄了使用(在問你之前,不,我們不能提供不幸的插件...... NDA)。而且,這些語言是有限的。

還有其他的解決方案,比如Nuance,更好,但也更昂貴(最有可能超出演示遊戲的範圍)。他們的API更加先進,並且經常用於專業場合,如自動重定向的語音電話。它也用於Vuzix設備。

考慮到你會嘗試谷歌語音,是的,你可以控制數據。基本上,您錄製一個音頻文件,將其發送到服務器,並且服務器以包含成功概率識別單詞列表的json對象進行回覆。

你會抓住第一個並解析內容。考慮到你想獲得一個移動動作,其結果將是:

爲pocketsphinx
// This is the result from GSP 
    string str = "Move player one unit"; 

    if(str.Length == 4) 
    { 
     // Parse 
     string action = str[0]; 
     string actor = str[1]; 
     string amountStr = str[2]; 
     string unit = str[3]; 
     // Convert 
     float amoutFl = ParseAmount(amountStr); 

     // Check 
     if(hashSetActor.Contains(actor) == false){ // error } 
     if(hashSetUnit.Contains(unit) == false){ // error } 
     if(actionDictionary.Contains(action)) 
     { 
      // Act 
      actionDictionary[action](actor, amountFl,unit); 
     } 
    }