0
我需要使用文本到語音庫。我決定使用https://responsivevoice.org/。然而,整合相當容易,因爲我的項目使用GWT,顯然 - 並不那麼直截了當。聲音未播放
這裏是我的Java代碼,概念類的最小證明:
import com.google.gwt.core.client.Callback;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.ScriptInjector;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.*;
public class InverseVoiceTrainer extends SimplePanel implements ClickHandler {
Button playBtn;
public InverseVoiceTrainer() {
ScriptInjector.fromUrl("https://code.responsivevoice.org/responsivevoice.js").setCallback(
new Callback<Void, Exception>() {
@Override
public void onSuccess(Void result) {
GWT.log("ResponsiveVoiceJS loaded.");
}
@Override
public void onFailure(Exception reason) {
GWT.log("ResponsiveVoiceJS loading FAILED!");
}
}).inject();
playBtn = new Button("Play");
playBtn.addClickHandler(this);
this.add(playBtn);
}
@Override
public void onClick(ClickEvent event) {
GWT.log("Onclick pressed");
playWord("This is a test message...");
}
public static native void playWord(String s) /*-{
console.log("playWord - 1");
responsiveVoice.speak(s);
console.log("playWord - 2");
}-*/;
}
因此,尋找到控制檯日誌,我可以看到以下內容:
ResponsiveVoice r1.5.3
SuperDevModeLogger.java:71 ResponsiveVoiceJS loaded.
SuperDevModeLogger.java:71 Onclick pressed
InverseVoiceTrainer.java:40 playWord - 1
InverseVoiceTrainer.java:42 playWord - 2
告訴我,( a)ResponsiveVoice似乎已經正確加載並且(b)聲音應該已經播放。但是,我什麼也聽不到,我的音量是可以忍受的。那麼,這裏出了什麼問題?
這指出問題出現在'ScriptInjector'調用中 - 它應該調用'.setWindow(ScriptInjector.TOP_WINDOW)',然後JSNI方法應該以'$ wnd.'爲前綴,就像你的答案顯示的那樣。 –