services(cartesia): schedule TTSStoppedFrame after text
This commit is contained in:
@@ -434,6 +434,9 @@ class WordTTSService(TTSService):
|
|||||||
if word == "LLMFullResponseEndFrame" and timestamp == 0:
|
if word == "LLMFullResponseEndFrame" and timestamp == 0:
|
||||||
frame = LLMFullResponseEndFrame()
|
frame = LLMFullResponseEndFrame()
|
||||||
frame.pts = last_pts
|
frame.pts = last_pts
|
||||||
|
elif word == "TTSStoppedFrame" and timestamp == 0:
|
||||||
|
frame = TTSStoppedFrame()
|
||||||
|
frame.pts = last_pts
|
||||||
else:
|
else:
|
||||||
frame = TextFrame(word)
|
frame = TextFrame(word)
|
||||||
frame.pts = self._initial_word_timestamp + timestamp
|
frame.pts = self._initial_word_timestamp + timestamp
|
||||||
|
|||||||
@@ -227,12 +227,13 @@ class CartesiaTTSService(WordTTSService):
|
|||||||
continue
|
continue
|
||||||
if msg["type"] == "done":
|
if msg["type"] == "done":
|
||||||
await self.stop_ttfb_metrics()
|
await self.stop_ttfb_metrics()
|
||||||
await self.push_frame(TTSStoppedFrame())
|
|
||||||
# Unset _context_id but not the _context_id_start_timestamp
|
# Unset _context_id but not the _context_id_start_timestamp
|
||||||
# because we are likely still playing out audio and need the
|
# because we are likely still playing out audio and need the
|
||||||
# timestamp to set send context frames.
|
# timestamp to set send context frames.
|
||||||
self._context_id = None
|
self._context_id = None
|
||||||
await self.add_word_timestamps([("LLMFullResponseEndFrame", 0)])
|
await self.add_word_timestamps(
|
||||||
|
[("TTSStoppedFrame", 0), ("LLMFullResponseEndFrame", 0)]
|
||||||
|
)
|
||||||
elif msg["type"] == "timestamps":
|
elif msg["type"] == "timestamps":
|
||||||
await self.add_word_timestamps(
|
await self.add_word_timestamps(
|
||||||
list(zip(msg["word_timestamps"]["words"], msg["word_timestamps"]["start"]))
|
list(zip(msg["word_timestamps"]["words"], msg["word_timestamps"]["start"]))
|
||||||
|
|||||||
Reference in New Issue
Block a user