android 訊飛語音引擎3.0 文字轉語音 默認粵語播報


粵語語音引擎apk及粵語資源包
android 6.0 平台老人機需求設備默認支持粵語離線播報,在網上找了許多資料和apk都沒有解決。
發現訊飛的TTS3.0聯網下載粵語包后可以完美支持。然后嘗試反編譯修改默認語音最后預置apk及資源包,最終解決了這個問題。
1. 預置apk
首先預置apk,預置apk的方法不再贅述。參考:預置apk
2. 預置粵語資源
資源包預置在 storage/sdcard0/Speechcloud 目錄下,注意編譯時無法將文件預置進設備 sdcard,需要先將文件預置到如apk預置目錄或/system/sdcard/或其他rom中已存在的目錄下,然后寫Service監聽開機廣播,判斷首次開機時將/system/sdcard/目錄下預置的資源文件copy到到 storage/sdcard0/Speechcloud 。可以參考另一篇文章:Android MTK預置音樂/圖片/文件
3. 編寫demo測試
關鍵方法:

+import android.speech.tts.TextToSpeech;
+import java.util.Locale;


+ private TextToSpeech mTextToSpeech;
+ private void sendCustomBroadcast(String paramString){
+ if(mTextToSpeech == null) {
+ mTextToSpeech=new TextToSpeech(mContext, new TextToSpeech.OnInitListener() {
+ @Override
+ public void onInit(int status) {
+ if (status==TextToSpeech.SUCCESS) {
+ int supported=mTextToSpeech.setLanguage(Locale.US);//此處不影響語言
+ if ((supported!=TextToSpeech.LANG_AVAILABLE)&&(supported!=TextToSpeech.LANG_COUNTRY_AVAILABLE)) {
+ Log.i("mh","TextToSpeech error");
+ }
+ }
+ }
+ });
+ }
+ mTextToSpeech.speak(paramString, TextToSpeech.QUEUE_FLUSH, null); 
+ }

 


4. 將默認語音引擎設置為訊飛
Android 6.0 修改方法:frameworks/base/core/java/android/speech/tts/TtsEngines.java

public String getDefaultEngine() {
    String engine = getString(mContext.getContentResolver(),
    Settings.Secure.TTS_DEFAULT_SYNTH);
+   if(engine==null) {
+       engine ="com.iflytek.speechcloud";
+   }
    return isEngineInstalled(engine) ? engine :     getHighestRankedEngineName();
}    

 

以上可以自行定制如撥號盤按鍵播報,來電報號,電話簿報號等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM