You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pyttsx3.speak()与带end=''的print语句存在输出延迟问题求助

问题原因与解决方案

问题本质

Python的print函数默认采用行缓冲机制,当指定end=''时,输出内容不会触发换行操作,导致内容暂存于输出缓冲区中,并未立即显示在终端。而pyttsx3.speak()是阻塞式函数,会占据主线程直到语音播报完成,此时缓冲区才会被自动刷新,因此所有打印内容会在播报结束后才一并出现。

解决方法

有两种简单可行的解决方式:

方法1:给print添加flush=True参数

直接在设置end=''的print语句中开启强制刷新:

import pyttsx3

print("第一句内容", end='', flush=True)
pyttsx3.speak("Hi")
print("第二句内容")

方法2:手动刷新输出缓冲区

通过sys.stdout.flush()主动触发缓冲区刷新:

import pyttsx3
import sys

print("第一句内容", end='')
sys.stdout.flush()
pyttsx3.speak("Hi")
print("第二句内容")

补充说明

当不指定end=''时,print默认会在输出末尾添加换行符\n,而换行符会自动触发缓冲区刷新,因此内容会立即打印,不会出现延迟问题。

内容的提问来源于stack exchange,提问作者eternal_white

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 19:42:03