找回密码
 立即注册
搜索

unity5 调用讯飞Android sdk(一)

[复制链接]

8

主题

9

帖子

59

积分

注册会员

Rank: 2

积分
59
50730 AR_小白 发表于 2016-1-25 11:53:58 楼主
本帖最后由 AR_小白 于 2016-1-30 11:47 编辑

    首先当然是去讯飞开放中心注册一下,成为讯飞的开发者,注册完成后 在首页单击右上角 我的语音云→创建新应用,在跳转页面填写应用名称、分类、功能介绍和平台后提交应用,提交完成后,单击立即开通服务选择语音听写功能  下载听写sdk。
    然后使用Eclips创建一个安卓程序,如图所示 QQ图片20160125115321.png
    然后单击下一步,
QQ图片.png
单击下一步,此处不要急着替换图标,等项目创建完成后,再在res文件夹下寻找替换(把自己制作的ic_launcher.png覆盖res/drawable-xxx目录中的ic_launcher.png)
QQ图片201601251.png
单击下一步
QQ611.png
单击下一步
Q.png
然后单击Finish创建完成。(取消Project想的build automatically项)
qmenu.png
2、导入讯飞SDK和unity5的classes.jar

    2.1  在文件夹C:\Intel\Editor\Data\PlaybackEngines\AndroidPlayer\Variations下两个子文件夹都包含一个classes.jar,(如果你在Unity buildSettings中的Scripting backend项选择的是Mono2X还是IL2CPP,选择对应的jar包就可以)
    2.2  在你下载的文件的相对路径\sample\SpeechDemo\libs下将armeabi文件夹和MSC.jar 复制到项目的Libs文件夹下,如图所示
Qlibs.png
3、修改Activity脚本
  1. import java.util.HashMap;
  2. import java.util.LinkedHashMap;

  3. import org.json.JSONException;
  4. import org.json.JSONObject;

  5. import android.content.Context;   
  6. import android.content.Intent;   
  7. import android.os.Bundle;   
  8. import android.util.Log;
  9. import android.widget.Toast;
  10.    





  11. import com.iflytek.cloud.InitListener;
  12. import com.iflytek.cloud.RecognizerListener;
  13. import com.iflytek.cloud.RecognizerResult;
  14. import com.iflytek.cloud.SpeechConstant;
  15. import com.iflytek.cloud.SpeechError;
  16. import com.iflytek.cloud.SpeechListener;
  17. import com.iflytek.cloud.SpeechRecognizer;
  18. import com.iflytek.cloud.SpeechUtility;
  19. import com.unity3d.player.UnityPlayer;
  20. import com.unity3d.player.UnityPlayerActivity;   
  21.    
  22. public class UnityTestActivity extends UnityPlayerActivity {   
  23.     /** Called when the activity is first created. */   
  24.    
  25.     Context mContext = null;  
  26.     public SpeechRecognizer mspeech;
  27.     static public String Content;
  28.     private Toast mToast;
  29.     private HashMap<String, String> mIatResults = new LinkedHashMap<String, String>();
  30.     @Override   
  31.     public void onCreate(Bundle savedInstanceState) {   
  32.         super.onCreate(savedInstanceState);   
  33.         mToast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
  34.         mContext = this;   
  35.         SpeechUtility.createUtility(this, "appid=51e8ae25");
  36.     }   
  37.    
  38.     public void StartActivity0()   
  39.     {   
  40.             Log.d("jlyan", "createRecognizer");
  41.             mspeech=SpeechRecognizer.createRecognizer(this, mInitListener);
  42.             //showTip("kaishi567890");
  43.         Toast.makeText(mContext, "createRecognizer", Toast.LENGTH_SHORT).show();
  44.     }   
  45.    
  46.     public void StartActivity1()
  47.     {   
  48.             showTip("kaishi");
  49.             Log.d("jlyan", "start recog");
  50.             mspeech.setParameter(SpeechConstant.DOMAIN, "iat");
  51.             mspeech.setParameter(SpeechConstant.SAMPLE_RATE, "16000");
  52.             mspeech.setParameter(SpeechConstant.LANGUAGE, "en_us");
  53.             mspeech.setParameter(SpeechConstant.ASR_PTT, "0");
  54.             mspeech.setParameter(SpeechConstant.VAD_EOS, "1800");
  55.             Startlisten();
  56.             //int ret=mspeech.startListening(recognizerListener);
  57.             //Toast.makeText(mContext, "startListening ret:"+ret, Toast.LENGTH_SHORT).show();
  58.     }   
  59.    
  60.    
  61.     public RecognizerListener recognizerListener = new RecognizerListener()
  62.     {

  63.                 @Override
  64.                 public void onBeginOfSpeech() {
  65.                         // TODO Auto-generated method stub
  66.                         showTip("kaishi听写");
  67.                 }

  68.                 @Override
  69.                 public void onEndOfSpeech() {
  70.                         // TODO Auto-generated method stub
  71.                         
  72.                 }

  73.                 @Override
  74.                 public void onError(SpeechError arg0) {
  75.                         // TODO Auto-generated method stub
  76.                         showTip("error:"+arg0.getErrorCode());
  77.                 }

  78.                 @Override
  79.                 public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
  80.                         // TODO Auto-generated method stub
  81.                         
  82.                 }

  83.                 @Override
  84.                 public void onResult(RecognizerResult results, boolean arg1) {
  85.                         // TODO Auto-generated method stub
  86.                         printResult(results);
  87.                 }

  88.                 @Override
  89.                 public void onVolumeChanged(int arg0, byte[] arg1) {
  90.                         // TODO Auto-generated method stub
  91.                         
  92.                 }

  93.                
  94.                
  95.             
  96.     };
  97.    
  98.     private InitListener mInitListener = new InitListener() {

  99.                 @Override
  100.                 public void onInit(int code) {
  101.                         if (code==0)
  102.                         {
  103.                                 Log.d("jlyan", "login");
  104.                                 //Toast.makeText(mContext, "login", Toast.LENGTH_SHORT).show();
  105.                         }
  106.                         else
  107.                         {
  108.                                 Log.d("jlyan", "login error"+code);
  109.                                 //Toast.makeText(mContext, "login error"+code, Toast.LENGTH_SHORT).show();
  110.                         }
  111.                 }
  112.         };
  113.    
  114.         private void printResult(RecognizerResult results) {
  115.                 String text = JsonParser.parseIatResult(results.getResultString());

  116.                 String sn = null;
  117.                 // 读取json结果中的sn字段
  118.                 try {
  119.                         JSONObject resultJson = new JSONObject(results.getResultString());
  120.                         sn = resultJson.optString("sn");
  121.                 } catch (JSONException e) {
  122.                         e.printStackTrace();
  123.                 }

  124.                 mIatResults.put(sn, text);

  125.                 StringBuffer resultBuffer = new StringBuffer();
  126.                 for (String key : mIatResults.keySet()) {
  127.                         resultBuffer.append(mIatResults.get(key));
  128.                 }
  129.                 Content = resultBuffer.toString();
  130.                 //Toast.makeText(mContext, Content, Toast.LENGTH_SHORT).show();
  131.                 UnityPlayer.UnitySendMessage("Cube","check",Content);
  132.         }
  133.         
  134.         public static String ReturnStr()
  135.         {
  136.                 return Content;
  137.         }
  138.         public void Startlisten()
  139.         {
  140.                 int ret=mspeech.startListening(recognizerListener);
  141.         }
  142.         public void Stoplisten()
  143.         {
  144.                 mspeech.cancel();
  145.                 showTip("停止听写");
  146.         }
  147.         public void Stop()
  148.         {
  149.                 //showTip("停止听写");
  150.         }
  151.         private void showTip(final String str) {
  152.                 mToast.setText(str);
  153.                 mToast.show();
  154.         }
  155. }
复制代码


使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则