之前寫過一篇文章,當時的需求是播放英文,最後使用的是Androi自帶的TextToSpeech類來實現,傳送門:blog.csdn.net/weixin_3825… ,雖然播放英文效果還行,但是對中文的支援不是很好。最近新專案中又遇到一個語音的需求,這次是中英文都有,各種對比之後,選擇了百度語音離線上融合SDK,播放效果非常好,關鍵是免費。趁著有空,記錄下整合步驟,抽成一個demo,下次有需要的時候可以直接套用。
一 前提步驟
首先,需要在百度語音官網註冊一個賬號,然後建立應用,建立一個應用的大致步驟如下圖:
註冊完應用後,根據我們給的包名,會生成對應的appid,apikey和secretkey,這幾個引數在我們程式碼中會使用到。
二 程式碼整合
- 拷貝資原始檔
在上邊兒註冊應用的時候,我們已經把SDK下載下來了,在裡邊兒我們找到需要的jar包,so檔案以及語音模型拷貝到我們的專案中,各資原始檔對應目錄如下:
因為我的專案中只有armeabi架構,所以只拷貝了對應的資源,這個需要根據實際情況新增。 - 配置build檔案
將jar包等拷貝到專案中後,還需要配置工程目錄下的build.gradle檔案以新增依賴。
首先,在android閉包中新增:
這樣Android Studio就能識別我們放在libs資料夾下的so檔案了,不然的話執行的時候會報找不到so檔案的錯誤。android { sourceSets{ main{ jniLibs.srcDirs=['libs'] } } }複製程式碼
然後,在dependencies閉包中新增:
到這裡我們可以同步一下專案了,然後就可以在程式碼中使用jar包提供的方法了。compile files('libs/com.baidu.tts_2.3.0.jar')複製程式碼
- 新增許可權
在清單檔案中宣告所需的許可權:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />複製程式碼
- demo
關於具體的使用方法,這裡抽成了一個demo,程式碼我已經測試過了,執行沒有問題(demo裡只支援armeabi框架,你可以將官方sdk的所有架構對應的so檔案都拷貝進去),程式碼址:github.com/SolveBugs/B…