From be8bfa1cc6491778defb8df7b9ee40819960a5ea Mon Sep 17 00:00:00 2001 From: Thiago Hersan Date: Fri, 12 Jul 2013 01:39:18 -0700 Subject: [PATCH 1/2] adds language detection --- megavoice.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/megavoice.py b/megavoice.py index 181fa0c..8f1270f 100644 --- a/megavoice.py +++ b/megavoice.py @@ -3,9 +3,10 @@ import sys, time, subprocess sys.path.append("../LocalNet") from interfaces import PrototypeInterface, runPrototype +import langid FESTIVAL_ES = "voice_cstr_upc_upm_spanish_hts" -FESTIVAL_EN = "voice_cstr_upc_upm_spanish_hts" +FESTIVAL_EN = "voice_kal_diphone" FESTIVALBIN = "./festival" FESTIVALCMD = "echo \"(LANG) (SayText \\\"XXXXX\\\")\" | " @@ -28,15 +29,21 @@ def setup(self): self.lastQueueCheck = time.time() ## turn up the volume subprocess.call("amixer set PCM -- -0", shell=True) + + ## for language identification + langid.set_languages(['en','es']) def loop(self): ## check state if ((not self.messageQ.empty()) and (time.time() - self.lastQueueCheck > self.queueDelay)): (locale,type,txt) = self.messageQ.get() - ## TODO: detect language! + + ## detect language! + mLanguage = FESTIVAL_ES if(langid.classify(txt)[0] == 'es') else FESTIVAL_EN + ## then remove accents and nonAscii characters txt = self.removeNonAscii(self.removeAccents(txt.encode('utf-8'))) - toSay = (FESTIVALCMD+FESTIVALBIN).replace("LANG",FESTIVAL_ES) + toSay = (FESTIVALCMD+FESTIVALBIN).replace("LANG",mLanguage) toSay = toSay.replace("XXXXX",txt) subprocess.call(toSay, shell=True) self.lastQueueCheck = time.time() From 1b77e8f7ad82f7857582219e291a2885a3f09657 Mon Sep 17 00:00:00 2001 From: Thiago Hersan Date: Fri, 12 Jul 2013 01:59:19 -0700 Subject: [PATCH 2/2] reduces the queue delay between messages --- megavoice.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/megavoice.py b/megavoice.py index 8f1270f..0cb62a0 100644 --- a/megavoice.py +++ b/megavoice.py @@ -48,11 +48,9 @@ def loop(self): subprocess.call(toSay, shell=True) self.lastQueueCheck = time.time() if(self.messageQ.qsize() > 50): - self.queueDelay = 10 - elif(self.messageQ.qsize() > 10): - self.queueDelay = 20 + self.queueDelay = 1 else: - self.queueDelay = 30 + self.queueDelay = 5 if __name__=="__main__": ## TODO: get ip and ports from command line