From 3e1ec4a8ee58efed47de5fdae36fa7655116045b Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Mon, 6 Jan 2025 14:54:34 -0500 Subject: [PATCH] Added support for Google Journey TTS voices --- CHANGELOG.md | 8 +++++--- examples/foundational/07n-interruptible-google.py | 5 +++-- src/pipecat/services/google.py | 11 +++++++++-- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b20c280b5..fb080735d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,10 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -- Added new foundational examples for `LiveKitTransportLayer` - +### Added - - `29-livekit-audio-chat.py` - Supports both Audio to Audio and Text to Audio - chat pipelines. +- Added support for Google TTS Journey voices in `GoogleTTSService`. + +- Added `29-livekit-audio-chat.py`, as a new foundational examples for + `LiveKitTransportLayer`. ## [0.0.52] - 2024-12-24 diff --git a/examples/foundational/07n-interruptible-google.py b/examples/foundational/07n-interruptible-google.py index b6322d2b9..7b3b68f21 100644 --- a/examples/foundational/07n-interruptible-google.py +++ b/examples/foundational/07n-interruptible-google.py @@ -22,6 +22,7 @@ from pipecat.processors.aggregators.openai_llm_context import OpenAILLMContext from pipecat.services.deepgram import DeepgramSTTService from pipecat.services.google import GoogleTTSService from pipecat.services.openai import OpenAILLMService +from pipecat.transcriptions.language import Language from pipecat.transports.services.daily import DailyParams, DailyTransport load_dotenv(override=True) @@ -50,8 +51,8 @@ async def main(): stt = DeepgramSTTService(api_key=os.getenv("DEEPGRAM_API_KEY")) tts = GoogleTTSService( - voice_id="en-US-Neural2-J", - params=GoogleTTSService.InputParams(language="en-US", rate="1.05"), + voice_id="en-US-Journey-F", + params=GoogleTTSService.InputParams(language=Language.EN_US), ) llm = OpenAILLMService(api_key=os.getenv("OPENAI_API_KEY"), model="gpt-4o") diff --git a/src/pipecat/services/google.py b/src/pipecat/services/google.py index b52c1f6dc..244c6601f 100644 --- a/src/pipecat/services/google.py +++ b/src/pipecat/services/google.py @@ -865,8 +865,15 @@ class GoogleTTSService(TTSService): try: await self.start_ttfb_metrics() - ssml = self._construct_ssml(text) - synthesis_input = texttospeech_v1.SynthesisInput(ssml=ssml) + is_journey_voice = "journey" in self._voice_id.lower() + + # Create synthesis input based on voice_id + if is_journey_voice: + synthesis_input = texttospeech_v1.SynthesisInput(text=text) + else: + ssml = self._construct_ssml(text) + synthesis_input = texttospeech_v1.SynthesisInput(ssml=ssml) + voice = texttospeech_v1.VoiceSelectionParams( language_code=self._settings["language"], name=self._voice_id )