def say(self, message, speak_aloud=True, title='Speak'):
# May eventually be moved into its own plugin
message = str(message)
if not message.strip():
click.echo("No text to speak.")
return
computer_os = system()
folder = os.path.split(title)[0]
folder_path = os.path.join(self.speech_file_location,
folder)
if not os.path.exists(folder_path):
os.makedirs(folder_path)
home = settings['home']
if self.input_system == 'google':
# Create the MP3 file which will speak the text
title += '.wav'
path = os.path.join(home, title)
tts = gTTS(message, lang=self.spoken_language)
tts.save(path)
speech_file = "start /MIN {}"
if computer_os != 'Windows':
speech_file = "mpg123 {}"
speech_file = speech_file.format(os.path.join(home, title))
else:
# Create the Visual Basic code which will speak the text
title += '.vbs'
path = os.path.join(home, title)
message = re.sub('["\n\t]', '', message) # Strip out characters that would be spoken by the system.
if computer_os == "Windows":
with open(path, 'w') as file:
file.write(
"""
speaks="{}"
Dim speaks, speech
Set speech=CreateObject("sapi.spvoice")
speech.Speak speaks
""".format(message))
# Set up the file to be executed
speech_file = ["cscript.exe", title]
if computer_os != "Windows":
speech_file = ["espeak", message]
if speak_aloud:
try:
call(speech_file)
except FileNotFoundError:
if self.debugging:
click.echo("File not accessible:" + str(speech_file))
评论列表
文章目录