in tts/scripts/tts_node.py [0:0]
def do_speak(goal):
"""The action handler.
Note that although it responds to client after the audio play is finished, a client can choose
not to wait by not calling ``SimpleActionClient.waite_for_result()``.
"""
rospy.loginfo('speech goal: {}'.format(goal))
res = do_synthesize(goal)
rospy.loginfo('synthesizer returns: {}'.format(res))
try:
r = json.loads(res.result)
except Exception as e:
s = 'Expecting JSON from synthesizer but got {}'.format(res.result)
rospy.logerr('{}. Exception: {}'.format(s, e))
finish_with_result(s)
return
result = ''
if 'Audio File' in r:
audio_file = r['Audio File']
rospy.loginfo('Will play {}'.format(audio_file))
play(audio_file)
result = audio_file
if 'Exception' in r:
result = '[ERROR] {}'.format(r)
rospy.logerr(result)
finish_with_result(result)