Experimental untested support for setting speech rate on Android.

This commit is contained in:
Nolan Darilek 2020-05-17 12:46:57 -05:00
parent f58f309d0c
commit 691dd66054
2 changed files with 16 additions and 9 deletions

2
TTS.gd
View File

@ -70,7 +70,7 @@ func stop():
func get_is_rate_supported():
if Engine.get_singleton("AndroidTTS"):
return false
return true
elif OS.has_feature('JavaScript'):
return true
elif tts != null:

View File

@ -32,8 +32,20 @@ public class TTS extends Godot.SingletonBase implements TextToSpeech.OnInitListe
tts.stop();
}
public void set_rate(Float rate) {
Float newRate;
if (rate <= 50)
newRate = rate / 50;
else {
newRate = rate - 50;
newRate = 1 + (newRate / 5);
}
tts.setSpeechRate(newRate);
}
public void getInstanceId(int pInstanceId) {
// You will need to call this method from Godot and pass in the get_instance_id().
// You will need to call this method from Godot and pass in the
// get_instance_id().
instanceId = pInstanceId;
}
@ -42,17 +54,12 @@ public class TTS extends Godot.SingletonBase implements TextToSpeech.OnInitListe
}
public TTS(Activity p_activity) {
this.activity = (Godot)p_activity;
this.activity = (Godot) p_activity;
this.appActivity = p_activity;
this.appContext = appActivity.getApplicationContext();
this.tts = new TextToSpeech(this.appContext, this);
// Register class name and functions to bind.
registerClass("AndroidTTS", new String[]
{
"speak",
"stop",
"getInstanceId"
});
registerClass("AndroidTTS", new String[] { "speak", "stop", "set_rate", "getInstanceId" });
this.activity.runOnUiThread(new Runnable() {
public void run() {
}