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+ def listener ():
27+ result = input ()
28+ return result
29+
30+ def order_manage ():
31+ data_dict = load_xlsx (file_name = 'script/menu.xlsx' )
32+ menu_dict = process_data_to_menu (data_dict )
33+ line_speaker ('您好,很高興為您服務,請問要做些甚麼?' )
34+ while (1 ):
35+ order_line = listener ()
36+ # 點餐
37+ if '餐' in order_line :
38+ total_order = ''
39+ line_speaker ('請問要點些什麼呢?' )
40+ while (1 ):
41+ order_menu_line = listener ()
42+ if '和' in order_menu_line or '個' in order_menu_line :
43+ total_order += order_menu_line + '和'
44+ elif '餐' in order_menu_line or '點完' in order_menu_line :
45+ # 點完餐
46+ break
47+ else :
48+ line_speaker ('不好意思,請再說一次。' )
49+ line_speaker (process_price_with_order (menu_dict , total_order ))
50+
51+ # 問時間,幾點了
52+ elif ('時間' in order_line ) or ('幾點' in order_line ):
53+ now = datetime .now ()
54+ res_text = '現在時間是 %d 點 %d 分 %d 秒' % (now .hour , now .minute , now .second )
55+ line_speaker (res_text )
56+
57+ # 離開
58+ elif '離開' in order_line or '結束' in order_line :
59+ line_speaker ('很高興為您服務,很期待您下次光顧。' )
60+ sleep (6 )
61+ break
62+
63+ else :
64+ line_speaker ('不好意思,請再說一次。' )
65+
66+ if __name__ == '__main__' :
67+ order_manage ()
0 commit comments