Sideband/sbapp/plyer/platforms/android/tts.py

35 lines
938 B
Python

from time import sleep
from jnius import autoclass
from plyer.facades import TTS
from plyer.platforms.android import activity
Locale = autoclass('java.util.Locale')
TextToSpeech = autoclass('android.speech.tts.TextToSpeech')
class AndroidTextToSpeech(TTS):
def _speak(self, **kwargs):
tts = TextToSpeech(activity, None)
tts.setLanguage(Locale.US)
retries = 0 # First try rarely succeeds due to some timing issue
message = kwargs.get('message')
# first try for while loop
speak_status = tts.speak(
message, TextToSpeech.QUEUE_FLUSH, None
)
# -1 indicates error. Let's wait and then try again
while retries < 100 and speak_status == -1:
sleep(0.1)
retries += 1
speak_status = tts.speak(
message, TextToSpeech.QUEUE_FLUSH, None
)
def instance():
return AndroidTextToSpeech()