Skip to content

Commit 56fbb4f

Browse files
add UUID header (#107)
* add UUID header * fix lint
1 parent d1f3b0d commit 56fbb4f

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

src/om1_speech/audio/audio_output_live_stream.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)