al_listen_screen_icon1.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-al_listen_screen_icon = lv.img(AI_listen_screen)
-al_listen_screen_icon.set_size(230,58)
-al_listen_screen_icon.set_pos((240-230)//2,210)
-al_listen_screen_icon.set_src("E:/static/AI/ai_confirm_bt.png")
-al_listen_screen_icon.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+# al_listen_screen_icon = lv.img(AI_listen_screen)
+# al_listen_screen_icon.set_size(230,58)
+# al_listen_screen_icon.set_pos((240-230)//2,210)
+# al_listen_screen_icon.set_src("E:/static/AI/ai_confirm_bt.png")
+# al_listen_screen_icon.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
al_listen_screen_icon_bt = lv.label(AI_listen_screen)
al_listen_screen_icon_bt.set_text(" ")
al_listen_screen_icon_bt.set_size(240, 190)
al_listen_screen_icon_bt.set_pos(0,92)
-al_listen_screen_title4 = lv.label(al_listen_screen_icon)
-al_listen_screen_title4.set_pos(0, 18)
-al_listen_screen_title4.set_size(230, 58)
+al_listen_screen_title4 = lv.label(AI_listen_screen)
+al_listen_screen_title4.set_pos(0, 220)
+al_listen_screen_title4.set_size(240, 58)
al_listen_screen_title4.set_text("正在聆听...")
al_listen_screen_title4.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
al_listen_screen_title4.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
self.AI_client_tts_tra_flag = 0
self.AI_client_tts_full_sentence_flag = 0 #完整的句子标识
self.tts_time_count = 0
+ self.tts_time_outcount = 0
self.timer_out_count = 0
self.img_show_count = 0
self.img_show_count_tmp = 0
al_no_sim_popup_screen_icon1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,2)), lv.EVENT.SHORT_CLICKED, None) #无网络按钮
- al_listen_screen_icon_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,3)), lv.EVENT.SHORT_CLICKED, None) #说话完成按钮
- al_listen_screen_icon.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,3)), lv.EVENT.SHORT_CLICKED, None) #说话完成按钮
+ # al_listen_screen_icon_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,3)), lv.EVENT.SHORT_CLICKED, None) #说话完成按钮
+ # al_listen_screen_icon.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,3)), lv.EVENT.SHORT_CLICKED, None) #说话完成按钮
al_think_screen_icon1_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,4)), lv.EVENT.SHORT_CLICKED, None) #思考界面取消按钮
al_think_screen_icon1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,4)), lv.EVENT.SHORT_CLICKED, None) #思考界面取消按钮
self.AI_label_str = ""
self.AI_label_answer = ""
self.tts_time_count = 0
-
+ self.tts_time_outcount = 0
+
def talk_end_cancel_cb(self,e):#对话结束已经播放音频取消继续对话按钮
self.Close()
self.AI_label_answer = ""
def audio_cb(self,event):
if event == 0:
self.audio_play_state =1
- print('audio-play start.')
+ EventMesh.publish("set_audio_state", 1)
+ print('audio-play start. ai')
elif event == 7:
self.audio_play_state = 0
+ EventMesh.publish("set_audio_state", 0)
# if self.AI_audio_queue.size() > 0:
# data = self.AI_audio_queue.get()
# print("audio_queue:data:{}".format(len(data)))
AI_not_listen_text_screen.add_flag(lv.obj.FLAG.HIDDEN) #
AI_no_net_screen.clear_flag(lv.obj.FLAG.HIDDEN) #开启显示
al_no_sim_popup_screen_title3.set_text("无SIM卡")
-
+
elif signal == None or signal == 0 or signal == 99:
AI_listen_screen.add_flag(lv.obj.FLAG.HIDDEN)
AI_think_screen.add_flag(lv.obj.FLAG.HIDDEN) #先隐藏
usys.print_exception(e)
def AI_client_tts_timer_cb(self,*argc):
# EventMesh.publish("system_sleep_rest")#防止黑屏
-
self.tts_time_count+=1
+
if self.TTS_PRO_TYPE == 1:
#tts数据入队
self.AI_client_tts_put_data()
if len(self.AI_client_chat_play_str) >0 and self.AI_client_tts_data_len < 150*1024 :#and (self.AI_client_tts_str_total_len <100 or self.AI_client_tts_str_total_len - self.AI_client_tts_data_total_len//672 < 60)缓存200k以下,且tts发送文字字节数比返回音频数据少60字节
# play_str = split_string(self.AI_client_chat_play_str,40)#
# if play_str =="":#没找到句号或者逗号,切割字符串
+ self.tts_time_outcount+=1
+
if self.TTS_PRO_TYPE == 1:
play_str = sub_utf8_String(self.AI_client_chat_play_str,20)#按中文切割字符串
self.AI_client_tts_str_total_len += len(play_str)
elif self.TTS_PRO_TYPE == 0:
- if self.AI_audio_queue.size() >= 5 or self.AI_client_tts_tra_flag == 1:#存了超过4句,就等小于3次在转化
+ if self.AI_audio_queue.size() >= 5 or self.AI_client_tts_tra_flag == 1 or (self.tts_time_outcount < 3 and len(self.AI_client_chat_play_str) < 100):#存了超过4句,就等小于3次在转化
return
play_str = split_string(self.AI_client_chat_play_str,50,100)#按逗号,句号切割
if play_str =="" or len(play_str)>100:#没找到句号或者逗号,切割字符串
self.AI_client_chat_play_str = ""
self.AI_client_tts_tra_flag = 0
self.record.stop()#关闭录音
+ Record_read_buf = bytearray(self.Audio_buf_size)
+ for i in range(10):
+ Record_len = self.record.stream_read(Record_read_buf, self.Audio_buf_size)
+ print("Record_len:!!!!!!{}\r\n".format(Record_len))
+ if Record_len <= 0:
+ break
self.AI_label_answer = ""
self.refresh_count = 0
self.refresh_texttimer.stop()
self.timer = osTimer()
self.second_timer = osTimer()
self.play_timer = osTimer()
+ self.update_lcdTimer = osTimer()
+
Wechat_log("talking1.0")
self.record_test.start("/ext/static/storage_file/{}.amr".format(self.wechat_num),16)
self.second_timer.start(1000, 1, self.reduce_second)
+ self.update_lcdTimer.start(500, 1, self.update_lcd)
self.press_state = 1
self.ble_send = 1
#松开发送
#写序号
self.record_test.stop() #停止錄音
self.second_timer.stop() #停止计时器
+ self.update_lcdTimer.stop()
self.countdown_old = self.countdown
# Wechat_log("self.countdown :{} self.wechat_num:{} self.wechat_recode_list:{} self.wechat_show:{}".format(self.countdown,self.wechat_num,self.wechat_recode_list,self.wechat_show))
self.wechat_recode_list["%02d"%(self.wechat_show)] = "S:{}".format(str(self.countdown))
def get_send_state(self, event, msg):
return self.ble_send
+ def lcd_off(self):
+ self.play_timer.stop()
+ self.record_test.stop() #停止錄音
+ self.second_timer.stop() #停止计时器
+ self.update_lcdTimer.stop()
+ self.aud.stop()
+
+ def update_lcd(self,*args):
+ EventMesh.publish("publish_message_event_ui",{"func":self.update_lcd_cb,"data":0})
+
+ def update_lcd_cb(self,data):
+ Wechat_log("update_lcd_cb")
+ EventMesh.publish("system_sleep_rest")#防止黑屏
def Close(self):
Wechat_log("Close1")
self.play_timer.stop()
self.record_test.stop() #停止錄音
+ self.update_lcdTimer.stop()
self.second_timer.stop() #停止计时器
self.aud.stop()
num = EventMesh.publish("get_volum_size")
num = 8
self.aud.setVolume(num)#恢复原始音量
Wechat_log("Close2")
-
def reduce_second(self,*args):
+ EventMesh.publish("publish_message_event_ui",{"func":self.reduce_second_cb,"data":0})
+
+ def reduce_second_cb(self,data):
+
+ EventMesh.publish("system_sleep_rest")#防止黑屏
if self.countdown < 15:
self.countdown += 1
else:
print("videolist_screen")
videolist_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
videolist_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
- videolist_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e)), lv.EVENT.GESTURE, None)
+ videolist_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e,0)), lv.EVENT.GESTURE, None)
videolist_screen_list_screen = lv.obj(videolist_screen)
videolist_screen_list_screen.set_pos(0, 40)
videolist_screen_list_screen.set_size(LCD_SIZE_W, LCD_SIZE_H-40)
videolist_screen_list_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
videolist_screen_list_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
- videolist_screen_list_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e)), lv.EVENT.GESTURE, None)
+ videolist_screen_list_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e,0)), lv.EVENT.GESTURE, None)
videolist_top_title = lv.label(videolist_screen)
self.videolist_detail_list.set_size(LCD_SIZE_W, LCD_SIZE_H-40+1)
self.videolist_detail_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
self.videolist_detail_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
- self.videolist_detail_list.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e)), lv.EVENT.GESTURE, None)
+ self.videolist_detail_list.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e,0)), lv.EVENT.GESTURE, None)
for i in range(self.MXA_phone_num):
contact_btn = lv.btn(self.videolist_detail_list)
contact_btn.add_flag(lv.obj.FLAG.CLICKABLE)
- contact_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e)),
+ contact_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e,1)),
lv.EVENT.SHORT_CLICKED, None)
contact_btn.add_flag(lv.obj.FLAG.HIDDEN)
# contact_btn.add_style(style_press_btn, lv.PART.MAIN | lv.STATE.PRESSED)
if self.videolist_detail_list != None:
self.videolist_detail_list.add_flag(lv.obj.FLAG.HIDDEN)#隐藏空文本
- def calling_cb(self,e):
+ def calling_cb(self,e,msg):
code = e.get_code()
indev = lv.indev_get_act()
lv.indev_t.wait_release(indev)
EventMesh.publish("load_screen", {"screen": "main_menu"})
elif code == lv.EVENT.SHORT_CLICKED:
- if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡
- msg_text = e.get_target().get_child(1).get_text()
- EventMesh.publish("load_screen", {"screen": "vedio_mode","meta":msg_text})
- else:
- EventMesh.publish("load_screen", {"screen": "no_sim_popup_screen"})
+ if msg == 1:
+ if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡
+ msg_text = e.get_target().get_child(1).get_text()
+ EventMesh.publish("load_screen", {"screen": "vedio_mode","meta":msg_text})
+ else:
+ EventMesh.publish("load_screen", {"screen": "no_sim_popup_screen"})
# def calling_cb(self,e):
# code = e.get_code()