@@ -122,6 +122,7 @@ def zenoh_audio_message(self, data: zenoh.Sample):
122122 == AudioStatus .STATUS_SPEAKER .ACTIVE .value
123123 ):
124124 pending_message = json .loads (self .audio_status .sentence_to_speak .data )
125+ pending_message ["request_id" ] = self .audio_status .header .frame_id
125126 self .add_request (pending_message )
126127
127128 def _on_asr_text (self , data : zenoh .Sample ):
@@ -185,19 +186,24 @@ def _process_audio(self):
185186 and streams them through a persistent ffplay process.
186187 """
187188 while self .running :
189+ tts_request = None
188190 try :
189191 tts_request = self ._pending_requests .get ()
190192 if tts_request is None :
191193 break
192194
195+ request_id = tts_request .get ("request_id" , "" )
196+
193197 if not self ._initialize_ffplay ():
194198 logger .error ("Failed to initialize ffplay" )
195199 continue
196200
197201 self ._stream_audio_chunk (self ._create_silence_audio (10 ))
198202
199203 self ._tts_callback (True )
200- self ._update_audio_status (AudioStatus .STATUS_SPEAKER .ACTIVE .value )
204+ self ._update_audio_status (
205+ AudioStatus .STATUS_SPEAKER .ACTIVE .value , request_id
206+ )
201207
202208 with self .openai_client .audio .speech .with_streaming_response .create (
203209 model = self ._tts_model ,
@@ -214,12 +220,17 @@ def _process_audio(self):
214220 self ._finish_audio_playback ()
215221
216222 self ._tts_callback (False )
217- self ._update_audio_status (AudioStatus .STATUS_SPEAKER .READY .value )
223+ self ._update_audio_status (
224+ AudioStatus .STATUS_SPEAKER .READY .value , request_id
225+ )
218226
219227 except Exception as e :
220228 logger .error (f"Error processing audio: { e } " )
221229 self ._tts_callback (False )
222- self ._update_audio_status (AudioStatus .STATUS_SPEAKER .READY .value )
230+ self ._update_audio_status (
231+ AudioStatus .STATUS_SPEAKER .READY .value ,
232+ tts_request .get ("request_id" , "" ) if tts_request else "" ,
233+ )
223234 continue
224235
225236 def _initialize_ffplay (self ) -> bool :
@@ -332,17 +343,19 @@ def _cleanup_ffplay(self):
332343 self ._ffplay_proc = None
333344 self ._ffplay_initialized = False
334345
335- def _update_audio_status (self , speaker_status : int ):
346+ def _update_audio_status (self , speaker_status : int , frame_id : str = "" ):
336347 """
337348 Update and publish audio status via Zenoh.
338349
339350 Parameters
340351 ----------
341352 speaker_status : int
342353 The speaker status to set
354+ frame_id : str
355+ The frame ID (request UUID) to include in the header
343356 """
344357 state = AudioStatus (
345- header = prepare_header (),
358+ header = prepare_header (frame_id ),
346359 status_mic = (
347360 self .audio_status .status_mic
348361 if self .audio_status
0 commit comments