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
相关产品推荐
相关产品推荐

