From 9dbd2e3d876123d73116102e4b0be2052a80c6c5 Mon Sep 17 00:00:00 2001 From: Hongyu Li Date: Wed, 23 Mar 2022 10:56:21 -0400 Subject: [PATCH] working audio script that pblishs audio message --- .../scripts/stretch_audio.py | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/vz_acoustic_scene_analysis/scripts/stretch_audio.py b/vz_acoustic_scene_analysis/scripts/stretch_audio.py index d4ddbb4..ac78448 100755 --- a/vz_acoustic_scene_analysis/scripts/stretch_audio.py +++ b/vz_acoustic_scene_analysis/scripts/stretch_audio.py @@ -15,6 +15,7 @@ from contextlib import contextmanager import stretch_body.hello_utils as hu hu.print_stretch_re_use() from vz_acoustic_scene_analysis.msg import MyAudioData +from rospy.numpy_msg import numpy_msg # what does this mean @contextmanager @@ -202,13 +203,13 @@ class Audio: self.secs = rospy.get_param("/seconds") self.chunk_size = rospy.get_param("/chunk_size") # Publisher for Audio Data - self.audio_data_pub = rospy.Publisher("/wav_data", MyAudioData, queue_size=10) + self.audio_data_pub = rospy.Publisher("/wav_data", numpy_msg(MyAudioData), queue_size=10) def get_audio(self): recorded_frames = self.record_audio(self.chunk_size) # set param here chunk size - audio = MyAudioData() - audio.data = np.array(recorded_frames, dtype=np.uint16) - self.audio_data_pub.publish(audio) + # audio = MyAudioData() + # audio.data = np.array(recorded_frames, dtype=np.uint16) + # self.audio_data_pub.publish(audio) self.wav_list.append(recorded_frames) self.record_count += 1 # Every 5 seconds for @@ -235,9 +236,19 @@ class Audio: frames = [] for i in range(0, int(RESPEAKER_RATE / CHUNK * seconds)): data = stream.read(CHUNK) - a = np.frombuffer(data,dtype=np.int16)[0::6] # extracts fused channel 0 + a = np.frombuffer(data,dtype=np.uint16)[0::6] # extracts fused channel 0 + print("a type: ", type(a[0])) + print("a length: ", len(a)) + self.audio_data_pub.publish(a) frames.append(a.tobytes()) - + + # print("Length of frames: ", len(frames)) + # Check to prevent empty frames list + if (len(frames) == 0): + # add garbage data + print("Having issues") + data[0] == 1 + stream.stop_stream() stream.close() p.terminate()