Merge pull request #3813 from pipecat-ai/mb/fix-stt-ttfb
Fix STT TTFB metrics for Soniox and AWS Transcribe
This commit is contained in:
1
changelog/3813.fixed.md
Normal file
1
changelog/3813.fixed.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
- Fixed STT TTFB metrics not being reported for `SonioxSTTService` and `AWSTranscribeSTTService` due to missing `can_generate_metrics()` override.
|
||||||
@@ -126,6 +126,14 @@ class AWSTranscribeSTTService(WebsocketSTTService):
|
|||||||
|
|
||||||
self._receive_task = None
|
self._receive_task = None
|
||||||
|
|
||||||
|
def can_generate_metrics(self) -> bool:
|
||||||
|
"""Check if this service can generate processing metrics.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
True, as AWS Transcribe STT supports metrics generation.
|
||||||
|
"""
|
||||||
|
return True
|
||||||
|
|
||||||
def get_service_encoding(self, encoding: str) -> str:
|
def get_service_encoding(self, encoding: str) -> str:
|
||||||
"""Convert internal encoding format to AWS Transcribe format.
|
"""Convert internal encoding format to AWS Transcribe format.
|
||||||
|
|
||||||
|
|||||||
@@ -208,6 +208,14 @@ class SonioxSTTService(WebsocketSTTService):
|
|||||||
|
|
||||||
self._receive_task = None
|
self._receive_task = None
|
||||||
|
|
||||||
|
def can_generate_metrics(self) -> bool:
|
||||||
|
"""Check if this service can generate processing metrics.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
True, as Soniox STT supports metrics generation.
|
||||||
|
"""
|
||||||
|
return True
|
||||||
|
|
||||||
async def start(self, frame: StartFrame):
|
async def start(self, frame: StartFrame):
|
||||||
"""Start the Soniox STT websocket connection.
|
"""Start the Soniox STT websocket connection.
|
||||||
|
|
||||||
@@ -293,10 +301,8 @@ class SonioxSTTService(WebsocketSTTService):
|
|||||||
Yields:
|
Yields:
|
||||||
Frame: None (transcription results come via WebSocket callbacks).
|
Frame: None (transcription results come via WebSocket callbacks).
|
||||||
"""
|
"""
|
||||||
await self.start_processing_metrics()
|
|
||||||
if self._websocket and self._websocket.state is State.OPEN:
|
if self._websocket and self._websocket.state is State.OPEN:
|
||||||
await self._websocket.send(audio)
|
await self._websocket.send(audio)
|
||||||
await self.stop_processing_metrics()
|
|
||||||
|
|
||||||
yield None
|
yield None
|
||||||
|
|
||||||
@@ -477,6 +483,8 @@ class SonioxSTTService(WebsocketSTTService):
|
|||||||
# the rest will be sent as interim tokens (even final tokens).
|
# the rest will be sent as interim tokens (even final tokens).
|
||||||
await send_endpoint_transcript()
|
await send_endpoint_transcript()
|
||||||
else:
|
else:
|
||||||
|
if not self._final_transcription_buffer:
|
||||||
|
await self.start_processing_metrics()
|
||||||
self._final_transcription_buffer.append(token)
|
self._final_transcription_buffer.append(token)
|
||||||
else:
|
else:
|
||||||
non_final_transcription.append(token)
|
non_final_transcription.append(token)
|
||||||
|
|||||||
Reference in New Issue
Block a user