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();
}
我將此問題複製到一個錯誤報告中。當你說沒有默認的TTS服務提供者時,你的意思是有一種解決方法來訪問其他TTS引擎,或者目前沒有辦法將文本轉換爲來自ARC的語音? – Scott 2015-04-13 21:10:53
您可以通過將其包含在您的CRX軟件包中(您可以包含多個APK)來包含其他TTS引擎。從我在研究Java代碼的過程中得知,它應該可以工作,但這不是我們測試過的。您必須在此過程中處理引擎的任何許可條款。 – 2015-04-13 21:30:01
勞埃德,我想嘗試實施這樣的解決方法。我真的需要擴展Android以外的應用,如果它是可行的,Chrome似乎是完美的途徑。你知道我在哪裏可以找到一些指導或幫助嗎?例如,我怎麼能把這個? https://chrome.google.com/webstore/detail/multilingual-tts-engine/megclklaoidjbomplbhbdgbelkoebbdl – Scott 2015-05-15 13:35:06