天天看點

Android實戰——科大訊飛語音聽寫SDK的使用,實作語音識别功能

科大訊飛語音聽寫SDK的使用,實作語音識别功能

事先說明:

語音聽寫SDK适配安卓6.0需要手動申請權限,各位可以自信查詢資料實作,如果嫌麻煩,可以用第三方Bmob內建好的工具類進行實作,詳細可以看http://blog.csdn.net/qq_30379689/article/details/52223244,關于語音聽寫SDK的開發,參考科大訊飛開放平台官網為準

步驟一:百度科大訊飛開發者平台,找到官網進入

Android實戰——科大訊飛語音聽寫SDK的使用,實作語音識别功能

步驟二:在科大訊飛開發者平台官網新增賬號,并建立應用

Android實戰——科大訊飛語音聽寫SDK的使用,實作語音識别功能

步驟三:在SDK下載下傳中下載下傳語音聽寫、Android平台、我的應用進行下載下傳

Android實戰——科大訊飛語音聽寫SDK的使用,實作語音識别功能

步驟四:解壓下載下傳包,在libs中對應導入Android Studio中

Android實戰——科大訊飛語音聽寫SDK的使用,實作語音識别功能

你需要在Android Studio中手動建立一個jniLibs檔案夾,記得libs的jar包右鍵Add As Library

Android實戰——科大訊飛語音聽寫SDK的使用,實作語音識别功能

步驟五:複制assets檔案夾到項目中

Android實戰——科大訊飛語音聽寫SDK的使用,實作語音識别功能

步驟六:根據需求,在Manifests檔案中添權重限

<!--連接配接網絡權限,用于執行雲端語音能力 -->
    <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" />
           

這個步驟有時候會出錯,因為如果是文檔中複制進來的權限,會在權限中多出幾個空格導緻報錯,是以大家小心

步驟七:在代碼中初始化SDK

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 将“12345678”替換成您申請的 APPID 
        SpeechUtility.createUtility(this, SpeechConstant.APPID +"=12345678"); 
    }
           

步驟八:在代碼中封裝語音識别實體,然後封裝個方法使用

/**
     * 初始化語音識别
     */
    public void initSpeech(final Context context) {
        //1.建立RecognizerDialog對象
        RecognizerDialog mDialog = new RecognizerDialog(context, null);
        //2.設定accent、language等參數
        mDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
        mDialog.setParameter(SpeechConstant.ACCENT, "mandarin");
        //3.設定回調接口
        mDialog.setListener(new RecognizerDialogListener() {
            @Override
            public void onResult(RecognizerResult recognizerResult, boolean isLast) {
                if (!isLast) {
                    //解析語音
                    String result = parseVoice(recognizerResult.getResultString());
                }
            }

            @Override
            public void onError(SpeechError speechError) {

            }
        });
        //4.顯示dialog,接收語音輸入
        mDialog.show();
    }

    /**
     * 解析語音json
     */
    public String parseVoice(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 wsBean : ws) {
            String word = wsBean.cw.get(0).w;
            sb.append(word);
        }
        return sb.toString();
    }

    /**
     * 語音對象封裝
     */
    public class Voice {

        public ArrayList<WSBean> ws;

        public class WSBean {
            public ArrayList<CWBean> cw;
        }

        public class CWBean {
            public String w;
        }
    }
           

由于語音識别傳回的是個JSON資料,是以這裡我們使用Gson這個包進行解析,需要在dependencies中添加

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

步驟九:我們用一個按鈕調用這個initSpeech方法,并将結果顯示在TextView中,檢視效果圖

Android實戰——科大訊飛語音聽寫SDK的使用,實作語音識别功能
Android實戰——科大訊飛語音聽寫SDK的使用,實作語音識别功能

源碼下載下傳:使用Import Module導入

繼續閱讀