[TTS]Bug Report: PaddleSpeech 1.5.0 TTS CPU segfault on paddlepaddle 2.6.2

Author: ruibinCreated Jun 15, 2026Updated Jun 15, 2026
LabelsBugT2S

Environment

OS Linux (Docker, python:3.12-slim, Debian-based)
Python 3.12.7
paddlepaddle 2.6.1 + 2.6.2 (CPU, pip)
paddlespeech 1.5.0
模型 fastspeech2_csmsc + hifigan_csmsc, lang=zh
调用方式 进程内单例 TTSExecutor(), 多次调用 tts_engine(text=..., output=..., am=..., voc=...)

Reproduction

python
from paddlespeech.cli.tts import TTSExecutor
engine = TTSExecutor()

# 第一次通常成功
engine(text='Handshake', output='/tmp/t1.wav', am='fastspeech2_csmsc', voc='hifigan_csmsc', lang='zh')

# 后续中文调用 segfault(文本越长概率越高)
engine(text='欢迎参加会议!请仔细阅读会议内容。可以使用录音按钮表达观点,或直接提问交流。',
       output='/tmp/t2.wav', am='fastspeech2_csmsc', voc='hifigan_csmsc', lang='zh')
# → segmentation fault

Crash Log

/.../paddle/base/framework.py:3044: UserWarning: The Attr(force_cpu) of Op(fill_constant) will be deprecated in the future, please use 'device_guard' instead.
  warnings.warn(
zsh: segmentation fault  python app.py
/opt/anaconda3/lib/python3.12/multiprocessing/resource_tracker.py:254: UserWarning: resource_tracker: There appear to be 8 leaked semaphore objects to clean up at shutdown
  warnings.warn('resource_tracker: There appear to be %d '

Version Compatibility Matrix (tested)

paddlepaddle paddlespeech TTS 结果
2.6.2 1.5.0 segfault

Key Observations

  1. 非必现 — 首次 TTS 调用(短文本如 "Handshake")通常成功;后续中文调用(40+ 字)触发 segfault。
  2. 单例复用有关 — 进程内 TTSExecutor 复用多次后崩溃概率升高。
  3. 伴随现象 — 崩溃后 resource_tracker 报告 8 个泄漏信号量对象。

Additional: Long Text Embedding Crash on 3.0.0

paddlepaddle==3.0.0 修复了 segfault,但长文本(200+ 字符)会触发另一个崩溃:

APIError: TTS Error: (InvalidType) embedding(): argument (position 2) must be Value, 
but got EagerParamBase (at /paddle/paddle/fluid/pybind/eager_utils.cc:2190)

Workaround

升级到 paddlepaddle==3.0.0 可解决 segfault。

  • pip install paddlepaddle==3.0.0 paddlespeech==1.5.0

Related


Source: PaddlePaddle/PaddleSpeech