Ich habe folgendes Stück Code. Was macht die Text-zu-Sprache-Konvertierung mit pyttsx?Pyttsx kann Text nicht in Apeech konvertieren
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()
Es spielt den Ton mit der Aufschrift 'None'. Der Antworttext wird auf der Konsole gedruckt, aber das Sprachmodul spricht nichts anderes als "Keine". Warum ist das so? Ich habe den Code auch wie folgt ausprobiert:
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()
Aber das scheint auch nicht zu funktionieren. Wo mache ich einen Fehler bei der Übergabe von Argument in engine.say()
Zeichenfolge? Weil, wenn ich engine.say('I'm working.')
schreibe, es spricht und liest die Phrase vor, während der Antworttext gedruckt wird.
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)
Danke für Ihre Antwort Ich habe jetzt die Funktion hinzugefügt. Ich habe versucht, Return "" + Antwort (Satz) hinzuzufügen. Es hat nicht funktioniert. Ich habe es falsch gemacht, nehme ich an. Kannst du mir helfen, herauszufinden, was es zurückgeben sollte und was ich in den engine.say() schreiben sollte, also spricht es für mich? –
Danke. Ich habe es gelöst. –