Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/las.py
diff options
context:
space:
mode:
Diffstat (limited to 'las.py')
-rwxr-xr-xlas.py92
1 files changed, 70 insertions, 22 deletions
diff --git a/las.py b/las.py
index 39afbb1..1413f53 100755
--- a/las.py
+++ b/las.py
@@ -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()