[index-tts]音频越长越容易出错?

2025-10-28 593 views
6

测试了如下的两句

七巷一个漆匠,西巷一个锡匠。  
  
七巷漆匠用了西巷锡匠的锡,  西巷锡匠拿了七巷漆匠的漆,  七巷漆匠气西巷锡匠用了漆,  西巷锡匠讥七巷漆匠拿了锡越长好像越容易出错??西巷锡匠讥七巷漆匠拿了锡越长好像越容易出错??西巷锡匠讥七巷漆匠拿了锡越长好像越容易出错??

其中第一句没问题,测试多次可以生成, 第二句时发现,字符越长时,某个地方越容易报错. 测试环境 ubuntu 22 x64 ,cpu/rocm均出现此问题

出现异常代码位置 https://github.com/index-tts/index-tts/blob/009428b62dc60b9d7bfdddd1641d51df9c2afa80/indextts/infer_v2.py#L545-L559 此处

cat_condition = torch.cat([prompt_condition, cond], dim=1)

好像是第二个向量的维度有问题 报错

Traceback (most recent call last):
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
    return await self.app(scope, receive, send)
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 186, in __call__
    raise exc
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 164, in __call__
    await self.app(scope, receive, _send)
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/starlette/routing.py", line 716, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/starlette/routing.py", line 736, in app
    await route.handle(scope, receive, send)
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/starlette/routing.py", line 290, in handle
    await self.app(scope, receive, send)
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/starlette/routing.py", line 78, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/starlette/routing.py", line 75, in app
    response = await f(request)
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/fastapi/routing.py", line 302, in app
    raw_response = await run_endpoint_function(
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/fastapi/routing.py", line 213, in run_endpoint_function
    return await dependant.call(**values)
  File "/home/chen/shb-data/pythonAddon/lib/main.py", line 43, in text2speechV2
    await indexTTS.text2SpeechV2(item.audioPath, item.text, item.options.sentence['max_text_tokens_per_segment'], item.options.generation.model_dump(), item.emo.model_dump(), item.output, item.verbose, item.interval_silence)
  File "/home/chen/shb-data/pythonAddon/lib/tts/indextts.py", line 48, in text2SpeechV2
    result = self.ttsV2.infer(
  File "/home/chen/shb-data/pythonAddon/lib/.venv/lib/python3.10/site-packages/indextts/infer_v2.py", line 546, in infer
    cat_condition = torch.cat([prompt_condition, cond], dim=1)
RuntimeError: Sizes of tensors must match except in dimension 1. Expected size 1 but got size 2 for tensor number 1 in the list.

由于测试时加了很多调试,所以一会会搞一个纯净的环境再次测试.届时没问题的话会关闭,有问题的话会进行二次确认

回答

2

已找到问题 max_mel_tokens参数过小时会发生上述问题,比如600 但是注释为生成Token最大数量,过小导致音频被截断并没有提到会报错,请问这里的报错是应该自己调整参数来适应?还是应该进行某种修复或者提示?