Я создаю чат-бот Tensorflow, который использует основные намерения и ответы, сущности и т. Д.Я добавил одну небольшую эстетику: каждый раз, когда чат-робот отвечает, он отправляет строку в API-интерфейс Cloud Text-to-Speech и затем воспроизводит ответ.Это отлично работает для первой итерации, затем появляется сообщение об ошибке:
Traceback (most recent call last):
tts = response(j)
TypeError: 'SynthesizeSpeechResponse' object is not callable
Я новичок в использовании этого API, так что это может быть действительно тривиальным исправлением.
Вот код для функции «response ()», которая принимает пользовательский ввод в качестве аргумента:
def response(sentence, userID='123', show_details=False):
results = classify(sentence)
# 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
res = random.choice(i['Responses'])
return res
results.pop(0)
Я не думаю, что эта функция ужасно актуальнак проблеме , я почти уверен, что так я ее называю.
А вот код для реального взаимодействия с пользователем:
# opening line
print('Welcome to Chatty bot!')
for talk in range(0,10):
j = input('Speak: ')
tts = response(j) # Error starts after second iteration?
print(tts)
if talk == 10:
print('It was nice talking to you, I\'ll talk to you later!')
synthesis_input = texttospeech.types.SynthesisInput(text=tts)
voice = texttospeech.types.VoiceSelectionParams(
name='en-GB-Wavenet-A',
language_code='en-GB',
ssml_gender=texttospeech.enums.SsmlVoiceGender.FEMALE)
audio_config = texttospeech.types.AudioConfig(
audio_encoding=texttospeech.enums.AudioEncoding.MP3)
response = client.synthesize_speech(synthesis_input, voice, audio_config)
with open('file_name.mp3', 'wb') as out:
# Write the response to the output file.
out.write(response.audio_content)
playsound('<mp3 file location>')
Как я могу исправитьэто так, чтобы он не продолжал падать после попытки второй итерации?
Спасибо за помощь!