2016-04-02 17 views
0

Sadece bir sohbet yazarı Python'da oluşturuyorum. İyi çalışıyor, ancak çıkışını konuşabilmesi için bu chatbot'a pyttsx eklemek istiyorum. Ben herhangi sesini duymak değilim ama terminalde sohbet görebilirsiniz bu kodu çalıştırıyorum zaman Kodumpyttsx ses üretmiyor

import aiml 
import sys 
import pyttsx 

engine = pyttsx.init() 

# Create a Kernel object. 
kern = aiml.Kernel() 

brainLoaded = False 
forceReload = False 
while not brainLoaded: 
    if forceReload or (len(sys.argv) >= 2 and sys.argv[1] == "reload"): 
     kern.bootstrap(learnFiles="std-startup.xml", commands="load aiml b") 
     brainLoaded = True 
     kern.saveBrain("standard.brn") 
    else: 
     try: 

      kern.bootstrap(brainFile = "standard.brn") 
      brainLoaded = True 
     except: 
      forceReload = True 


print "\nINTERACTIVE MODE (ctrl-c to exit)" 
while(True): 

    hea = kern.respond(raw_input("> ")) 

    print hea 
    engine.say (hea) 

engine.runAndWait() 

olduğunu. Ben de cevabı konuşmak istiyorum. Neyi yanlış yapıyorum?

+0

Neden engine.runAndWait() 'i iki kez çağırıyorsunuz? – tripleee

+0

özür dilerim iki kez motoru çağırmak bir hataydı. Bu kısmı pyttsx'i nasıl kullanabileceğimi lütfen bana yardım edin – user325923

+0

Üzgünüz, burada kesinlikle sıfır alan bilgisi var; Sadece bariz bir hata gibi görünen şeylere dikkat çektim. – tripleee

cevap

0

engine.runAndWait, sürenin dışında (True): döngü, bu nedenle döngü kesintiye uğrayana kadar çalınması olası değildir.

Eğer döngü içine taşımak ve ses kesik kesik geliyorsa aşağıdaki kodu sınamak:

import pyttsx 
engine = pyttsx.init() 
engine.say("Oh, hello!") 

pyttsx Benim deneyim ile, bu metnin kısa miktarlarda beslenmek için ihtiyaç duyduğu aksi metindir kesildi.

engine.say("It's nice to meet you.") 
engine.say("I hope you are doing well.") 
engine.say("Would you like to join us ") 
engine.say ("tomorrow at eight for dinner?") 

Ama metin ayrıştırmak ve tutacak bir şekilde bunu kesmek gerekir: yani, ama birkaç ifadeler cümle kendinizi kısaltılıyor ve söyleyerek amacınıza uygun olmalıdır tam olarak neden emin değilim mesaj bozulmamış.