带有打印功能的pyttsx3错误吗?

时间:2018-12-19 14:28:43

标签: python debugging printing pyttsx

这是一个简单的文本到语音程序。它所要做的就是接收一个句子和一个说话者(不是来自用户),并在应该说该单词时打印该单词。但是问题出在打印功能(标有# /的打印功能)上。执行此程序后,我想单行打印句子。但是当print函数(标记为# /)是参数print(“”,end =“”)时,它首先说出内容,然后打印整行。

源代码:-

import pyttsx;
    def onStar(name):
        print(name+":-",end="")
def onWord(name, location, length):
    for x in range(location,length+location+1) :
        print(a[x],end="")

    print()    #*/      The function I am talking about.


#case1(works correctly)                  case2(does not work correctly[bug])
#    print("")                          print("",end="")
#    print()                       
#    or just any print() without end as 2nd arg.


sentence=a='The quick brown fox jumped over the lazy dog.
speaker="narrator"
engine = pyttsx3.init()
engine.connect('started-utterance', onStart)
engine.connect('started-word', onWord)
engine.say(a,speaker)
engine.runAndWait()
del engine

输出:-

情况1 单词随语音一起打印,但每个单词都在下一行

旁白:-

快速
棕色
狐狸
跳了
超过

懒惰
狗。

情况2:- 文本可以正确打印,但是在说完句子后才打印。

旁白:-敏捷的棕色狐狸跳过了那只懒狗。

ps:-就像python不想让我在行中打印句子。

1 个答案:

答案 0 :(得分:0)

在打印功能上设置flush=True

import pyttsx3

message = 'The quick brown fox jumped over the lazy dog.'

def onWord(name, location, length):
    print(message[location:location + length], end=' ', flush=True)


engine = pyttsx3.init()
engine.connect('started-word', onWord)
engine.say(message)
engine.runAndWait()