語音交互是現今應用最多的智能交互方式,在人工智能愈來愈火的當下應用十分普遍,因此特別針對車內環境,在駕駛員安心駕駛的時候,用語音能夠安全的進行操控。剛好新版項目中要加入語音播報功能,由於咱們的應用和司機有關,因而在網上搜索一些解決方案,目前有阿里雲,百度雲以及科大訊飛還有一些其餘公司提供的相關解決方案。
不一樣方案之間的對比,能夠參考下面的文章:
智能語音方案比對介紹
http://www.jianshu.com/p/95d9...java
目前計劃採用的是百度雲提供的語音合成技術:
有以下幾個優點:react
1.支持多種語言多種音色
支持中文、英文混讀,男聲、女聲、童聲、情感男聲可供選擇,更支持語速、音調、音量、音頻碼率設置,讓應用擁有最甜美和最磁性的聲音
2.支持離線在線融合模式
SDK能夠根據當前網絡情況及指令的類型,自動判斷使用本地引擎仍是雲端引擎進行語音合成
3.合成效果流暢天然
語音合成技術業界領先,合成效果接近
真人發聲,流暢天然,且極具表現力,
給你最溫馨的聽覺體驗
4.免費額度高android
好了,不給它打廣告了,開始整乾貨,下面是集成步驟。
先貼上百度雲官網文檔地址:http://ai.baidu.com/docs#/TTS...
1.建立一個ReactNative工程,不會的自行百度吧;或者在已有項目中,總之你得有個RN項目
2.登陸網址百度語音開發者平臺註冊帳號並建立應用:
進入控制檯-->選擇產品服務-->選擇人工智能-->建立應用-->填寫有關應用信息
ios
同理點擊查看Key,查看當前應用的所需的主要三個參數 AppId APIKey SecretKey,後面會用獲得.git
3.下載相關平臺的SDKgithub
4.解壓後react-native
BaiduTtsSample:爲一個模板代碼,eclipse版本的,我就是借鑑裏面稍微修改了一下。
data:爲百度語音資源,聲音文件,它爲一個必須文件,中英文資源。最後使用是放在手機物理存儲下的。
doc:爲一個pdf的簡介使用方法以及網絡的使用Api文檔說明。咱們用不到,能夠下去讀一讀的。
libs:爲資源jar包和語音引擎文件.so庫。也是咱們集成必須使用到的。
5.接下來的步驟是,咱們將語音資源和libs下的資源方法android studio咱們的項目裏面。將data裏面的文件所有複製到Asserts文件夾下。將libs下的兩個jar文件複製到項目的libs中,並添加Add As library關聯。在項目中的main路徑下新建一個jnilibs文件夾,用於放置剩餘的libs下的文件。如今的工程目錄是(Android)安全
6.添加權限
<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" />網絡
7.到此,集成就結束了,接下來就是如何使用。固然能夠參照BaiduTtsSample文件夾下的src裏面的一個MainActvity的寫法。也能夠按照下面的總結的工具類來直接使用,方便快捷省事。
參考文章:http://blog.csdn.net/bk120/ar...
--------------------------華麗的分割線----------------------------
由於我們的的項目是ReactNative,因此要進行原生和js的交互
1.建立一個原生模塊是一個繼承了ReactContextBaseJavaModule的Java類,它能夠實現一些JavaScript所需的功能。eclipse
2.註冊模塊
3.在這個package須要在MainApplication.java文件的getPackages方法中提供。這個文件位於你的react-native應用文件夾的android目錄中。
4.爲了讓你的功能從JavaScript端訪問起來更爲方便,一般咱們都會把原生模塊封裝成一個JavaScript模塊。這不是必須的,但省下了每次都從NativeModules中獲取對應模塊的步驟。這個JS文件也能夠用於添加一些其餘JavaScript端實現的功能。
5.使用
6.集成常見問題:
百度語音文檔中心:http://yuyin.baidu.com/docs/t...
Oc 百度語音的ios集成:http://blog.csdn.net/qq_40691...
iOS 一行代碼簡單調用百度語音合成:http://www.jianshu.com/p/1c4a...
ps:使用Android原生自帶的語音合成:
https://github.com/SolveBugs/...
https://blog.csdn.net/csdn_bl...