語音識別---訊飛科大api實現
阿新 • • 發佈:2019-01-06
科大語音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%,所以比較推薦。。。。。小白筆記