-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathControlCenter.py
144 lines (116 loc) · 4.44 KB
/
ControlCenter.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
'''
Created on Jun 28, 2017
@author: make ma
'''
from threading import Thread
from MsgHandler import MsgHandler, MsgConst
from TtsPlayer import TtsPlayer
from SpeechProcess import SpeechProcess,ult_detect
from NliObject import NliObject
from LedControl import LedControl
class ControlCenter(Thread):
'''
classdocs
'''
def onServerTtsEndListener(self, param):
if param != None:
msg = self.handler.obtainMessage1(MsgConst.MSG_SERVER_TTS_END)
msg.arg1 = param
self.handler.sendMessage(msg);
def onTtsEndListener(self, param):
msg = self.handler.obtainMessage1(MsgConst.MSG_NORMAL_TTS_END)
msg.arg1 = param
self.handler.sendMessage(msg);
def onServerTtsPlay(self, msg):
self.ttsPlayer.stop()
self.ttsPlayer.speak(msg.obj, self.onServerTtsEndListener, msg.arg1 != 0)
def onServerTtsEnd(self, msg):
if msg.arg1:
self.speechProcess.wakeupNow()
def onTtsPlay(self, msg):
self.ttsPlayer.stop()
self.ttsPlayer.speak(msg.obj, self.onTtsEndListener)
def onTtsEnd(self, msg):
pass
def onMusicStart(self, msg):
pass
def onMusicEnd(self, msg):
pass
def onAdjustVol(self, msg):
pass
def onServerSessionBroken(self, msg):
pass
def onDataFromServer(self, msg):
#obj = SemanticObject(msg.obj)
obj = NliObject(msg.obj)
obj = obj.parse()
#print (self.handler )
#obj.process(self.handler)
if len(obj.getTts()) > 0:
msg = self.handler.obtainMessage1(MsgConst.MSG_SERVER_TTS_PLAY)
msg.obj = obj.getTts()
msg.arg1 = obj.needAnswer()
self.handler.sendMessage(msg)
def onUserDataRefresh(self, msg):
pass
def OnProcessServerQuerySuccessed(self, msg):
pass
def onMusicPlay(self, msg):
pass
def onMusicControl(self, msg):
pass
def onMusicStop(self, msg):
pass
def onMusicStopAudioBook(self, msg):
pass
def onForceStopTts(self, msg):
self.ttsPlayer.stop()
def __init__(self):
self.mExit = False
self.msgMap = {\
MsgConst.MSG_SERVER_TTS_PLAY : self.onServerTtsPlay, \
MsgConst.MSG_SERVER_TTS_END : self.onServerTtsEnd, \
MsgConst.MSG_NORMAL_TTS_PLAY : self.onTtsPlay, \
MsgConst.MSG_NORMAL_TTS_END : self.onTtsEnd, \
MsgConst.MSG_MUSIC_START : self.onMusicStart, \
MsgConst.MSG_MUSIC_END : self.onMusicEnd, \
MsgConst.MSG_ADJUST_VOL : self.onAdjustVol, \
MsgConst.MSG_SERVER_SESSION_BROKEN : self.onServerSessionBroken, \
MsgConst.MSG_DATA_FROM_SERVER : self.onDataFromServer, \
MsgConst.MSG_USER_DATA_REFRESH : self.onUserDataRefresh, \
MsgConst.MSG_PROCESS_SERVER_QUERY_SUCCESSED : self.OnProcessServerQuerySuccessed, \
MsgConst.MSG_MUSIC_PLAY : self.onMusicPlay, \
MsgConst.MSG_MUSIC_CONTROL : self.onMusicControl, \
MsgConst.MSG_MUSIC_STOP : self.onMusicStop, \
MsgConst.MSG_STOP_AUDIOBOOK : self.onMusicStopAudioBook, \
MsgConst.MSG_FORCE_STOP_TTS : self.onForceStopTts, \
}
Thread.__init__(self, name = "ControlCenter")
def handleMessage(self, msg):
if msg.what in self.msgMap.keys():
self.msgMap[msg.what](msg)
def init(self):
self.handler = MsgHandler()
self.ttsPlayer = TtsPlayer()
self.speechProcess = SpeechProcess()
ret = self.ttsPlayer.init()
self.ult_detect = ult_detect()
if ret:
self.ttsPlayer.speak("你好,我是歐拉蜜", None)
ret = self.speechProcess.init(self.handler)
self.ult_detect.init(self.handler)
return ret
def run(self):
while not self.mExit:
msg = self.handler.msgQueue.getNext()
print("processing message %d" % (msg.what))
if msg.what == MsgConst.MSG_SERVER_TTS_END:
ledctrl = LedControl()
ledctrl.LightAll("green")
if msg != None:
self.handleMessage(msg)
def uninit(self):
if self.ttsPlayer:
self.ttsPlayer.destroy()
if self.ttsPlayer:
self.ttsPlayer.destroy()