это ошибка pyttsx3 с функцией печати? - PullRequest
0 голосов
/ 19 декабря 2018

Вот простая программа преобразования текста в речь.Все, что он делает, - это то, что он принимает предложение и говорящего (не от пользователя) и печатает слово в то время, когда оно должно произносить это слово.Но проблема возникает с функцией печати (помеченной # /). Когда эта программа запускается, я хочу напечатать предложение в одну строку.Но когда функция печати (# / отмечена) имеет аргумент 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

вывод: -

case 1 Слова печатаются с речью, но каждое слово находится на следующей строке

Рассказчик: -

быстрый
коричневый
лиса
прыгнул
над

ленивый
собака.

case2: - Текст печатается правильно, но печатается после произнесения предложения.

Рассказчик: -Быстрая коричневая лиса перепрыгнула через ленивую собаку.

ps: -Она похожа на питонане хочет, чтобы я печатал предложение в строке.

1 Ответ

0 голосов
/ 31 декабря 2018

Установите 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()
...