diff options
Diffstat (limited to 'las.py')
-rwxr-xr-x | las.py | 92 |
1 files changed, 70 insertions, 22 deletions
@@ -6,6 +6,7 @@ import random import time import speechd import commands +import simplejson #import csnd from dict import Dict from dict import Word @@ -51,12 +52,12 @@ class Listenspell(): self.points = 0 self.words_played = 0 self.words_correct = 0 + self.config_file = 'ls-speechd-config' self.path = "." self.speechd_init = False - self.__speechd_default_config = {'pitch':0, 'rate':0, 'language':'en', 'volume':100, 'voice':'', - 'spelling':False, 'punctuation':speechd.PunctuationMode.SOME } - self.__speechd_config = {'pitch':0, 'rate':0, 'language':'en', 'volume':100, 'voice':'', + self.__speechd_default_config = {'pitch':0, 'rate':0, 'language':'en', 'volume':100, 'voice':'MALE1', 'spelling':False, 'punctuation':speechd.PunctuationMode.SOME } + self.__speechd_config = self.__speechd_default_config def load_db(self, SQLiteDB): if self.path == ".": @@ -65,6 +66,7 @@ class Listenspell(): self.dict_obj = Dict(self.path + SQLiteDB) #Always intitiate first Dict object then Word object self.word_obj = Word() + def set_path(self, path): if path != "": self.path = path + "/" @@ -164,6 +166,24 @@ class Listenspell(): else: return self.__speechd_config + + def load_speechd_config(self): + try: + fp = open(self.path + self.config_file) + except IOError: + #File doesn't exist, create it and write default config + fp = open(self.path + self.config_file, 'w', 0) + speech_config = self.get_speechd_config(1) + simplejson.dump(speech_config, fp) + else: + speech_config = simplejson.load(fp) + for attr in speech_config: + self.speechd_config(attr, speech_config[attr]) + fp.close() + return speech_config + + + def __start_speechd(self): try: self.client = speechd.SSIPClient('spd-test') @@ -176,6 +196,23 @@ class Listenspell(): return False self.speechd_init = True + def __set_speechd_config(self, attribute = None, value = None, mode = 'one', config_obj = None): + if mode == 'one': + if attribute == None or value == None: + return False + print attribute + ":" + str(value) + self.__speechd_config[attribute] = value + fp = open(self.path + self.config_file, 'w', 0) + simplejson.dump(self.__speechd_config, fp) + fp.close() + elif mode == 'all': + if config_obj == None: + return False + fp = open(self.path + self.config_file, 'w', 0) + self.__speechd_config = config_obj + simplejson.dump(self.__speechd_config, fp) + fp.close() + def speechd_config(self, attribute = None, data = None): if attribute == None or data == None: @@ -184,25 +221,34 @@ class Listenspell(): if self.speechd_init == False: if self.__start_speechd() == False: return False - - if attribute == "pitch": - self.client.set_pitch(data) #-100 to 100 - elif attribute == "rate": - self.client.set_rate(data) # -100 to 100 - elif attribute == "volume": - self.client.set_volume(data)#-100 to 100 - elif attribute == "voice": - self.client.set_voice(data)#(FE)MALE(1,2,3), CHILD_(FE)MALE - elif attribute == "output_module": - self.client.set_output_module(data) - elif attribute == "language": - self.client.set_language(data) - elif attribute == "punctuation": - self.client.set_punctuation(data) - elif attribute == "spelling": - self.client.set_spelling(data) # True or False - elif attribute == "synthesis_voice": - self.client.set_synthesis_voice(data)#self.client.list_synthesis_voices() + + attribute_list = ['pitch', 'rate', 'volume', 'voice', 'output_module', + 'language', 'punctuation', 'spelling', 'synthesis_voice'] + + if attribute in attribute_list: + try: + self.__set_speechd_config(attribute, data) + if attribute == "pitch": + self.client.set_pitch(int(data)) #-100 to 100 + elif attribute == "rate": + self.client.set_rate(int(data)) # -100 to 100 + elif attribute == "volume": + self.client.set_volume(int(data))#-100 to 100 + elif attribute == "voice": + self.client.set_voice(str(data))#(FE)MALE(1,2,3), CHILD_(FE)MALE + elif attribute == "output_module": + self.client.set_output_module(str(data)) + elif attribute == "language": + self.client.set_language(str(data)) + elif attribute == "punctuation": + self.client.set_punctuation(data) + elif attribute == "spelling": + self.client.set_spelling(bool(data)) # True or False + elif attribute == "synthesis_voice": + self.client.set_synthesis_voice(str(data))#self.client.list_synthesis_voices() + except AssertionError, e: + print "Assertion Error: " + str(e) + ":" + str(attribute) + ":" + str(data) + return False else: return False def __speechd_callback(self,callback_type): @@ -237,6 +283,8 @@ class Listenspell(): return k def exit_game(self): + self.word_obj.exit_game() + self.dict_obj.exit_game() self.say_text("goodbye") self.client.close() sys.exit() |