2015-04-03 23 views
1

我正嘗試使用ARCWelder將我的Android應用移植到Chrome。 TextToSpeech組件似乎不起作用。在一個活動中,我有一個不確定的進度循環,等待TTS引擎初始化。在Chrome上,它會永久旋轉或返回NullPointerException。 Chrome中是否提供TTS?在Chromebox上運行ChromeOS。Chrome中的Android TextToSpeech ARC

UtteranceProgressListener ttsListener = new UtteranceProgressListener() { 
    @Override 
    public void onStart(String s) { 
     Logg.d("speech started: " + s); 
     if (loadingDialog.isShowing()) { 
      loadingDialog.dismiss(); 
     } 
    } 
    @Override 
    public void onDone(String s) { 
     Logg.d("speech done: " + s); 
     if (s.equals("1")) { 
      nextWord(); 
     } else if (s.equals("2")) { 
      CheckLeave(); 
     } 

    } 
    @Override 
    public void onError(String s) { 
     Logg.e("Text to Speech error speaking: " + s); 
    } 
}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    showProgressDialog(); 
} 

@Override 
protected void onResume() { 
    if (tts==null) { 
     Logg.d("re-initializing TTS"); 
     tts=new TextToSpeech(getApplicationContext(), 
       new TextToSpeech.OnInitListener() { 
        @Override 
        public void onInit(int status) { 
         if(status != TextToSpeech.ERROR){ 
          tts.setSpeechRate(.5f + .25f * (Integer)KVDB.GetValue("speechRate",2)); 
          tts.setLanguage(Locale.US); 
          if (pauseTime != 0) { 
           //Paused. Say nothing. 
          } else if (currentWord == null) { 
           startTime = new ExcelDate(); 
           nextWord(); 
          } else if (currentWord.length() == 0) { 
           nextWord(); 
          } else { 
           reSpeak(); 
          } 
         } 
        } 
       }); 
     tts.setOnUtteranceProgressListener(ttsListener); 
    } 
    super.onResume(); 
} 

private void showProgressDialog() { 
    loadingDialog = new ProgressDialog(this); 
    loadingDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
    loadingDialog.setTitle(getString(R.string.test_loading_msg)); 
    loadingDialog.show(); 
} 

回答

0

正如您發現的那樣,它看起來好像我們沒有任何種類的默認TTS服務提供程序作爲ARC程序包的一部分。基本的Android操作系統根本沒有提供。請致電file a bug

+0

我將此問題複製到一個錯誤報告中。當你說沒有默認的TTS服務提供者時,你的意思是有一種解決方法來訪問其他TTS引擎,或者目前沒有辦法將文本轉換爲來自ARC的語音? – Scott 2015-04-13 21:10:53

+0

您可以通過將其包含在您的CRX軟件包中(您可以包含多個APK)來包含其他TTS引擎。從我在研究Java代碼的過程中得知,它應該可以工作,但這不是我們測試過的。您必須在此過程中處理引擎的任何許可條款。 – 2015-04-13 21:30:01

+0

勞埃德,我想嘗試實施這樣的解決方法。我真的需要擴展Android以外的應用,如果它是可行的,Chrome似乎是完美的途徑。你知道我在哪裏可以找到一些指導或幫助嗎?例如,我怎麼能把這個? https://chrome.google.com/webstore/detail/multilingual-tts-engine/megclklaoidjbomplbhbdgbelkoebbdl – Scott 2015-05-15 13:35:06