Emit a transcription callback when receiving a CancelFrame, update examples accordingly
This commit is contained in:
@@ -16,8 +16,7 @@ from runner import configure
|
||||
|
||||
from pipecat.audio.vad.silero import SileroVADAnalyzer
|
||||
from pipecat.frames.frames import (
|
||||
EndFrame,
|
||||
StartInterruptionFrame,
|
||||
CancelFrame,
|
||||
TranscriptionMessage,
|
||||
TranscriptionUpdateFrame,
|
||||
)
|
||||
@@ -170,10 +169,8 @@ async def main():
|
||||
|
||||
@transport.event_handler("on_participant_left")
|
||||
async def on_participant_left(transport, participant, reason):
|
||||
# Interrupt the TTS to stop the TTS generation
|
||||
await task.queue_frame(StartInterruptionFrame())
|
||||
# Stop the gracefully stop the pipeline
|
||||
await task.queue_frame(EndFrame())
|
||||
# Stop the pipeline immediately when the participant leaves
|
||||
await task.queue_frame(CancelFrame())
|
||||
|
||||
runner = PipelineRunner()
|
||||
|
||||
|
||||
@@ -16,8 +16,7 @@ from runner import configure
|
||||
|
||||
from pipecat.audio.vad.silero import SileroVADAnalyzer
|
||||
from pipecat.frames.frames import (
|
||||
EndFrame,
|
||||
StartInterruptionFrame,
|
||||
CancelFrame,
|
||||
TranscriptionMessage,
|
||||
TranscriptionUpdateFrame,
|
||||
)
|
||||
@@ -170,10 +169,8 @@ async def main():
|
||||
|
||||
@transport.event_handler("on_participant_left")
|
||||
async def on_participant_left(transport, participant, reason):
|
||||
# Interrupt the TTS to stop the TTS generation
|
||||
await task.queue_frame(StartInterruptionFrame())
|
||||
# Stop the gracefully stop the pipeline
|
||||
await task.queue_frame(EndFrame())
|
||||
# Stop the pipeline immediately when the participant leaves
|
||||
await task.queue_frame(CancelFrame())
|
||||
|
||||
runner = PipelineRunner()
|
||||
|
||||
|
||||
@@ -16,8 +16,7 @@ from runner import configure
|
||||
|
||||
from pipecat.audio.vad.silero import SileroVADAnalyzer
|
||||
from pipecat.frames.frames import (
|
||||
EndFrame,
|
||||
StartInterruptionFrame,
|
||||
CancelFrame,
|
||||
TranscriptionMessage,
|
||||
TranscriptionUpdateFrame,
|
||||
)
|
||||
@@ -180,10 +179,8 @@ async def main():
|
||||
|
||||
@transport.event_handler("on_participant_left")
|
||||
async def on_participant_left(transport, participant, reason):
|
||||
# Interrupt the TTS to stop the TTS generation
|
||||
await task.queue_frame(StartInterruptionFrame())
|
||||
# Stop the gracefully stop the pipeline
|
||||
await task.queue_frame(EndFrame())
|
||||
# Stop the pipeline immediately when the participant leaves
|
||||
await task.queue_frame(CancelFrame())
|
||||
|
||||
runner = PipelineRunner()
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ from loguru import logger
|
||||
|
||||
from pipecat.frames.frames import (
|
||||
BotStoppedSpeakingFrame,
|
||||
CancelFrame,
|
||||
EndFrame,
|
||||
Frame,
|
||||
StartInterruptionFrame,
|
||||
@@ -115,6 +116,7 @@ class AssistantTranscriptProcessor(BaseTranscriptProcessor):
|
||||
- BotStoppedSpeakingFrame: Completes current utterance
|
||||
- StartInterruptionFrame: Completes current utterance due to interruption
|
||||
- EndFrame: Completes current utterance at pipeline end
|
||||
- CancelFrame: Completes current utterance due to cancellation
|
||||
|
||||
Args:
|
||||
frame: Input frame to process
|
||||
@@ -129,7 +131,7 @@ class AssistantTranscriptProcessor(BaseTranscriptProcessor):
|
||||
|
||||
self._current_text_parts.append(frame.text)
|
||||
|
||||
elif isinstance(frame, (BotStoppedSpeakingFrame, StartInterruptionFrame)):
|
||||
elif isinstance(frame, (BotStoppedSpeakingFrame, StartInterruptionFrame, CancelFrame)):
|
||||
# Emit accumulated text when bot finishes speaking or is interrupted
|
||||
await self._emit_aggregated_text()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user