Fixing metrics and adding extra guard after sanitization.
This commit is contained in:
@@ -174,7 +174,7 @@ class NvidiaSageMakerHTTPTTSService(TTSService):
|
|||||||
logger.debug(f"{self}: Generating TTS [{text}]")
|
logger.debug(f"{self}: Generating TTS [{text}]")
|
||||||
|
|
||||||
text = sanitize_text_for_tts(text)
|
text = sanitize_text_for_tts(text)
|
||||||
if not text:
|
if not text or not any(c.isalnum() for c in text):
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -199,8 +199,12 @@ class NvidiaSageMakerHTTPTTSService(TTSService):
|
|||||||
yield ErrorFrame(error="SageMaker TTS returned no audio stream")
|
yield ErrorFrame(error="SageMaker TTS returned no audio stream")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
first_chunk = True
|
||||||
async for chunk in response["Body"].iter_chunks(chunk_size=self.chunk_size):
|
async for chunk in response["Body"].iter_chunks(chunk_size=self.chunk_size):
|
||||||
if chunk:
|
if chunk:
|
||||||
|
if first_chunk:
|
||||||
|
await self.stop_ttfb_metrics()
|
||||||
|
first_chunk = False
|
||||||
yield TTSAudioRawFrame(
|
yield TTSAudioRawFrame(
|
||||||
audio=chunk,
|
audio=chunk,
|
||||||
sample_rate=self.sample_rate,
|
sample_rate=self.sample_rate,
|
||||||
@@ -210,8 +214,8 @@ class NvidiaSageMakerHTTPTTSService(TTSService):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"{self}: SageMaker TTS error: {e}")
|
logger.error(f"{self}: SageMaker TTS error: {e}")
|
||||||
yield ErrorFrame(error=f"SageMaker TTS error: {e}")
|
yield ErrorFrame(error=f"SageMaker TTS error: {e}")
|
||||||
finally:
|
|
||||||
await self.stop_ttfb_metrics()
|
await self.start_tts_usage_metrics(text)
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@@ -489,7 +493,7 @@ class NvidiaSageMakerWebsocketTTSService(InterruptibleTTSService):
|
|||||||
text = sanitize_text_for_tts(text)
|
text = sanitize_text_for_tts(text)
|
||||||
|
|
||||||
logger.debug(f"{self}: sanitized text: {text}")
|
logger.debug(f"{self}: sanitized text: {text}")
|
||||||
if not text:
|
if not text or not any(c.isalnum() for c in text):
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -499,6 +503,7 @@ class NvidiaSageMakerWebsocketTTSService(InterruptibleTTSService):
|
|||||||
assert self._client is not None
|
assert self._client is not None
|
||||||
await self._client.send_json({"type": "input_text.append", "text": text})
|
await self._client.send_json({"type": "input_text.append", "text": text})
|
||||||
await self._client.send_json({"type": "input_text.commit"})
|
await self._client.send_json({"type": "input_text.commit"})
|
||||||
|
await self.start_tts_usage_metrics(text)
|
||||||
yield None
|
yield None
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"{self}: TTS error: {e}")
|
logger.error(f"{self}: TTS error: {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user