From 121e6d215737446fc154c2047c436c822590e2be Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Fri, 11 Apr 2025 10:18:29 -0400 Subject: [PATCH] Add media resolution support to GeminiMultimodalLiveLLMService --- .../services/gemini_multimodal_live/gemini.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/pipecat/services/gemini_multimodal_live/gemini.py b/src/pipecat/services/gemini_multimodal_live/gemini.py index 44057dc62..52b78e560 100644 --- a/src/pipecat/services/gemini_multimodal_live/gemini.py +++ b/src/pipecat/services/gemini_multimodal_live/gemini.py @@ -236,6 +236,15 @@ class GeminiMultimodalModalities(Enum): AUDIO = "AUDIO" +class GeminiMediaResolution(str, Enum): + """Media resolution options for Gemini Multimodal Live.""" + + UNSPECIFIED = "MEDIA_RESOLUTION_UNSPECIFIED" # Use default + LOW = "MEDIA_RESOLUTION_LOW" # 64 tokens + MEDIUM = "MEDIA_RESOLUTION_MEDIUM" # 256 tokens + HIGH = "MEDIA_RESOLUTION_HIGH" # Zoomed reframing with 256 tokens + + class InputParams(BaseModel): frequency_penalty: Optional[float] = Field(default=None, ge=0.0, le=2.0) max_tokens: Optional[int] = Field(default=4096, ge=1) @@ -247,6 +256,9 @@ class InputParams(BaseModel): default=GeminiMultimodalModalities.AUDIO ) language: Optional[Language] = Field(default=Language.EN_US) + media_resolution: Optional[GeminiMediaResolution] = Field( + default=GeminiMediaResolution.UNSPECIFIED + ) extra: Optional[Dict[str, Any]] = Field(default_factory=dict) @@ -319,6 +331,7 @@ class GeminiMultimodalLiveLLMService(LLMService): "top_p": params.top_p, "modalities": params.modalities, "language": self._language_code, + "media_resolution": params.media_resolution, "extra": params.extra if isinstance(params.extra, dict) else {}, } @@ -518,6 +531,7 @@ class GeminiMultimodalLiveLLMService(LLMService): }, "language_code": self._settings["language"], }, + "media_resolution": self._settings["media_resolution"].value, }, "output_audio_transcription": {}, },