Added full english JS tts support (needs performance optimization)
This commit is contained in:
parent
55232223a3
commit
82078bd942
1 changed files with 2 additions and 31 deletions
|
@ -20,9 +20,6 @@ import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
import org.mozilla.javascript.ScriptableObject;
|
import org.mozilla.javascript.ScriptableObject;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
@ -95,7 +92,6 @@ public class JSTTSCommandPlayerImpl extends AbstractJSCommandPlayer {
|
||||||
initializeEngine(app, ctx);
|
initializeEngine(app, ctx);
|
||||||
params.put(TextToSpeech.Engine.KEY_PARAM_STREAM, app.getSettings().AUDIO_STREAM_GUIDANCE
|
params.put(TextToSpeech.Engine.KEY_PARAM_STREAM, app.getSettings().AUDIO_STREAM_GUIDANCE
|
||||||
.getModeValue(getApplicationMode()).toString());
|
.getModeValue(getApplicationMode()).toString());
|
||||||
setJSContext(app.getAppPath(IndexConstants.VOICE_INDEX_DIR).getAbsolutePath() + "/" + voiceProvider + "/" + language + "_tts.js");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initializeEngine(final Context ctx, final Activity act) {
|
private void initializeEngine(final Context ctx, final Activity act) {
|
||||||
|
@ -224,36 +220,11 @@ public class JSTTSCommandPlayerImpl extends AbstractJSCommandPlayer {
|
||||||
@Override
|
@Override
|
||||||
public JSCommandBuilder newCommandBuilder() {
|
public JSCommandBuilder newCommandBuilder() {
|
||||||
JSCommandBuilder commandBuilder = new JSCommandBuilder(this);
|
JSCommandBuilder commandBuilder = new JSCommandBuilder(this);
|
||||||
commandBuilder.setJSContext(jsContext, jsScope);
|
commandBuilder.setJSContext(app.getAppPath(IndexConstants.VOICE_INDEX_DIR).getAbsolutePath() + "/" + voiceProvider + "/" + language + "_tts.js");
|
||||||
commandBuilder.setParameters(app.getSettings().METRIC_SYSTEM.get().toTTSString(), true);
|
commandBuilder.setParameters(app.getSettings().METRIC_SYSTEM.get().toTTSString(), true);
|
||||||
return commandBuilder;
|
return commandBuilder;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String readFileContents(String path) {
|
|
||||||
StringBuilder fileContent = new StringBuilder("");
|
|
||||||
try {
|
|
||||||
FileInputStream fis = new FileInputStream(new File(path));
|
|
||||||
byte[] buffer = new byte[1024];
|
|
||||||
int n;
|
|
||||||
while ((n = fis.read(buffer)) != -1)
|
|
||||||
{
|
|
||||||
fileContent.append(new String(buffer, 0, n));
|
|
||||||
}
|
|
||||||
fis.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
log.error(e.getMessage(), e);
|
|
||||||
}
|
|
||||||
return fileContent.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setJSContext(String path) {
|
|
||||||
String script = readFileContents(path);
|
|
||||||
jsContext = org.mozilla.javascript.Context.enter();
|
|
||||||
jsContext.setOptimizationLevel(-1);
|
|
||||||
jsScope = jsContext.initStandardObjects();
|
|
||||||
jsContext.evaluateString(jsScope, script, "JS", 1, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void playCommands(CommandBuilder builder) {
|
public void playCommands(CommandBuilder builder) {
|
||||||
final List<String> execute = builder.execute(); //list of strings, the speech text, play it
|
final List<String> execute = builder.execute(); //list of strings, the speech text, play it
|
||||||
|
|
Loading…
Reference in a new issue