services(playht): ignore message from a different request id
This commit is contained in:
@@ -130,6 +130,7 @@ class PlayHTTTSService(TTSService):
|
|||||||
self._websocket = None
|
self._websocket = None
|
||||||
self._receive_task = None
|
self._receive_task = None
|
||||||
self._request_id = None
|
self._request_id = None
|
||||||
|
self._processing_request_id = None
|
||||||
|
|
||||||
self._settings = {
|
self._settings = {
|
||||||
"sample_rate": sample_rate,
|
"sample_rate": sample_rate,
|
||||||
@@ -243,9 +244,12 @@ class PlayHTTTSService(TTSService):
|
|||||||
await super()._handle_interruption(frame, direction)
|
await super()._handle_interruption(frame, direction)
|
||||||
await self.stop_all_metrics()
|
await self.stop_all_metrics()
|
||||||
self._request_id = None
|
self._request_id = None
|
||||||
|
self._processing_request_id = None
|
||||||
|
|
||||||
async def _receive_messages(self):
|
async def _receive_messages(self):
|
||||||
async for message in self._get_websocket():
|
async for message in self._get_websocket():
|
||||||
|
if self._processing_request_id and self._request_id != self._processing_request_id:
|
||||||
|
continue
|
||||||
if isinstance(message, bytes):
|
if isinstance(message, bytes):
|
||||||
# Skip the WAV header message
|
# Skip the WAV header message
|
||||||
if message.startswith(b"RIFF"):
|
if message.startswith(b"RIFF"):
|
||||||
@@ -259,12 +263,14 @@ class PlayHTTTSService(TTSService):
|
|||||||
msg = json.loads(message)
|
msg = json.loads(message)
|
||||||
if msg.get("type") == "start":
|
if msg.get("type") == "start":
|
||||||
# Handle start of stream
|
# Handle start of stream
|
||||||
logger.debug(f"Started processing request: {msg.get('request_id')}")
|
self._processing_request_id = msg.get("request_id")
|
||||||
|
logger.debug(f"Started processing request: {self._processing_request_id}")
|
||||||
elif msg.get("type") == "end":
|
elif msg.get("type") == "end":
|
||||||
# Handle end of stream
|
# Handle end of stream
|
||||||
if "request_id" in msg and msg["request_id"] == self._request_id:
|
if "request_id" in msg and msg["request_id"] == self._request_id:
|
||||||
await self.push_frame(TTSStoppedFrame())
|
await self.push_frame(TTSStoppedFrame())
|
||||||
self._request_id = None
|
self._request_id = None
|
||||||
|
self._processing_request_id = None
|
||||||
elif "error" in msg:
|
elif "error" in msg:
|
||||||
logger.error(f"{self} error: {msg}")
|
logger.error(f"{self} error: {msg}")
|
||||||
await self.push_error(ErrorFrame(f'{self} error: {msg["error"]}'))
|
await self.push_error(ErrorFrame(f'{self} error: {msg["error"]}'))
|
||||||
|
|||||||
Reference in New Issue
Block a user