diff --git a/CHANGELOG.md b/CHANGELOG.md index 808fc9c49..485cfa590 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -83,8 +83,8 @@ async def on_audio_data(processor, audio, sample_rate, num_channels): delays. The sample rate of the provided sound files now need to match the sample rate of the output transport. -- All input frames (text, audio, image, etc.) are now system frames. This means - they are processed immediately by all processors instead of being queued +- Input frames (audio, image and transport messages) are now system frames. This + means they are processed immediately by all processors instead of being queued internally. - Expanded the transcriptions.language module to support a superset of diff --git a/src/pipecat/frames/frames.py b/src/pipecat/frames/frames.py index a42a6b7de..d3792f537 100644 --- a/src/pipecat/frames/frames.py +++ b/src/pipecat/frames/frames.py @@ -177,6 +177,35 @@ class TextFrame(DataFrame): return f"{self.name}(pts: {pts}, text: [{self.text}])" +@dataclass +class TranscriptionFrame(TextFrame): + """A text frame with transcription-specific data. Will be placed in the + transport's receive queue when a participant speaks. + + """ + + user_id: str + timestamp: str + language: Language | None = None + + def __str__(self): + return f"{self.name}(user: {self.user_id}, text: [{self.text}], language: {self.language}, timestamp: {self.timestamp})" + + +@dataclass +class InterimTranscriptionFrame(TextFrame): + """A text frame with interim transcription-specific data. Will be placed in + the transport's receive queue when a participant speaks.""" + + text: str + user_id: str + timestamp: str + language: Language | None = None + + def __str__(self): + return f"{self.name}(user: {self.user_id}, text: [{self.text}], language: {self.language}, timestamp: {self.timestamp})" + + @dataclass class LLMMessagesFrame(DataFrame): """A frame containing a list of LLM messages. Used to signal that an LLM @@ -441,36 +470,6 @@ class TransportMessageUrgentFrame(SystemFrame): return f"{self.name}(message: {self.message})" -@dataclass -class TranscriptionFrame(SystemFrame): - """A text frame with transcription-specific data. Will be placed in the - transport's receive queue when a participant speaks. - - """ - - text: str - user_id: str - timestamp: str - language: Language | None = None - - def __str__(self): - return f"{self.name}(user: {self.user_id}, text: [{self.text}], language: {self.language}, timestamp: {self.timestamp})" - - -@dataclass -class InterimTranscriptionFrame(SystemFrame): - """A text frame with interim transcription-specific data. Will be placed in - the transport's receive queue when a participant speaks.""" - - text: str - user_id: str - timestamp: str - language: Language | None = None - - def __str__(self): - return f"{self.name}(user: {self.user_id}, text: [{self.text}], language: {self.language}, timestamp: {self.timestamp})" - - @dataclass class UserImageRequestFrame(SystemFrame): """A frame user to request an image from the given user."""