讓你的App有聲音

山水相逢-z發表於2017-04-11

之前寫過一篇文章,當時的需求是播放英文,最後使用的是Androi自帶的TextToSpeech類來實現,傳送門:blog.csdn.net/weixin_3825… ,雖然播放英文效果還行,但是對中文的支援不是很好。最近新專案中又遇到一個語音的需求,這次是中英文都有,各種對比之後,選擇了百度語音離線上融合SDK,播放效果非常好,關鍵是免費。趁著有空,記錄下整合步驟,抽成一個demo,下次有需要的時候可以直接套用。

一 前提步驟

首先,需要在百度語音官網註冊一個賬號,然後建立應用,建立一個應用的大致步驟如下圖:

讓你的App有聲音

註冊完應用後,根據我們給的包名,會生成對應的appid,apikey和secretkey,這幾個引數在我們程式碼中會使用到。

二 程式碼整合

  1. 拷貝資原始檔
    在上邊兒註冊應用的時候,我們已經把SDK下載下來了,在裡邊兒我們找到需要的jar包,so檔案以及語音模型拷貝到我們的專案中,各資原始檔對應目錄如下:
    讓你的App有聲音
    因為我的專案中只有armeabi架構,所以只拷貝了對應的資源,這個需要根據實際情況新增。
  2. 配置build檔案
    將jar包等拷貝到專案中後,還需要配置工程目錄下的build.gradle檔案以新增依賴。
    首先,在android閉包中新增:
    android {
        sourceSets{
            main{
                jniLibs.srcDirs=['libs']
            }
        }
    }複製程式碼
    這樣Android Studio就能識別我們放在libs資料夾下的so檔案了,不然的話執行的時候會報找不到so檔案的錯誤。
    然後,在dependencies閉包中新增:
    compile files('libs/com.baidu.tts_2.3.0.jar')複製程式碼
    到這裡我們可以同步一下專案了,然後就可以在程式碼中使用jar包提供的方法了。
  3. 新增許可權
    在清單檔案中宣告所需的許可權:
    <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" />複製程式碼
  4. demo
    關於具體的使用方法,這裡抽成了一個demo,程式碼我已經測試過了,執行沒有問題(demo裡只支援armeabi框架,你可以將官方sdk的所有架構對應的so檔案都拷貝進去),程式碼址:github.com/SolveBugs/B…

相關文章