Skip to content

Commit 2efbbfb

Browse files
authored
Add files via upload
1 parent d3bc40b commit 2efbbfb

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

test/order_manager.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
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+
# time
11+
from datetime import datetime
12+
from time import sleep
13+
14+
# speaker init
15+
mixer.init()
16+
17+
def line_speaker(texts,lang='zh-tw'):
18+
with tempfile.NamedTemporaryFile(delete=True) as fp:
19+
tts = gTTS(text=texts,lang=lang)
20+
tts.save("{}.mp3".format(fp.name))
21+
mixer.music.load('{}.mp3'.format(fp.name))
22+
mixer.music.play()
23+
print(texts)
24+
25+
# listener init()
26+
recognizer = speech_recognition.Recognizer()
27+
def listener():
28+
result = None
29+
while(result == None):
30+
with speech_recognition.Microphone() as source:
31+
# recognizer.adjust_for_ambient_noise(source)
32+
audio = recognizer.listen(source)
33+
try:
34+
result = recognizer.recognize_google(audio,language = 'zh-tw')
35+
except:
36+
continue
37+
print(result)
38+
return result
39+
40+
def order_manage():
41+
data_dict = load_xlsx()
42+
menu_dict = process_data_to_menu(data_dict)
43+
line_speaker('您好,很高興為您服務,請問要做些甚麼?')
44+
while(1):
45+
order_line = listener()
46+
# 點餐
47+
if '餐' in order_line:
48+
total_order = ''
49+
line_speaker('請問要點些什麼呢?')
50+
while(1):
51+
order_menu_line = listener()
52+
if '和' in order_menu_line or '個' in order_menu_line:
53+
total_order+=order_menu_line+'和'
54+
elif '餐' in order_menu_line or '點完' in order_menu_line:
55+
# 點完餐
56+
break
57+
else:
58+
line_speaker('不好意思,請再說一次。')
59+
line_speaker(process_price_with_order(menu_dict, total_order))
60+
61+
# 問時間,幾點了
62+
elif ('時間' in order_line) or ('幾點' in order_line):
63+
now = datetime.now()
64+
res_text = '現在時間是 %d 點 %d 分 %d 秒' % (now.hour, now.minute, now.second)
65+
line_speaker(res_text)
66+
67+
# 離開
68+
elif '離開' in order_line or '結束' in order_line:
69+
line_speaker('很高興為您服務,很期待您下次光顧。')
70+
sleep(6)
71+
break
72+
73+
else:
74+
line_speaker('不好意思,請再說一次。')
75+
76+
if __name__ == '__main__':
77+
order_manage()

0 commit comments

Comments
 (0)