0

我有以下代码。哪个使用 pyttsx 进行文本到语音的转换。

sys.stdout.write("> ")
#sys.stdout.flush()
classify(sentence = sys.stdin.readline())
while True:
    sentence = sys.stdin.readline()      #input sentence
    text = response(sentence)     #response to the input sentence.
    engine = pyttsx3.init()
    rate = engine.getProperty('rate')
    engine.setProperty('rate', rate - 5)
    engine.say(text)     #converts the text to speech
    engine.runAndWait()

它播放“无”的声音。响应文本打印在控制台上,但语音模块只说“无”。为什么会这样?我也尝试过如下代码:

sys.stdout.write("> ")
    #sys.stdout.flush()
    classify(sentence = sys.stdin.readline())
    while True:
        sentence = sys.stdin.readline()      #input sentence
        response(sentence)     #response to the input sentence.
        engine = pyttsx3.init()
        rate = engine.getProperty('rate')
        engine.setProperty('rate', rate - 5)
        engine.say(response(sentence))     #converts the text to speech
        engine.runAndWait()

但这似乎也不起作用。engine.say()将参数传递给字符串时我在哪里犯了错误?因为当我写 时engine.say('I'm working.'),它会说出并读出短语,同时打印响应文本。

def response(sentence, userID='123', show_details=False):
    # if we have a classification then find the matching intent tag
    if results:
        # loop as long as there are matches to process
        while results:

            for i in intents['intents']:

                # find a tag matching the first result
               if i['tag'] == results[0][0]:
                    # set context for this intent if necessary
                    if 'context_set' in i:
                        if show_details: print ('context:', i['context_set'])
                        context[userID] = i['context_set']

                    # check if this intent is contextual and applies to this user's conversation
                    if not 'context_filter' in i or \
                        (userID in context and 'context_filter' in i and i['context_filter'] == context[userID]):
                        if show_details: print ('tag:', i['tag'])
                        # a random response from the intent
                        return print(random.choice(i['responses']))

            results.pop(0)
4

1 回答 1

0

您没有向我们展示您的response()功能,但它显然正在返回None

这就是导致您描述的行为的原因。

于 2017-09-09T11:25:44.440 回答