77import tempfile
88from gtts import gTTS
99
10+ # time
11+ from datetime import datetime
12+ from time import sleep
13+
14+ # speaker init
1015mixer .init ()
16+
1117def line_speaker (texts ,lang = 'zh-tw' ):
1218 with tempfile .NamedTemporaryFile (delete = True ) as fp :
1319 tts = gTTS (text = texts ,lang = lang )
@@ -16,14 +22,16 @@ def line_speaker(texts,lang='zh-tw'):
1622 mixer .music .play ()
1723 print (texts )
1824
19- r = speech_recognition .Recognizer ()
25+ # listener init()
26+ recognizer = speech_recognition .Recognizer ()
2027def listener ():
2128 result = None
2229 while (result == None ):
2330 with speech_recognition .Microphone () as source :
24- audio = r .listen (source )
31+ # recognizer.adjust_for_ambient_noise(source)
32+ audio = recognizer .listen (source )
2533 try :
26- result = r .recognize_google (audio ,language = 'zh-tw' )
34+ result = recognizer .recognize_google (audio ,language = 'zh-tw' )
2735 except :
2836 continue
2937 print (result )
@@ -32,23 +40,38 @@ def listener():
3240def order_manage ():
3341 data_dict = load_xlsx ()
3442 menu_dict = process_data_to_menu (data_dict )
43+ line_speaker ('您好,很高興為您服務,請問要做些甚麼?' )
3544 while (1 ):
3645 order_line = listener ()
46+ # 點餐
3747 if '餐' in order_line :
38- # 點餐
3948 total_order = ''
4049 line_speaker ('請問要點些什麼呢?' )
4150 while (1 ):
4251 order_menu_line = listener ()
4352 if '和' in order_menu_line or '個' in order_menu_line :
4453 total_order += order_menu_line + '和'
45- elif '餐' in order_menu_line :
54+ elif '餐' in order_menu_line or '點完' in order_menu_line :
4655 # 點完餐
4756 break
57+ else :
58+ line_speaker ('不好意思,請再說一次。' )
4859 line_speaker (process_price_with_order (menu_dict , total_order ))
4960
50- elif '離開' in order_line :
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 )
5171 break
72+
73+ else :
74+ line_speaker ('不好意思,請再說一次。' )
5275
5376if __name__ == '__main__' :
5477 order_manage ()
0 commit comments