From f20f17c2c06c8cf2f99fcf66c922a881bbcc34a6 Mon Sep 17 00:00:00 2001 From: Karasukaigan <80465610+Karasukaigan@users.noreply.github.com> Date: Fri, 16 May 2025 17:58:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=80=9A=E8=BF=87Gradio=20AP?= =?UTF-8?q?I=E8=B0=83=E7=94=A8=E5=90=88=E6=88=90=E8=AF=AD=E9=9F=B3?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=97=B6=E5=87=BA=E7=8E=B0=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复通过Gradio API调用合成语音接口`/get_tts_wav`时出现参数类型错误的问题。 ## 报错信息 TypeError: unsupported operand type(s) for /: 'int' and 'str' ## 错误原因 `inference_webui.py`的`get_tts_wav`里并未对传入`sample_steps`的类型进行判断。而由于Gradio在自动生成接口文档时会将`gr.Radio`传入的值判定为字符串,因此如果有用户参考WebUI下面”通过 API 使用“里的说明调用`/get_tts_wav`时,则会因为文档错误导致传参类型错误,从而导致最终的报错。 ## 修复方式 通过在`get_tts_wav`开头部分添加对`sample_steps`格式的转换(统一转为int)来解决传参类型错误的问题。 --- GPT_SoVITS/inference_webui.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/GPT_SoVITS/inference_webui.py b/GPT_SoVITS/inference_webui.py index 4bee27cd..7bf93087 100644 --- a/GPT_SoVITS/inference_webui.py +++ b/GPT_SoVITS/inference_webui.py @@ -766,6 +766,12 @@ def get_tts_wav( if not ref_free: phones1, bert1, norm_text1 = get_phones_and_bert(prompt_text, prompt_language, version) + # 确保sample_steps为int + try: + sample_steps = int(sample_steps) + except (TypeError, ValueError): + sample_steps = 8 + for i_text, text in enumerate(texts): # 解决输入目标文本的空行导致报错的问题 if len(text.strip()) == 0: