没有播放声音
Sound isn't played
我需要使用文字转语音库。我决定使用 https://responsivevoice.org/ 。集成相当简单,但是,因为我的项目使用 GWT,所以它 - 显然 - 不是那么简单。
这是我的 java 代码,它是概念的最小证明 class:
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) 声音应该已播放。但是,我没有听到任何声音,而且我的音量可以听到。那么,这里出了什么问题?
好吧,这可能不是最佳答案,但对我有用。
首先,link responsivevoice.js
在托管 html 页面:
<script type="text/javascript" language="javascript" src="https://code.responsivevoice.org/responsivevoice.js"></script>
然后删除代码的 ScriptInjector
部分。
最后的改动是在playWord()
方法中添加$wnd
:
$wnd.responsiveVoice.speak(s);
已测试。工作了。
我需要使用文字转语音库。我决定使用 https://responsivevoice.org/ 。集成相当简单,但是,因为我的项目使用 GWT,所以它 - 显然 - 不是那么简单。
这是我的 java 代码,它是概念的最小证明 class:
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) 声音应该已播放。但是,我没有听到任何声音,而且我的音量可以听到。那么,这里出了什么问题?
好吧,这可能不是最佳答案,但对我有用。
首先,link responsivevoice.js
在托管 html 页面:
<script type="text/javascript" language="javascript" src="https://code.responsivevoice.org/responsivevoice.js"></script>
然后删除代码的 ScriptInjector
部分。
最后的改动是在playWord()
方法中添加$wnd
:
$wnd.responsiveVoice.speak(s);
已测试。工作了。