From a8eff6fbbf490f0cfd7a0fd261a2ba09154efe52 Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Wed, 25 Mar 2026 10:20:36 -0400 Subject: [PATCH 1/3] Downgrade unrecognized language string log from warning to debug Service-specific language strings like Deepgram's "multi" are valid pass-through values, not issues worth warning about. --- src/pipecat/services/stt_service.py | 4 ++-- src/pipecat/services/tts_service.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pipecat/services/stt_service.py b/src/pipecat/services/stt_service.py index ecfec7b9b..51afedd4a 100644 --- a/src/pipecat/services/stt_service.py +++ b/src/pipecat/services/stt_service.py @@ -132,7 +132,7 @@ class STTService(AIService): try: self._settings.language = Language(self._settings.language) except ValueError: - logger.warning( + logger.debug( f"Language string '{self._settings.language}' is not a recognized " f"Language code. It will be passed to the service as-is." ) @@ -316,7 +316,7 @@ class STTService(AIService): try: delta.language = Language(delta.language) except ValueError: - logger.warning( + logger.debug( f"Language string '{delta.language}' is not a recognized " f"Language code. It will be passed to the service as-is." ) diff --git a/src/pipecat/services/tts_service.py b/src/pipecat/services/tts_service.py index cc1c812a9..da3164f20 100644 --- a/src/pipecat/services/tts_service.py +++ b/src/pipecat/services/tts_service.py @@ -257,7 +257,7 @@ class TTSService(AIService): try: self._settings.language = Language(self._settings.language) except ValueError: - logger.warning( + logger.debug( f"Language string '{self._settings.language}' is not a recognized " f"Language code. It will be passed to the service as-is." ) @@ -622,7 +622,7 @@ class TTSService(AIService): try: delta.language = Language(delta.language) except ValueError: - logger.warning( + logger.debug( f"Language string '{delta.language}' is not a recognized " f"Language code. It will be passed to the service as-is." ) From 7bc8b89a540ba6d22be6095ae0493be5f58e6ce2 Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Wed, 25 Mar 2026 10:21:44 -0400 Subject: [PATCH 2/3] Add changelog for #4137 --- changelog/4137.changed.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog/4137.changed.md diff --git a/changelog/4137.changed.md b/changelog/4137.changed.md new file mode 100644 index 000000000..a0b9f2aae --- /dev/null +++ b/changelog/4137.changed.md @@ -0,0 +1 @@ +- Unrecognized language strings (e.g. Deepgram's `"multi"`) no longer produce a warning at startup. The log message has been downgraded to debug level since these are valid service-specific values that are passed through correctly. From f470ff193e6d46136fdec314f123a4ceb7846ac2 Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Wed, 25 Mar 2026 10:26:10 -0400 Subject: [PATCH 3/3] Update language tests to expect debug instead of warning --- tests/test_service_language.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/test_service_language.py b/tests/test_service_language.py index 6ac23c823..b4a3daaa9 100644 --- a/tests/test_service_language.py +++ b/tests/test_service_language.py @@ -102,12 +102,12 @@ class TestTTSLanguageInit: assert svc._settings.language == "en" def test_raw_string_unrecognized(self): - """Unrecognized raw string logs a warning and is passed through as-is.""" + """Unrecognized raw string logs a debug message and is passed through as-is.""" with patch("pipecat.services.tts_service.logger") as mock_logger: svc = _TestTTSService(settings=_TestTTSService.Settings(language="klingon")) assert svc._settings.language == "klingon" - mock_logger.warning.assert_called_once() - assert "klingon" in mock_logger.warning.call_args[0][0] + mock_logger.debug.assert_called_once() + assert "klingon" in mock_logger.debug.call_args[0][0] def test_language_none(self): """None language is left as None.""" @@ -144,12 +144,12 @@ class TestSTTLanguageInit: assert svc._settings.language == "de" def test_raw_string_unrecognized(self): - """Unrecognized raw string logs a warning and is passed through as-is.""" + """Unrecognized raw string logs a debug message and is passed through as-is.""" with patch("pipecat.services.stt_service.logger") as mock_logger: svc = _TestSTTService(settings=_TestSTTService.Settings(language="klingon")) assert svc._settings.language == "klingon" - mock_logger.warning.assert_called_once() - assert "klingon" in mock_logger.warning.call_args[0][0] + mock_logger.debug.assert_called_once() + assert "klingon" in mock_logger.debug.call_args[0][0] def test_language_none(self): """None language is left as None.""" @@ -195,13 +195,13 @@ class TestTTSLanguageUpdate: @pytest.mark.asyncio async def test_update_raw_string_unrecognized(self): - """Updating with unrecognized string logs warning and passes through.""" + """Updating with unrecognized string logs debug message and passes through.""" svc = _TestTTSService(settings=_TestTTSService.Settings(language=None)) with patch("pipecat.services.tts_service.logger") as mock_logger: await svc._update_settings(_TestTTSService.Settings(language="klingon")) assert svc._settings.language == "klingon" - mock_logger.warning.assert_called_once() - assert "klingon" in mock_logger.warning.call_args[0][0] + mock_logger.debug.assert_called_once() + assert "klingon" in mock_logger.debug.call_args[0][0] # --------------------------------------------------------------------------- @@ -242,10 +242,10 @@ class TestSTTLanguageUpdate: @pytest.mark.asyncio async def test_update_raw_string_unrecognized(self): - """Updating with unrecognized string logs warning and passes through.""" + """Updating with unrecognized string logs debug message and passes through.""" svc = _TestSTTService(settings=_TestSTTService.Settings(language=None)) with patch("pipecat.services.stt_service.logger") as mock_logger: await svc._update_settings(_TestSTTService.Settings(language="klingon")) assert svc._settings.language == "klingon" - mock_logger.warning.assert_called_once() - assert "klingon" in mock_logger.warning.call_args[0][0] + mock_logger.debug.assert_called_once() + assert "klingon" in mock_logger.debug.call_args[0][0]