lenML / Speech-AI-Forge

🍦 Speech-AI-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
710 stars 87 forks source link

[BUG:API] api生成语音时不时出现错误,导致内存溢出 #99

Open tuxiaoseng opened 3 months ago

tuxiaoseng commented 3 months ago

阅读 README.md 和 dependencies.md

检索 issue 和 discussion

检查 Forge 版本

Forge Commit 或者 Tag

1

Python 版本

3.10.8

PyTorch 版本

1

操作系统信息

linux

BUG 描述

并非一直出错,时不时出现

BUG 端点

/v1/tts

复现参数

并非一直出错,时不时批量报错后出现内存溢出

期望结果

解决异常

实际结果

并非一直出错,时不时批量报错后出现内存溢出

错误信息

modules.ChatTTS.ChatTTS.core - WARNING - regenerate in order to ensure non-empty
modules.ChatTTS.ChatTTS.core - WARNING - unexpected end at index [2]
modules.ChatTTS.ChatTTS.core - WARNING - regenerate in order to ensure non-empty
modules.ChatTTS.ChatTTS.core - WARNING - unexpected end at index [2]
modules.ChatTTS.ChatTTS.core - WARNING - regenerate in order to ensure non-empty
modules.ChatTTS.ChatTTS.core - WARNING - unexpected end at index [2]
ERROR - CUDA out of memory. Tried to allocate 2.00 MiB. GP
zhzLuke96 commented 3 months ago

具体什么prompt会触发,可以提供下吗

zhzLuke96 commented 3 months ago

refs https://github.com/2noise/ChatTTS/issues/511 https://github.com/2noise/ChatTTS/issues/543

其实这个逻辑是官方库修复引入的,forge之前都没有这个修复需求...

zhzLuke96 commented 3 months ago

fixed https://github.com/lenML/ChatTTS-Forge/commit/906f2f78cc4a71b59dcf83f4c7fea33e7a637127

暂时简单修复一下(至少不会无限循环),如果有更多issue详情可以继续提供,继续排查这个问题

tuxiaoseng commented 3 months ago

fixed 906f2f7

暂时简单修复一下(至少不会无限循环),如果有更多issue详情可以继续提供,继续排查这个问题

使用了这个解决方案问题依旧存在, 文本已列表形式在循环输出,时不时会出现这个问题。 /v1/tts?text={0}&style=narration-professional&spk=Bob&temperature=0.1&top_p=0.7&top_k=20&seed=42&format=mp3&bs=12&thr=100&eos=%5Blbreak%5D&enhance=false&denoise=true&speed=1&pitch=0&volume_gain=0&stream=false

print("prefix",prefix,"prompt1",prompt1,"prompt2",prompt2) 结果:prefix [oral_3] [speed_5] [break_3] prompt1 prompt2

文本参考 本讲主要讲授的内容是,从1978年党的十一届三中全会以后,到党的[uv_break]十八大召开之前,三十多年[uv_break]我们党领导改革开放和社会主义现代化建设的[uv_break]奋斗历程,

还有个额外的问题,生成wav格式出现空音频返回,音频有实际大小但是没有声音。

zhzLuke96 commented 3 months ago

fixed 906f2f7 暂时简单修复一下(至少不会无限循环),如果有更多issue详情可以继续提供,继续排查这个问题

使用了这个解决方案问题依旧存在, 文本已列表形式在循环输出,时不时会出现这个问题。 /v1/tts?text={0}&style=narration-professional&spk=Bob&temperature=0.1&top_p=0.7&top_k=20&seed=42&format=mp3&bs=12&thr=100&eos=%5Blbreak%5D&enhance=false&denoise=true&speed=1&pitch=0&volume_gain=0&stream=false

print("prefix",prefix,"prompt1",prompt1,"prompt2",prompt2) 结果:prefix [oral_3] [speed_5] [break_3] prompt1 prompt2

文本参考 本讲主要讲授的内容是,从1978年党的十一届三中全会以后,到党的[uv_break]十八大召开之前,三十多年[uv_break]我们党领导改革开放和社会主义现代化建设的[uv_break]奋斗历程,

还有个额外的问题,生成wav格式出现空音频返回,音频有实际大小但是没有声音。

fixed https://github.com/lenML/ChatTTS-Forge/commit/bfc37897eca494129d462473cdcb8ec899f00ba0

应该基本能解决问题

主要问题还是这个模型生成质量差... (并且如果有prefix或者prompt,可能导致质量进一步下降)

下面有几个建议减少触发错误生成:

  1. 提高 temperature,到 0.3 以上
  2. 增大 top_k 到 20 以上
  3. 上层服务检测到错误自动重试的时候,应该传递新的 seed 值
  4. 如果质量还是不行,建议不要使用 style,尝试自己调整 prefix prompt1 prompt2
AdamMayor2018 commented 2 months ago

我也出现了这个问题,我发现主要是在短句生成并且使用speed>0的时候出现。如果是10个字以内的短句,设置speed_0就不会出现这个问题。同理,十个字以上就正常多了。