我有以下代码。哪个使用 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)