from typing import Iterator
from sttts.api.message import Message, LlmMessageType
from sttts.api.model import OutputFilter
class SpeechFeedbackGenerator(OutputFilter):
"""
Say the keywords or names of certain internal messages.
"""
@classmethod
def _to_utterance(cls, message: Message[LlmMessageType]) -> Message[LlmMessageType]:
return Message(LlmMessageType.Utterance, message.data or message.msg.value or message.msg.name)
def accept(self, message: Message[LlmMessageType]) -> Iterator[Message[LlmMessageType]]:
if message.msg in (LlmMessageType.Start, LlmMessageType.FeedbackNeg):
yield message
yield self._to_utterance(message)
elif message.msg in (LlmMessageType.Stop, LlmMessageType.FeedbackPos):
yield self._to_utterance(message)
yield message
else:
yield message
def generate(self, message: Message[LlmMessageType]) -> Iterator[bytes]:
return
yield