5 from respeaker_ros
import *
19 suppress_pyaudio_error = rospy.get_param(
"~suppress_pyaudio_error",
True)
28 self.
pub_vad = rospy.Publisher(
"is_speeching", Bool, queue_size=1, latch=
True)
29 self.
pub_doa_raw = rospy.Publisher(
"sound_direction", Int32, queue_size=1, latch=
True)
30 self.
pub_doa = rospy.Publisher(
"sound_localization", PoseStamped, queue_size=1, latch=
True)
31 self.
pub_audio = rospy.Publisher(
"audio", AudioData, queue_size=10)
65 for name
in config.keys():
69 for name, value
in config.items():
70 prev_val = self.
config[name]
77 self.
respeaker.set_led_color(r=msg.r, g=msg.g, b=msg.b, a=msg.a)
80 self.
timer_led = rospy.Timer(rospy.Duration(3.0),
85 self.
pub_audio.publish(AudioData(data=data))
95 stamp = event.current_real
or rospy.Time.now()
97 doa_rad = math.radians(self.
respeaker.direction - 180.0)
100 doa = int(math.degrees(doa_rad))
104 self.
pub_vad.publish(Bool(data=is_voice))
114 msg.header.stamp = stamp
115 ori = T.quaternion_from_euler(math.radians(doa), 0, 0)
118 msg.pose.orientation.w = ori[0]
119 msg.pose.orientation.x = ori[1]
120 msg.pose.orientation.y = ori[2]
121 msg.pose.orientation.z = ori[3]
135 rospy.loginfo(
"Speech detected for %.3f seconds" % duration)
141 if __name__ ==
'__main__':
142 rospy.init_node(
"respeaker_node")
def on_config(self, config, level)
static double shortest_angular_distance(double from, double to)
def on_timer(self, event)
def on_status_led(self, msg)