Ich brauche eine Text-zu-Sprache-Bibliothek. Ich entschied mich für https://responsivevoice.org/. Die Integration ist relativ einfach, da mein Projekt GWT verwendet, ist es offensichtlich nicht so einfach.Sound wird nicht abgespielt
Hier ist mein Java-Code, der eine minimale Proof of Concept-Klasse ist:
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");
}-*/;
}
Also, in das Konsolenprotokoll suchen sehe ich folgendes können:
ResponsiveVoice r1.5.3
SuperDevModeLogger.java:71 ResponsiveVoiceJS loaded.
SuperDevModeLogger.java:71 Onclick pressed
InverseVoiceTrainer.java:40 playWord - 1
InverseVoiceTrainer.java:42 playWord - 2
Was mir sagt, dass (a) ResponsiveVoice scheint korrekt geladen zu sein und (b) der Sound hätte abgespielt werden sollen. Allerdings höre ich nichts und meine Lautstärke ist hörbar. Also, was läuft hier falsch?
Dies weist auf das Problem hin, das beim 'ScriptInjector' Aufruf auftritt - es sollte' .setWindow (ScriptInjector.TOP_WINDOW) 'aufgerufen werden, und dann sollte die JSNI Methode' $ wnd. 'vorangestellt werden, wie Ihre Antwort zeigt . –