Skip to content

Commit b57be91

Browse files
authored
Merge pull request #179 from KKalem/simple_tts
Added a simple tts utility node
2 parents d98726f + 701a4ac commit b57be91

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

.gitmodules

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,4 @@
5555
[submodule "external_equipment/PlayStation-JoyInterface-ROS2"]
5656
path = external_equipment/PlayStation-JoyInterface-ROS2
5757
url = https://github.com/HarvestX/PlayStation-JoyInterface-ROS2
58+
branch = humble

utilities/smarc_utilities/setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
tests_require=['pytest'],
2121
entry_points={
2222
'console_scripts': [
23+
'simple_tts = smarc_utilities.tts:main',
2324
],
2425
},
2526
)
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import subprocess
2+
from rclpy.node import Node
3+
from std_msgs.msg import String
4+
5+
6+
class TTS:
7+
def __init__(self,
8+
node: Node,
9+
topic: str = "speak",
10+
engine : str = "spd-say"):
11+
12+
self._node = node
13+
self._topic = topic
14+
self._engine = engine
15+
16+
self._speak_sub = self._node.create_subscription(
17+
String,
18+
self._topic,
19+
self.speak,
20+
10
21+
)
22+
23+
def speak(self, text: String):
24+
t = text.data
25+
if not t:
26+
self._node.get_logger().warn("Received empty text for TTS.")
27+
return
28+
self._node.get_logger().info(f"Speaking: {t}")
29+
subprocess.run([self._engine, t])
30+
31+
32+
33+
def main():
34+
import rclpy
35+
from rclpy.executors import SingleThreadedExecutor
36+
37+
rclpy.init()
38+
node = Node("tts_node")
39+
tts = TTS(node)
40+
41+
executor = SingleThreadedExecutor()
42+
executor.add_node(node)
43+
44+
try:
45+
executor.spin()
46+
except KeyboardInterrupt:
47+
pass
48+
finally:
49+
node.destroy_node()
50+
rclpy.shutdown()
51+

0 commit comments

Comments
 (0)