【python学习笔记】pyttsx3库疑似只播报一次语音

最近写了个简单的python程序用到了pyttsx3库,但是发现似乎这个库在很多时候只会播报第一句语音。专门设置了支持中文的语音包也不行。

例如下方的程序,我执行后发现,他只播报了"你好,欢迎使用Python进行语音合成。",还有"这是第一句。"

python 复制代码
import pyttsx3
engine = pyttsx3.init()
# 获取所有声音
voices= engine.getProperty('voices')
#设置中文语音(根据实际输出选择合适的id)
for voice in voices:
    if'zh' in voice.languages:
        engine.setProperty('voice',voice.id)
        break
text="你好,欢迎使用Python进行语音合成。"
engine.say(text)
engine.runAndWait()
texts = ["这是第一句。", "这是第二句。"]
for text in texts:
    engine.say(text)
engine.runAndWait()

之后询问AI得知,pyttsx3 的 runAndWait() 是阻塞调用,但如果引擎在第一次调用后未正确重置,第二次调用可能因状态异常而提前返回或静默失败。

另外多线程环境下,引擎初始化或语音队列操作也可能导致问题。

目前试了可用的解决办法是换用pywin32库,同样支持可选中文语音。

python 复制代码
# 设置中文语音
voices = speaker.GetVoices()
for voice in voices:
    if "zh" in voice.GetDescription():
        speaker.Voice = voice
        break
相关推荐
RSABLOCKCHAIN3 小时前
AI Agents in LangGraph-2
人工智能·python
WA内核拾荒者4 小时前
WhatsApp 账号异常检测的自动化告警系统设计
数据库·python·自动化
码流怪侠5 小时前
【GitHub】Bend:让 GPU 并行编程像写 Python 一样简单
python·github
2401_894915536 小时前
GEO 搜索优化完整源码从零部署:环境配置、集群搭建全流程
开发语言·python·tcp/ip·算法·unity
MartinYeung56 小时前
[论文学习]自主性如何重塑个性化对LLM智能体隐私关切与信任的影响
人工智能·学习
FellAveal7 小时前
【Go语言入门学习笔记】Part18.工作池与WaitGroup(也即协程池)
笔记·学习·golang
zhiSiBuYu05177 小时前
Python3 模块开发与应用实战指南
python
xqqxqxxq7 小时前
Java Socket 多人聊天室(私聊+群聊)技术笔记(V4版本)
java·网络·笔记
菜鸟‍7 小时前
【论文学习】MICCAI 2024 || SGSeg:通过自引导机制实现胸部X光片语言引导分割的无文本推理
人工智能·深度学习·学习