lenML / ChatTTS-Forge

🍦 ChatTTS-Forge is a project developed around TTS generation model, implementing an API Server and a Gradio-based WebUI.
https://huggingface.co/spaces/lenML/ChatTTS-Forge
GNU Affero General Public License v3.0
650 stars 82 forks source link

[BUG:WebUI] Error: AttributeError: '_io.BufferedRandom' object has no attribute 'endswith' #126

Closed 2open1024 closed 3 weeks ago

2open1024 commented 1 month ago

确认清单

Forge Commit 或者 Tag

main

Python 版本

python: 3.10.13

PyTorch 版本

torch: 2.3.1

操作系统信息

windows 10

浏览器信息

chrome

BUG 描述

音色抽卡,不能生成生成 speaker.pt 文件,生成的是json文件,并且在音色文件上传处也是失败的 微信截图_20240803042000 2

复现步骤

音色抽卡, speaker.pt 文件,然后在音色--->编辑器上传音色文件,提示音色信息错误,即不可以上传.pt 文件也不能上传.json文件

期望结果

1.修复功能 2.使用方法

实际结果

提示音色信息错误,即不可以上传.pt 文件也不能上传.json文 2

错误信息

Traceback (most recent call last):
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\queueing.py", line 388, in call_prediction
    output = await route_utils.call_process_api(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\route_utils.py", line 219, in call_process_api
    output = await app.get_blocks().process_api(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\blocks.py", line 1437, in process_api
    result = await self.call_function(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\blocks.py", line 1109, in call_function
    prediction = await anyio.to_thread.run_sync(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\anyio\to_thread.py", line 56, in run_sync
    return await get_async_backend().run_sync_in_worker_thread(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\anyio\_backends\_asyncio.py", line 2177, in run_sync_in_worker_thread
    return await future
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\anyio\_backends\_asyncio.py", line 859, in run
    result = context.run(func, *args)
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\utils.py", line 641, in wrapper
    response = f(*args, **kwargs)
  File "F:\AI\ChatTTS-Forge\modules\webui\speaker\speaker_editor.py", line 130, in spk_file_change
    spk: TTSSpeaker = TTSSpeaker.from_file(spk_file)
  File "F:\AI\ChatTTS-Forge\modules\core\spk\TTSSpeaker.py", line 120, in from_file
    if path.endswith(".spkv1.json"):
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\tempfile.py", line 478, in __getattr__
    a = getattr(file, name)
AttributeError: '_io.BufferedRandom' object has no attribute 'endswith'
Traceback (most recent call last):
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\queueing.py", line 388, in call_prediction
    output = await route_utils.call_process_api(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\route_utils.py", line 219, in call_process_api
    output = await app.get_blocks().process_api(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\blocks.py", line 1437, in process_api
    result = await self.call_function(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\blocks.py", line 1109, in call_function
    prediction = await anyio.to_thread.run_sync(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\anyio\to_thread.py", line 56, in run_sync
    return await get_async_backend().run_sync_in_worker_thread(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\anyio\_backends\_asyncio.py", line 2177, in run_sync_in_worker_thread
    return await future
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\anyio\_backends\_asyncio.py", line 859, in run
    result = context.run(func, *args)
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\utils.py", line 641, in wrapper
    response = f(*args, **kwargs)
  File "F:\AI\ChatTTS-Forge\modules\webui\speaker\speaker_editor.py", line 130, in spk_file_change
    spk: TTSSpeaker = TTSSpeaker.from_file(spk_file)
  File "F:\AI\ChatTTS-Forge\modules\core\spk\TTSSpeaker.py", line 120, in from_file
    if path.endswith(".spkv1.json"):
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\tempfile.py", line 478, in __getattr__
    a = getattr(file, name)
AttributeError: '_io.BufferedRandom' object has no attribute 'endswith'
Traceback (most recent call last):
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\queueing.py", line 388, in call_prediction
    output = await route_utils.call_process_api(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\route_utils.py", line 219, in call_process_api
    output = await app.get_blocks().process_api(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\blocks.py", line 1437, in process_api
    result = await self.call_function(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\blocks.py", line 1109, in call_function
    prediction = await anyio.to_thread.run_sync(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\anyio\to_thread.py", line 56, in run_sync
    return await get_async_backend().run_sync_in_worker_thread(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\anyio\_backends\_asyncio.py", line 2177, in run_sync_in_worker_thread
    return await future
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\anyio\_backends\_asyncio.py", line 859, in run
    result = context.run(func, *args)
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\utils.py", line 641, in wrapper
    response = f(*args, **kwargs)
  File "F:\AI\ChatTTS-Forge\modules\webui\speaker\speaker_editor.py", line 130, in spk_file_change
    spk: TTSSpeaker = TTSSpeaker.from_file(spk_file)
  File "F:\AI\ChatTTS-Forge\modules\core\spk\TTSSpeaker.py", line 120, in from_file
    if path.endswith(".spkv1.json"):
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\tempfile.py", line 478, in __getattr__
    a = getattr(file, name)
AttributeError: '_io.BufferedRandom' object has no attribute 'endswith'
Traceback (most recent call last):
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\queueing.py", line 388, in call_prediction
    output = await route_utils.call_process_api(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\route_utils.py", line 219, in call_process_api
    output = await app.get_blocks().process_api(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\blocks.py", line 1437, in process_api
    result = await self.call_function(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\blocks.py", line 1109, in call_function
    prediction = await anyio.to_thread.run_sync(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\anyio\to_thread.py", line 56, in run_sync
    return await get_async_backend().run_sync_in_worker_thread(
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\anyio\_backends\_asyncio.py", line 2177, in run_sync_in_worker_thread
    return await future
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\anyio\_backends\_asyncio.py", line 859, in run
    result = context.run(func, *args)
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\site-packages\gradio\utils.py", line 641, in wrapper
    response = f(*args, **kwargs)
  File "F:\AI\ChatTTS-Forge\modules\webui\speaker\speaker_editor.py", line 130, in spk_file_change
    spk: TTSSpeaker = TTSSpeaker.from_file(spk_file)
  File "F:\AI\ChatTTS-Forge\modules\core\spk\TTSSpeaker.py", line 120, in from_file
    if path.endswith(".spkv1.json"):
  File "D:\ProgramData\miniconda3\envs\tts-forge\lib\tempfile.py", line 478, in __getattr__
    a = getattr(file, name)
AttributeError: '_io.BufferedRandom' object has no attribute 'endswith'
zhzLuke96 commented 1 month ago

gradio 版本太低,试试更新 gradio 版本到 4.31 以上