自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

科大訊飛語音識(shí)別集成

移動(dòng)開發(fā)
集成科大訊飛的語音識(shí)別功能 科大訊飛的優(yōu)勢(shì)是識(shí)別精度高

源碼簡(jiǎn)介:集成科大訊飛的語音識(shí)別功能 科大訊飛的優(yōu)勢(shì)是識(shí)別精度高

源碼效果:

源碼片段:

  1. package com.example.testmodel; 
  2.   
  3. import java.util.HashMap; 
  4. import java.util.LinkedHashMap; 
  5.   
  6. import org.json.JSONException; 
  7. import org.json.JSONObject; 
  8.   
  9. import android.app.Activity; 
  10. import android.content.SharedPreferences; 
  11. import android.os.Bundle; 
  12. import android.os.Environment; 
  13. import android.view.Menu; 
  14. import android.view.MenuItem; 
  15. import android.view.View; 
  16. import android.widget.EditText; 
  17. import android.widget.TextView; 
  18. import android.widget.Toast; 
  19.   
  20. import com.iflytek.cloud.ErrorCode; 
  21. import com.iflytek.cloud.InitListener; 
  22. import com.iflytek.cloud.RecognizerListener; 
  23. import com.iflytek.cloud.RecognizerResult; 
  24. import com.iflytek.cloud.SpeechConstant; 
  25. import com.iflytek.cloud.SpeechError; 
  26. import com.iflytek.cloud.SpeechRecognizer; 
  27. import com.iflytek.cloud.ui.RecognizerDialog; 
  28. import com.iflytek.cloud.ui.RecognizerDialogListener; 
  29.   
  30. public class MainActivity extends Activity { 
  31.   
  32.     private TextView mResult; 
  33.     private SpeechRecognizer mIat; 
  34.     // 語音聽寫UI 
  35.     private RecognizerDialog mIatDialog; 
  36.     // 用HashMap存儲(chǔ)聽寫結(jié)果 
  37.     private HashMap<string, string=""> mIatResults = new LinkedHashMap<string, string="">(); 
  38.   
  39.     private EditText mResultText; 
  40.     private Toast mToast; 
  41.     private SharedPreferences mSharedPreferences; 
  42.     // 引擎類型 
  43.     private String mEngineType = SpeechConstant.TYPE_CLOUD; 
  44.     // 語記安裝助手類 
  45.     ApkInstaller mInstaller; 
  46.     private int ret = 0
  47.   
  48.     @Override 
  49.     protected void onCreate(Bundle savedInstanceState) { 
  50.         super.onCreate(savedInstanceState); 
  51.         setContentView(R.layout.activity_main); 
  52.         mEngineType = SpeechConstant.TYPE_CLOUD; 
  53.         mResult = (TextView) findViewById(R.id.textView1); 
  54.         mIat = SpeechRecognizer.createRecognizer(MainActivity.this, mInitListener); 
  55.   
  56.         // 初始化聽寫Dialog,如果只使用有UI聽寫功能,無需創(chuàng)建SpeechRecognizer 
  57.         // 使用UI聽寫功能,請(qǐng)根據(jù)sdk文件目錄下的notice.txt,放置布局文件和圖片資源 
  58.         mIatDialog = new RecognizerDialog(MainActivity.this, mInitListener); 
  59.   
  60.         mSharedPreferences = getSharedPreferences("YOU"
  61.                 Activity.MODE_PRIVATE); 
  62.         mToast = Toast.makeText(this"", Toast.LENGTH_SHORT); 
  63.         mInstaller = new ApkInstaller(MainActivity.this); 
  64.   
  65.     } 
  66.   
  67.     public void startRec(View v) { 
  68.         mResult.setText(null);// 清空顯示內(nèi)容 
  69.         mIatResults.clear(); 
  70.         // 設(shè)置參數(shù) 
  71.         setParam(); 
  72.         boolean isShowDialog = mSharedPreferences.getBoolean( 
  73.                 "iat_show"true); 
  74.         if (isShowDialog) { 
  75.             // 顯示聽寫對(duì)話框 
  76.             mIatDialog.setListener(mRecognizerDialogListener); 
  77.             mIatDialog.show(); 
  78.             showTip("請(qǐng)開始說話…"); 
  79.         } else { 
  80.             // 不顯示聽寫對(duì)話框 
  81.             ret = mIat.startListening(mRecognizerListener); 
  82.             if (ret != ErrorCode.SUCCESS) { 
  83.                 showTip("聽寫失敗,錯(cuò)誤碼:" + ret); 
  84.             } else { 
  85.                 showTip("請(qǐng)開始說話…"); 
  86.             } 
  87.         } 
  88.     } 
  89.       
  90.     /** 
  91.      * 聽寫監(jiān)聽器。 
  92.      */ 
  93.     private RecognizerListener mRecognizerListener = new RecognizerListener() { 
  94.   
  95.         @Override 
  96.         public void onBeginOfSpeech() { 
  97.             // 此回調(diào)表示:sdk內(nèi)部錄音機(jī)已經(jīng)準(zhǔn)備好了,用戶可以開始語音輸入 
  98.             showTip("開始說話"); 
  99.         } 
  100.   
  101.         @Override 
  102.         public void onError(SpeechError error) { 
  103.             // Tips: 
  104.             // 錯(cuò)誤碼:10118(您沒有說話),可能是錄音機(jī)權(quán)限被禁,需要提示用戶打開應(yīng)用的錄音權(quán)限。 
  105.             // 如果使用本地功能(語記)需要提示用戶開啟語記的錄音權(quán)限。 
  106.             showTip(error.getPlainDescription(true)); 
  107.         } 
  108.   
  109.         @Override 
  110.         public void onEndOfSpeech() { 
  111.             // 此回調(diào)表示:檢測(cè)到了語音的尾端點(diǎn),已經(jīng)進(jìn)入識(shí)別過程,不再接受語音輸入 
  112.             showTip("結(jié)束說話"); 
  113.         } 
  114.   
  115.         @Override 
  116.         public void onResult(RecognizerResult results, boolean isLast) { 
  117. //          Log.d(TAG, results.getResultString()); 
  118.             printResult(results); 
  119.   
  120.             if (isLast) { 
  121.                 // TODO ***的結(jié)果 
  122.             } 
  123.         } 
  124.   
  125.         @Override 
  126.         public void onVolumeChanged(int volume, byte[] data) { 
  127.             showTip("當(dāng)前正在說話,音量大小:" + volume); 
  128. //          Log.d(TAG, "返回音頻數(shù)據(jù):"+data.length); 
  129.         } 
  130.   
  131.         @Override 
  132.         public void onEvent(int eventType, int arg1, int arg2, Bundle obj) { 
  133.             // 以下代碼用于獲取與云端的會(huì)話id,當(dāng)業(yè)務(wù)出錯(cuò)時(shí)將會(huì)話id提供給技術(shù)支持人員,可用于查詢會(huì)話日志,定位出錯(cuò)原因 
  134.             // 若使用本地能力,會(huì)話id為null 
  135.             //  if (SpeechEvent.EVENT_SESSION_ID == eventType) { 
  136.             //      String sid = obj.getString(SpeechEvent.KEY_EVENT_SESSION_ID); 
  137.             //      Log.d(TAG, "session id =" + sid); 
  138.             //  } 
  139.         } 
  140.     }; 
  141.       
  142.     /** 
  143.      * 聽寫UI監(jiān)聽器 
  144.      */ 
  145.     private RecognizerDialogListener mRecognizerDialogListener = new RecognizerDialogListener() { 
  146.         public void onResult(RecognizerResult results, boolean isLast) { 
  147.             printResult(results); 
  148.         } 
  149.   
  150.         /** 
  151.          * 識(shí)別回調(diào)錯(cuò)誤. 
  152.          */ 
  153.         public void onError(SpeechError error) { 
  154.             showTip(error.getPlainDescription(true)); 
  155.         } 
  156.   
  157.     }; 
  158.       
  159.     private void showTip(final String str) { 
  160.         mToast.setText(str); 
  161.         mToast.show(); 
  162.     } 
  163.       
  164.     private void printResult(RecognizerResult results) { 
  165.         String text = JsonParser.parseIatResult(results.getResultString()); 
  166.   
  167.         String sn = null
  168.         // 讀取json結(jié)果中的sn字段 
  169.         try { 
  170.             JSONObject resultJson = new JSONObject(results.getResultString()); 
  171.             sn = resultJson.optString("sn"); 
  172.         } catch (JSONException e) { 
  173.             e.printStackTrace(); 
  174.         } 
  175.   
  176.         mIatResults.put(sn, text); 
  177.   
  178.         StringBuffer resultBuffer = new StringBuffer(); 
  179.         for (String key : mIatResults.keySet()) { 
  180.             resultBuffer.append(mIatResults.get(key)); 
  181.         } 
  182.   
  183.         mResult.setText(resultBuffer.toString()); 
  184. //      mResult.setSelection(mResultText.length()); 
  185.     } 
  186.       
  187.     /** 
  188.      * 初始化監(jiān)聽器。 
  189.      */ 
  190.     private InitListener mInitListener = new InitListener() { 
  191.   
  192.         @Override 
  193.         public void onInit(int code) { 
  194. //          Log.d(TAG, "SpeechRecognizer init() code = " + code); 
  195.             if (code != ErrorCode.SUCCESS) { 
  196. //              showTip("初始化失敗,錯(cuò)誤碼:" + code); 
  197.             } 
  198.         } 
  199.     }; 
  200.   
  201.     /** 
  202.      * 參數(shù)設(shè)置 
  203.      *  
  204.      * @param param 
  205.      * @return 
  206.      */ 
  207.     public void setParam() { 
  208.         // 清空參數(shù) 
  209.         mIat.setParameter(SpeechConstant.PARAMS, null); 
  210.   
  211.         // 設(shè)置聽寫引擎 
  212.         mIat.setParameter(SpeechConstant.ENGINE_TYPE, mEngineType); 
  213.         // 設(shè)置返回結(jié)果格式 
  214.         mIat.setParameter(SpeechConstant.RESULT_TYPE, "json"); 
  215.   
  216.         String lag = mSharedPreferences.getString("iat_language_preference"
  217.                 "mandarin"); 
  218.         if (lag.equals("en_us")) { 
  219.             // 設(shè)置語言 
  220.             mIat.setParameter(SpeechConstant.LANGUAGE, "en_us"); 
  221.         } else { 
  222.             // 設(shè)置語言 
  223.             mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn"); 
  224.             // 設(shè)置語言區(qū)域 
  225.             mIat.setParameter(SpeechConstant.ACCENT, lag); 
  226.         } 
  227.   
  228.         // 設(shè)置語音前端點(diǎn):靜音超時(shí)時(shí)間,即用戶多長(zhǎng)時(shí)間不說話則當(dāng)做超時(shí)處理 
  229.         mIat.setParameter(SpeechConstant.VAD_BOS, 
  230.                 mSharedPreferences.getString("iat_vadbos_preference""4000")); 
  231.   
  232.         // 設(shè)置語音后端點(diǎn):后端點(diǎn)靜音檢測(cè)時(shí)間,即用戶停止說話多長(zhǎng)時(shí)間內(nèi)即認(rèn)為不再輸入, 自動(dòng)停止錄音 
  233.         mIat.setParameter(SpeechConstant.VAD_EOS, 
  234.                 mSharedPreferences.getString("iat_vadeos_preference""1000")); 
  235.   
  236.         // 設(shè)置標(biāo)點(diǎn)符號(hào),設(shè)置為"0"返回結(jié)果無標(biāo)點(diǎn),設(shè)置為"1"返回結(jié)果有標(biāo)點(diǎn) 
  237.         mIat.setParameter(SpeechConstant.ASR_PTT, 
  238.                 mSharedPreferences.getString("iat_punc_preference""1")); 
  239.   
  240.         // 設(shè)置音頻保存路徑,保存音頻格式支持pcm、wav,設(shè)置路徑為sd卡請(qǐng)注意WRITE_EXTERNAL_STORAGE權(quán)限 
  241.         // 注:AUDIO_FORMAT參數(shù)語記需要更新版本才能生效 
  242.         mIat.setParameter(SpeechConstant.AUDIO_FORMAT, "wav"); 
  243.         mIat.setParameter(SpeechConstant.ASR_AUDIO_PATH, 
  244.                 Environment.getExternalStorageDirectory() + "/msc/iat.wav"); 
  245.   
  246.         // 設(shè)置聽寫結(jié)果是否結(jié)果動(dòng)態(tài)修正,為“1”則在聽寫過程中動(dòng)態(tài)遞增地返回結(jié)果,否則只在聽寫結(jié)束之后返回最終結(jié)果 
  247.         // 注:該參數(shù)暫時(shí)只對(duì)在線聽寫有效 
  248.         mIat.setParameter(SpeechConstant.ASR_DWA, 
  249.                 mSharedPreferences.getString("iat_dwa_preference""0")); 
  250.     } 
  251.   
  252.     @Override 
  253.     public boolean onCreateOptionsMenu(Menu menu) { 
  254.         // Inflate the menu; this adds items to the action bar if it is present. 
  255.         getMenuInflater().inflate(R.menu.main, menu); 
  256.         return true
  257.     } 
  258.   
  259.     @Override 
  260.     public boolean onOptionsItemSelected(MenuItem item) { 
  261.         // Handle action bar item clicks here. The action bar will 
  262.         // automatically handle clicks on the Home/Up button, so long 
  263.         // as you specify a parent activity in AndroidManifest.xml. 
  264.         int id = item.getItemId(); 
  265.         if (id == R.id.action_settings) { 
  266.             return true
  267.         } 
  268.         return super.onOptionsItemSelected(item); 
  269.     } 
  270. </string,></string,> 

下載地址:http://down.51cto.com/data/2109303

責(zé)任編輯:倪明 來源: devstore
相關(guān)推薦

2015-11-24 17:43:19

科大訊飛語音廣告

2012-04-06 09:27:56

語音siri識(shí)別

2017-02-17 12:30:40

外設(shè)

2012-02-07 16:20:55

訊飛語音

2015-11-20 09:58:46

浪潮科大訊飛

2011-07-21 14:03:59

科大訊飛

2012-06-18 15:31:04

科大訊飛

2012-07-06 10:35:02

科大訊飛江濤語音

2014-11-25 11:25:56

浪潮

2015-03-04 18:43:31

2015-04-02 15:21:49

科大訊飛

2013-09-25 14:29:06

科大訊飛消費(fèi)市場(chǎng)

2012-03-23 15:37:39

2017-03-19 16:21:10

人工智能語音識(shí)別

2021-02-01 10:55:52

人工智能科大訊飛

2012-06-15 10:02:48

訊飛語點(diǎn)

2015-07-27 12:51:36

戴爾云計(jì)算anycloud

2018-05-04 11:59:55

浪潮,IPF,AI,人
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)