第一步:
註冊訊飛語音,這個無需多說,
第二步:
註冊成功後登陸:點開右上角的控制檯:就能夠看到本身的項目了:android
第三步:
在控制檯的左邊有能夠看到咱們的應用,若是沒有就新建一個:git
第四步:根據要求填寫相關內容 並提交便可:json
第五步:記住Appid,並開通相關服務網絡
第六步,開通相關服務
我這裏僅僅只開通了第一個語音聽寫
而後就會跳轉到下面的頁面app
第七步:下載sdk:ide
這裏必定要選擇本身的項目,由於咱們下載的sdk是和前面的Appid相關的,gradle
到如今,咱們的準備工做完成了:下面就是在項目中配置相關sdk,ui
第一步:使用訊飛自帶UI接口,直接將assets下文件拷貝到項目中的相應位置;this
第二步,開始實現訊飛語音識別
首先,權限編碼
<!--鏈接網絡權限,用於執行雲端語音能力 --> <uses-permission android:name="android.permission.INTERNET"/> <!--獲取手機錄音機使用權限,聽寫、識別、語義理解須要用到此權限 --> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <!--讀取網絡信息狀態 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <!--獲取當前wifi狀態 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <!--容許程序改變網絡鏈接狀態 --> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> <!--讀取手機信息權限 --> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <!--讀取聯繫人權限,上傳聯繫人須要用到此權限 --> <uses-permission android:name="android.permission.READ_CONTACTS"/>
其次,初始化:
// 初始化識別對象 SpeechUtility.createUtility(this, SpeechConstant.APPID + "=58c93888");
這裏的APPID就是前面的建立應用時的appid
最後,調用訊飛的語音識別並監聽返回值:
//1.建立RecognizerDialog對象 RecognizerDialog recognizerDialog = new RecognizerDialog(context, null); //2.設置accent、language等參數 recognizerDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");//語種,這裏能夠有zh_cn和en_us recognizerDialog.setParameter(SpeechConstant.ACCENT, "mandarin");//設置口音,這裏設置的是漢語普通話 具體支持口音請查看訊飛文檔, recognizerDialog.setParameter(SpeechConstant.TEXT_ENCODING, "utf-8");//設置編碼類型 //其餘設置請參考文檔http://www.xfyun.cn/doccenter/awd //3.設置訊飛識別語音後的回調監聽 recognizerDialog.setListener(new RecognizerDialogListener() { @Override public void onResult(RecognizerResult recognizerResult, boolean b) {//返回結果 if (!b) { Log.i("訊飛識別的結果", recognizerResult.getResultString()); } } @Override public void onError(SpeechError speechError) {//返回錯誤 Log.e("返回的錯誤碼", speechError.getErrorCode() + ""); } }); //顯示訊飛語音識別視圖 recognizerDialog.show();
語音識別的結果返回的是json各式,因此,若是須要獲得識別結果,須要解析json.。我這裏使用的是fastjson,須要在build.gradle配置:
compile 'com.alibaba:fastjson:1.2.8'
解析代碼:
JSONObject jsonObject = JSON.parseObject(resultString); JSONArray jsonArray = jsonObject.getJSONArray("ws"); StringBuffer stringBuffer = new StringBuffer(); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject1 = jsonArray.getJSONObject(i); JSONArray jsonArray1 = jsonObject1.getJSONArray("cw"); JSONObject jsonObject2 = jsonArray1.getJSONObject(0); String w = jsonObject2.getString("w"); stringBuffer.append(w); } Log.i("識別結果", stringBuffer.toString());
最後的結果:
ok:到目前爲止,訊飛的簡單語音識別基本上實現,須要注意的是,下載的sdk必定要和本身的Appid匹配,否則就會出現下面的狀況:
用戶校驗失敗:
因此, 把別人下好的sdk複製到本身的項目中時,這中狀況是沒法使的。
接入訊飛語音識別的幾個要點:
Appid必定要和本身下載的sdk相匹配
SpeechUtility.createUtility(this, SpeechConstant.APPID + "=58c93888");