Skip to content

Commit 02786e6

Browse files
authored
Add files via upload
1 parent 823553a commit 02786e6

File tree

4 files changed

+118
-1
lines changed

4 files changed

+118
-1
lines changed

script/order_manager.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# process order
2+
from process_order import load_xlsx, process_data_to_menu, process_price_with_order
3+
# detect voice
4+
import speech_recognition
5+
# generate voice
6+
from pygame import mixer
7+
import tempfile
8+
from gtts import gTTS
9+
10+
mixer.init()
11+
def line_speaker(texts,lang='zh-tw'):
12+
with tempfile.NamedTemporaryFile(delete=True) as fp:
13+
tts = gTTS(text=texts,lang=lang)
14+
tts.save("{}.mp3".format(fp.name))
15+
mixer.music.load('{}.mp3'.format(fp.name))
16+
mixer.music.play()
17+
print(texts)
18+
19+
r = speech_recognition.Recognizer()
20+
def listener():
21+
result = None
22+
while(result == None):
23+
with speech_recognition.Microphone() as source:
24+
audio = r.listen(source)
25+
try:
26+
result = r.recognize_google(audio,language = 'zh-tw')
27+
except:
28+
continue
29+
print(result)
30+
return result
31+
32+
def order_manage():
33+
data_dict = load_xlsx()
34+
menu_dict = process_data_to_menu(data_dict)
35+
while(1):
36+
order_line = listener()
37+
if '餐' in order_line:
38+
# 點餐
39+
total_order = ''
40+
line_speaker('請問要點些什麼呢?')
41+
while(1):
42+
order_menu_line = listener()
43+
if '和' in order_menu_line or '個' in order_menu_line:
44+
total_order+=order_menu_line
45+
elif '點完餐' in order_menu_line:
46+
break
47+
line_speaker(process_price_with_order(menu_dict, total_order))
48+
49+
elif '離開' in order_line:
50+
break
51+
52+
if __name__ == '__main__':
53+
order_manage()

script/process_order.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,25 @@ def process_price_with_order(menu_dict, order):
5151
if item in menu_dict:
5252
price_dict[item]['price'] = price_dict[item]['amount'] * menu_dict[item]
5353
total += price_dict[item]['price']
54+
none_list = []
55+
for item in price_dict:
56+
if price_dict[item]['price']==None:
57+
none_list.append(item)
5458

5559
print(menu_dict)
5660
print(price_dict)
61+
# return total, none_list
62+
return sum_up_total_line(total, none_list)
63+
64+
def sum_up_total_line(total, none_list):
65+
line = '總共是' + str(total) + '元。'
66+
if len(none_list)>0:
67+
line+='不過,我們沒有:'
68+
for item in none_list:
69+
line+=item + ', '
70+
return line
5771

5872
# write_xlsx()
5973
data_dict = load_xlsx()
6074
menu_dict = process_data_to_menu(data_dict)
61-
process_price_with_order(menu_dict, '100個火腿和7000個蛋糕')
75+
# print(process_price_with_order(menu_dict, '100個火腿和7000個蛋糕'))

script/setting.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
def chinese_to_arabic(chinese_num):
2+
chinese_char_dict = {
3+
'〇' : 0, '一' : 1, '二' : 2, '三' : 3, '四' : 4, '五' : 5, '六' : 6, '七' : 7, '八' : 8, '九' : 9, '零' : 0,
4+
'壹' : 1, '贰' : 2, '叁' : 3, '肆' : 4, '伍' : 5, '陆' : 6, '柒' : 7, '捌' : 8, '玖' : 9, '貮' : 2, '两' : 2,
5+
}
6+
chinese_char_unit = {
7+
'十' : 10,
8+
'拾' : 10,
9+
'百' : 100,
10+
'佰' : 100,
11+
'千' : 1000,
12+
'仟' : 1000,
13+
'万' : 10000,
14+
'萬' : 10000,
15+
'亿' : 100000000,
16+
'億' : 100000000,
17+
'兆' : 1000000000000,
18+
}
19+
unit = 0
20+
ldig = []
21+
# print(chinese_num)
22+
for char_digit in reversed(chinese_num):
23+
# print(char_digit)
24+
if chinese_char_unit.get(char_digit) != None:
25+
unit = chinese_char_unit.get(char_digit)
26+
# print("unit:"+str(unit))
27+
if unit == 10000 or unit == 100000000:
28+
ldig.append(unit)
29+
unit = 1
30+
else:
31+
dig = chinese_char_dict.get(char_digit)
32+
# print("num:"+str(dig))
33+
if unit:
34+
dig *= unit
35+
unit = 0
36+
ldig.append(dig)
37+
if unit == 10:
38+
ldig.append(10)
39+
val, tmp = 0, 0
40+
for x in reversed(ldig):
41+
if x == 10000 or x == 100000000:
42+
val += tmp * x
43+
tmp = 0
44+
else:
45+
tmp += x
46+
val += tmp
47+
return val
48+
49+
# print(chinese_to_arabic("九億七千八百萬八千八百八十八"))

script/voice_detect.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ def listener(self):
3030
# using google service
3131
self.result = self.r.recognize_google(audio,language=self.language)
3232
print("Transcription: " + self.result)
33+
return self.result
3334
except:
3435
print("Could not understand audio")
3536

0 commit comments

Comments
 (0)