Звук не воспроизводится
Мне нужно использовать текст в речь библиотеки. Я решил использовать 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) должен был воспроизводиться звук. Тем не менее, я ничего не слышу, и мой звук слышен. Итак, что здесь происходит не так?
1 ответ
Ну, это может быть не лучшим ответом, но это сработало для меня.
Во-первых, просто свяжите responsivevoice.js
в хостинге html-страницы:
<script type="text/javascript" language="javascript" src="https://code.responsivevoice.org/responsivevoice.js"></script>
Затем удалите ScriptInjector
часть вашего кода.
Последнее изменение - добавить $wnd
в playWord()
метод:
$wnd.responsiveVoice.speak(s);
Проверено. Работал.