1. 程式人生 > >語音識別---訊飛科大api實現

語音識別---訊飛科大api實現

科大語音sdk實現語音識別功能

在實現語音識別之前要做的事:

  • 註冊賬號
    如果你有賬號,那麼請自動跳過這一步
    訊飛科大開發者註冊—-訊飛科大開發者註冊官網

  • 匯入必要檔案
           1. 建立新應用(應用名稱必須和你的應用名稱一樣)然後會有一個sdk下載到本地,每一個應用都只有一個對應的sdk,所以如果建立新的應用還使用過去下載的sdk,那麼就會有10407錯誤;
           2.下載sdk,如圖:
    這裡寫圖片描述
           3.下載檔案如圖:
    這裡寫圖片描述
           4.匯入檔案如下圖:這裡寫圖片描述
           3.匯入GSON:

 compile 'com.google.code.gson:gson:2.2.4'

       4.配置相關許可權:

<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" /> <!--外儲存寫許可權,構建語法需要用到此許可權 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!--外儲存讀許可權,構建語法需要用到此許可權 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!--配置許可權,用來記錄應用配置資訊 --> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!--手機定位資訊,用來為語義等功能提供定位,提供更精準的服務--> <!--定位資訊是敏感資訊,可通過Setting.setLocationEnable(false)關閉定位請求 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  • 程式碼
    好了,該配置的檔案都已經配置好了,開始我們的程式碼編寫:
           第一步:初始化
SpeechUtility.createUtility(mcontext, SpeechConstant.APPID+appid);

此處的appid就是你建立應用時,官方給你返回的appid,如下圖:
這裡寫圖片描述

       第二步:基本程式碼編寫:
       我這是寫了一個方法:看起來很簡單的 我在這就累贅了:

public void discern(){

        SpeechUtility.createUtility(mcontext, SpeechConstant.APPID+APPID);
        iatDialog=new RecognizerDialog(mcontext,mInitListener);
        iatDialog.setParameter(SpeechConstant.LANGUAGE,"zh_cn");
        iatDialog.setParameter(SpeechConstant.ACCENT,"mandarin");
        iatDialog.setListener(new RecognizerDialogListener() {
            @Override
            public void onResult(RecognizerResult recognizerResult, boolean b) {
                if (!b){

                    result=parse_Voice(recognizerResult.getResultString());
                    Toast.makeText(mcontext,result,Toast.LENGTH_SHORT).show();
                }
            }
            @Override
            public void onError(SpeechError speechError) {
                speechError.getPlainDescription(true);
            }
        });
        iatDialog.show();
    }

       然後是解析類了:

 private String parse_Voice(String resultString) {
        Gson gson=new Gson();
        Voice voiceBean=gson.fromJson(resultString,Voice.class);
        StringBuffer sb=new StringBuffer();
        ArrayList<Voice.WSBean> ws=voiceBean.ws;
        for(Voice.WSBean w:ws){
            String word=w.cw.get(0).w;
            sb.append(word);
        }
        return sb.toString();
    }

       Voice類的書寫:

public class Voice {
    public  ArrayList<WSBean> ws;
   public class WSBean{
      public ArrayList<CWBean> cw;
  }
  public class CWBean{
      public String w;
  }
}

程式碼基本就這麼一些,很簡單,科大識別語音的效果還是很好的,基本能達到97%,所以比較推薦。。。。。小白筆記