From 5c31ab691b4e813a63dd2992322b5b0d950c8d62 Mon Sep 17 00:00:00 2001 From: chrys Date: Wed, 6 Jul 2016 00:32:06 +0200 Subject: [PATCH] implement sd driver --- src/fenrir.py | 7 +-- src/speech/__pycache__/es.cpython-35.pyc | Bin 0 -> 1751 bytes src/speech/__pycache__/sd.cpython-35.pyc | Bin 0 -> 1864 bytes src/speech/es.py | 7 +-- src/speech/sd.py | 64 +++++++++++++++++++++++ 5 files changed, 72 insertions(+), 6 deletions(-) create mode 100644 src/speech/__pycache__/es.cpython-35.pyc create mode 100644 src/speech/__pycache__/sd.cpython-35.pyc diff --git a/src/fenrir.py b/src/fenrir.py index 083c928f..46767773 100755 --- a/src/fenrir.py +++ b/src/fenrir.py @@ -7,6 +7,7 @@ import hashlib import difflib import textwrap import speech.es as es +import speech.sd as sd runtime = { 'running':True, @@ -22,8 +23,8 @@ runtime = { 'newContentBytes': b'', 'newContentText': '', 'newContentAttrib': b'', -'speechDriverString':'es', -'speechDriver': es.speech() +'speechDriverString':'sd', +'speechDriver': sd.speech() } while(runtime['running']): @@ -46,7 +47,7 @@ while(runtime['running']): # changes on the screen if runtime['oldContentBytes'] != runtime['newContentBytes']: if len(runtime['delta']) < 3: - runtime['speechDriver'].stop() + runtime['speechDriver'].cancel() print("tty3 changed") diff = difflib.ndiff(runtime['oldContentText'], runtime['newContentText']) diff --git a/src/speech/__pycache__/es.cpython-35.pyc b/src/speech/__pycache__/es.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e89d7c760a2ad8ba6d935ea9550d608ad9e302af GIT binary patch literal 1751 zcmb_cOK;Oa5T5lTPrKpt!C4>(&LLhNL2ni{OOB9icf-jcq-6%=(>aGJM3a9qZ zAn_yk9lmnnFK}XJ+`Ovvh7-@udS2hm?Cd??ul#(mIQ!)Q{DzIkM*a=H=01{l5Qj8z)n!OdR8U|KPiAv0NRBXnW8#chc-z3J0M-S77!v+09j;_3$g^V%shUq zfUGiK1nGhFnMZ{^kTvGZAooEYFptWI27HILMkn<=&$==vlUY`ZBJvwW1$1Hdk$@=U&ldYgeO%|Y+~8!Xd72O&dT6CG zafx0cgBkYGjZbZBFSvUb7U*LZ2)IJ$q+&te2CUQ-7A!vu%?75fU38HZl6aJ;fp%~c zx@I;?yMe6*m5ksnEN+4@+@})p$xWwtYZs~ zy*py&B?A@f=zQAgC{5WIDq9|UezXj{p_5Se=%IDh$%nYv3ZHTj5Ck?1C%4%MEvc|6 z)UUixWuwyQ%ea@Qz~W+rF7IyDBrBobM^ZaR(@k{CL$;J}A+u4LJ49AHkfk>C9q7A! zrs#69nvI~ahL`ySZxZWxs8XeQYO-=`xewh|FHO2D>7pc6>XDCVRf)sFh52n#%Fl(KCv|$7p?1EM?80 zN*Bxs%N|8pC5nb)IUNx1MbYIn9^?{D*Q}f`3!PJ0Ji6 literal 0 HcmV?d00001 diff --git a/src/speech/__pycache__/sd.cpython-35.pyc b/src/speech/__pycache__/sd.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..50cacb809341f6353ee2f7d03f2f1915bc0ba944 GIT binary patch literal 1864 zcmcgsOK;Oa5T5lTPrK;@l}bolda^*|00<7KLaJ2MOH?U^f-jcq-70Qfr`>gcMB&u_ z8IJs&y>j9&aAIbiXBE_2o$Tz`GduImV`tm<8^c%QlV2{tZ&-M2;#3gXLdy4Cjk&Lz;mHRM^PP5hcM{Z6DIDGQ1PUPWCNEXhT?FT2MxB) zM&2X_V{TS;sy;1)|0y!d_z@`<*)p)_Fl__Vz>`fp6EFkrE*28);8IkZ5{u79{sc!E z<7yxj!4iO&u@jBvd`9n)lK^Z zPnTUYz2x(&Lz9nnur26LOzw4(^_BQfBiB@KQ1Je@e2*Z}Pyp7L&!MTb6Etaj?W>OK+Pf0dp0R;i@DJtMP8t9J literal 0 HcmV?d00001 diff --git a/src/speech/es.py b/src/speech/es.py index 4b7ab75a..5798e29e 100644 --- a/src/speech/es.py +++ b/src/speech/es.py @@ -17,11 +17,11 @@ class speech(): def speak(self,text, queueable=True): if not self.isInitialized: return False - if queueable == False: self.stop() + if queueable == False: self.cancel() self.es.synth(text) return True - def stop(self): + def cancel(self): if not self.isInitialized: return False self.es.cancel() @@ -46,4 +46,5 @@ class speech(): if not self.isInitialized: return False return es.set_parameter(espeak.Parameter.Rate, speed) - + def shutdown(self): + pass diff --git a/src/speech/sd.py b/src/speech/sd.py index e69de29b..c03c2f27 100644 --- a/src/speech/sd.py +++ b/src/speech/sd.py @@ -0,0 +1,64 @@ +#!/usr/bin/python + +# speech-dispatcher driver + +class speech(): + def __init__(self, ): + self.sd = None + self.isInitialized = False + try: + import speechd + self.sd = speechd.SSIPClient('fenrir') + self.isInitialized = True + except: + self.initialized = False + + + def speak(self,text, queueable=True): + if not self.isInitialized: + return False + if queueable == False: self.cancel() + self.sd.speak(text) + return True + + def cancel(self): + if not self.isInitialized: + return False + self.sd.cancel() + return True + + def clear_buffer(self): + if not self.isInitialized: + return False + return True + + def setVoice(self, voice): + if not self.isInitialized: + return False + try: + self.sd.set_voice(voice) + return True + except: + return False + + def setPitch(self, pitch): + if not self.isInitialized: + return False + try: + self.sd.set_pitch(pitch) + return True + except: + return False + + def setSpeed(self, speed): + if not self.isInitialized: + return False + try: + self.sd.set_rate(speed) + return True + except: + return False + + def shutdown(self): + self.cancel() + self.sd.close()