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

pyttsx3为何忽略第三个输入?语音合成输出异常求助

解决pyttsx3朗读文本不完整及停顿问题

问题根源

你代码里的tts.say()用法错误:pyttsx3的say()方法第一个参数是要朗读的完整字符串,第二个参数是可选的语音名称(用于指定不同语音),不是追加的朗读文本。你把两段文本拆成两个参数传入,导致只有第一段被朗读,第二段被当成无效的语音名称忽略了。

正确写法:单条语句拼接完整文本

把所有要朗读的内容拼接成一个字符串,一次性传给say(),就能完整朗读:

elif "what is the weather" in query:
    replaced_temp = temp.replace('F', '')
    # 用f-string整合所有内容(Python3.6+支持)
    tts.say(f'In {g.city}, it is currently {replaced_temp}')
    tts.runAndWait()
    print("completed")

如果不适用f-string,也可以用字符串拼接:

tts.say('In ' + g.city + ', it is currently ' + replaced_temp)

解决多语句朗读停顿过长的问题

如果确实需要拆分多个朗读片段,不要每次say()后都调用runAndWait(),而是先把所有片段加入朗读队列,最后统一调用runAndWait(),这样语句间的停顿会大幅缩短:

elif "what is the weather" in query:
    replaced_temp = temp.replace('F', '')
    tts.say(f'In {g.city}')
    tts.say(f', it is currently {replaced_temp}')
    # 一次性执行队列中所有朗读任务
    tts.runAndWait()
    print("completed")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:35:20