From 706c00d89704f6797e464df9de7c5587bdffd719 Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Thu, 26 Sep 2024 22:13:37 -0400 Subject: [PATCH] Code review feedback --- CHANGELOG.md | 2 +- examples/foundational/07m-interruptible-aws.py | 6 +++++- src/pipecat/services/aws.py | 8 +++++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7a525c82..474f06989 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Added AWS Polly TTS support. +- Added AWS Polly TTS support and `07m-interruptible-aws.py` as an example. - Added InputParams to Azure TTS service. diff --git a/examples/foundational/07m-interruptible-aws.py b/examples/foundational/07m-interruptible-aws.py index 891ffd381..69d4b84c1 100644 --- a/examples/foundational/07m-interruptible-aws.py +++ b/examples/foundational/07m-interruptible-aws.py @@ -22,6 +22,7 @@ from pipecat.processors.aggregators.llm_response import ( LLMUserResponseAggregator, ) from pipecat.services.aws import AWSTTSService +from pipecat.services.deepgram import DeepgramSTTService from pipecat.services.openai import OpenAILLMService from pipecat.transports.services.daily import DailyParams, DailyTransport from pipecat.vad.silero import SileroVADAnalyzer @@ -43,12 +44,14 @@ async def main(): DailyParams( audio_out_enabled=True, audio_out_sample_rate=16000, - transcription_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), + vad_audio_passthrough=True, ), ) + stt = DeepgramSTTService(api_key=os.getenv("DEEPGRAM_API_KEY")) + tts = AWSTTSService( api_key=os.getenv("AWS_SECRET_ACCESS_KEY"), aws_access_key_id=os.getenv("AWS_ACCESS_KEY_ID"), @@ -72,6 +75,7 @@ async def main(): pipeline = Pipeline( [ transport.input(), # Transport user input + stt, # STT tma_in, # User responses llm, # LLM tts, # TTS diff --git a/src/pipecat/services/aws.py b/src/pipecat/services/aws.py index b32ab05f0..f3b2766bc 100644 --- a/src/pipecat/services/aws.py +++ b/src/pipecat/services/aws.py @@ -9,6 +9,7 @@ from loguru import logger from pydantic import BaseModel from pipecat.frames.frames import ( + ErrorFrame, Frame, TTSAudioRawFrame, TTSStartedFrame, @@ -152,7 +153,7 @@ class AWSTTSService(TTSService): if "AudioStream" in response: with response["AudioStream"] as stream: audio_data = stream.read() - chunk_size = 4096 # You can adjust this value + chunk_size = 8192 for i in range(0, len(audio_data), chunk_size): chunk = audio_data[i : i + chunk_size] if len(chunk) > 0: @@ -164,3 +165,8 @@ class AWSTTSService(TTSService): except (BotoCoreError, ClientError) as error: logger.exception(f"{self} error generating TTS: {error}") + error_message = f"AWS Polly TTS error: {str(error)}" + yield ErrorFrame(error=error_message) + + finally: + await self.push_frame(TTSStoppedFrame())