say.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 #***********************************************************
4 #* Software License Agreement (BSD License)
5 #*
6 #* Copyright (c) 2009, Willow Garage, Inc.
7 #* All rights reserved.
8 #*
9 #* Redistribution and use in source and binary forms, with or without
10 #* modification, are permitted provided that the following conditions
11 #* are met:
12 #*
13 #* * Redistributions of source code must retain the above copyright
14 #* notice, this list of conditions and the following disclaimer.
15 #* * Redistributions in binary form must reproduce the above
16 #* copyright notice, this list of conditions and the following
17 #* disclaimer in the documentation and/or other materials provided
18 #* with the distribution.
19 #* * Neither the name of the Willow Garage nor the names of its
20 #* contributors may be used to endorse or promote products derived
21 #* from this software without specific prior written permission.
22 #*
23 #* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 #* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 #* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26 #* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27 #* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28 #* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29 #* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30 #* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31 #* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 #* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33 #* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 #* POSSIBILITY OF SUCH DAMAGE.
35 #***********************************************************
36 
37 # Author: Blaise Gassend
38 
39 
40 import sys
41 
42 if __name__ == '__main__':
43  if len(sys.argv) > 1 and sys.argv[1] == '--help':
44  print('Usage: %s \'String to say.\'' % sys.argv[0])
45  print(' %s < file_to_say.txt' % sys.argv[0])
46  print()
47  print('Says a string. For a string on the command line, you must use quotes as')
48  print('appropriate. For a string on standard input, the command will wait for')
49  print('EOF before saying anything.')
50  exit(-1)
51 
52  # Import after printing usage for speed.
53  import rospy
54  from sound_play.msg import SoundRequest
55  from sound_play.libsoundplay import SoundClient
56 
57  if len(sys.argv) == 1:
58  print('Awaiting something to say on standard input.')
59 
60  # Ordered this way to minimize wait time.
61  rospy.init_node('say', anonymous=True)
62  soundhandle = SoundClient()
63  rospy.sleep(1)
64 
65  voice = 'voice_kal_diphone'
66  volume = 1.0
67 
68  if len(sys.argv) == 1:
69  s = sys.stdin.read()
70  else:
71  s = sys.argv[1]
72 
73  if len(sys.argv) > 2:
74  voice = sys.argv[2]
75  if len(sys.argv) > 3:
76  volume = float(sys.argv[3])
77 
78  rospy.loginfo('Saying: %s' % s)
79  rospy.loginfo('Voice: %s' % voice)
80  rospy.loginfo('Volume: %s' % volume)
81 
82  soundhandle.say(s, voice, volume)
83  rospy.sleep(1)
This class is a helper class for communicating with the sound_play node via the sound_play.SoundRequest message.
Definition: libsoundplay.py:91


sound_play
Author(s): Blaise Gassend
autogenerated on Fri Jul 3 2020 03:44:52