Added sound effect example (#18)

* added sound effect example

* added dialout to this branch too

* fixup

* fixup for more dialout testing

* cleanup
This commit is contained in:
chadbailey59
2024-02-01 10:26:50 -06:00
committed by GitHub
parent 4e9586595d
commit 0d96f91cde
20 changed files with 354 additions and 6 deletions

View File

@@ -18,6 +18,8 @@ class StartStreamQueueFrame(ControlQueueFrame):
class EndStreamQueueFrame(ControlQueueFrame):
pass
class LLMResponseEndQueueFrame(QueueFrame):
pass
@dataclass()
class AudioQueueFrame(QueueFrame):

View File

@@ -9,6 +9,7 @@ from dailyai.queue_frame import (
EndStreamQueueFrame,
ImageQueueFrame,
LLMMessagesQueueFrame,
LLMResponseEndQueueFrame,
QueueFrame,
TextQueueFrame,
)
@@ -89,6 +90,9 @@ class LLMService(AIService):
if isinstance(frame, LLMMessagesQueueFrame):
async for text_chunk in self.run_llm_async(frame.messages):
yield TextQueueFrame(text_chunk)
yield LLMResponseEndQueueFrame()
else:
yield frame
class TTSService(AIService):
@@ -186,6 +190,18 @@ class STTService(AIService):
text = await self.run_stt(content)
yield TextQueueFrame(text)
class FrameLogger(AIService):
def __init__(self, prefix="Frame", **kwargs):
super().__init__(**kwargs)
self.prefix = prefix
async def process_frame(self, frame: QueueFrame) -> AsyncGenerator[QueueFrame, None]:
if isinstance(frame, (AudioQueueFrame, ImageQueueFrame)):
self.logger.info(f"{self.prefix}: {type(frame)}")
else:
print(f"{self.prefix}: {frame}")
yield frame
@dataclass
class AIServiceConfig:

View File

@@ -305,6 +305,12 @@ class DailyTransportService(EventHandler):
t = Thread(target=self._receive_audio, daemon=True)
t.start()
def dialout(self, number):
self.client.start_dialout({"phoneNumber": number})
def start_recording(self):
self.client.start_recording()
def on_error(self, error):
self._logger.error(f"on_error: {error}")