From e102780a40f638879deb5a9c077809e3bdc9914a Mon Sep 17 00:00:00 2001 From: xiongyuyang <112962001+xiongyuyang@users.noreply.github.com> Date: Tue, 15 Sep 2026 20:17:56 +0800 Subject: [PATCH] fix: preserve case in GPT-SoVITS synthesis parameters --- .../provider/sources/gsv_selfhosted_source.py | 4 +++- tests/unit/test_gsv_selfhosted_source.py | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 tests/unit/test_gsv_selfhosted_source.py diff --git a/astrbot/core/provider/sources/gsv_selfhosted_source.py b/astrbot/core/provider/sources/gsv_selfhosted_source.py index f4cac0ce1e..ac11a93c7d 100644 --- a/astrbot/core/provider/sources/gsv_selfhosted_source.py +++ b/astrbot/core/provider/sources/gsv_selfhosted_source.py @@ -33,7 +33,9 @@ def __init__( # TTS 请求的默认参数,移除前缀gsv_ self.default_params: dict = { - key.removeprefix("gsv_"): str(value).lower() + key.removeprefix("gsv_"): ( + str(value).lower() if isinstance(value, bool) else str(value) + ) for key, value in provider_config.get("gsv_default_parms", {}).items() } self.timeout = provider_config.get("timeout", 60) diff --git a/tests/unit/test_gsv_selfhosted_source.py b/tests/unit/test_gsv_selfhosted_source.py new file mode 100644 index 0000000000..4e2c20ab07 --- /dev/null +++ b/tests/unit/test_gsv_selfhosted_source.py @@ -0,0 +1,24 @@ +import pytest + +import astrbot.api # noqa: F401 # Initialize API before provider adapters. +from astrbot.core.provider.sources.gsv_selfhosted_source import ProviderGSVTTS + + +@pytest.mark.parametrize( + ("key", "value", "expected"), + [ + ("ref_audio_path", "/Voices/Alice.WAV", "/Voices/Alice.WAV"), + ("prompt_text", "Hello NASA", "Hello NASA"), + ("streaming_mode", True, "true"), + ("parallel_infer", False, "false"), + ("top_k", 5, "5"), + ("speed_factor", 1.25, "1.25"), + ], +) +def test_synthesis_params_preserve_case_and_serialize_scalars(key, value, expected): + provider = ProviderGSVTTS({"gsv_default_parms": {f"gsv_{key}": value}}, {}) + + params = provider.build_synthesis_params("Read NASA aloud") + + assert params[key] == expected + assert params["text"] == "Read NASA aloud"