#dev_type = "7PIN_BK_coze"#k扣子小瑞
#dev_type = "7PIN_BK_EU"#英文小瑞
#dev_type = "7PIN_coze"#柒牌扣子
-dev_type = "7PIN"#柒牌
-# dev_type = "7PIN_1_5"#柒牌1.5
+# dev_type = "7PIN"#柒牌
+dev_type = "7PIN_1_5"#柒牌1.5
#dev_type = 'momo'#食梦貘
#dev_type = 'sjgq'#四季甘泉
#dev_type = 'szbst'#深圳百事通
def set_speech_rate(self,event,msg):
#msg的取值是0.5,1.0,1.5,2.0
#而语速初始值是0,范围是-50~50
+ print("已进入设置速率")
if msg == 0.5:
- self.speech_rate = -50
+ EventMesh.publish("rate_change",-50)
elif msg == 1.0:
- self.speech_rate = 0
+ EventMesh.publish("rate_change",0)
elif msg == 1.5:
- self.speech_rate = 25
+ EventMesh.publish("rate_change",25)
elif msg == 2.0:
- self.speech_rate = 50
- EventMesh.publish("set_storage_config",["speech_rate",self.speech_rate])
- print("set_speech_rate:{}".format(self.speech_rate))
+ EventMesh.publish("rate_change",50)
def btnInfo_queue_thread(self):
while True:
data = self.btnInfo_queue.get()
EventMesh.subscribe("play_music",self.play_music)
EventMesh.subscribe("set_vad_silence",self.set_vad_silence)
EventMesh.subscribe("kws_even",self.kws_even)
-
+ EventMesh.subscribe("change_volume",self.change_volume)
+ EventMesh.subscribe("find_cmd",self.find_cmd)
self.voice_timer = osTimer()#语音留言10S按下按键确定是否播放的判断定时器
self.voice_cnt = 0 #留言定时器计数
self.voicerupt_flag = 0#留言选择按键接听标志位
EventMesh.subscribe("get_audio_play_state",self.get_audio_play_state)
EventMesh.subscribe("set_voicerupt_flag",self.set_voicerupt_flag)#按键中断触发留言播放
EventMesh.subscribe("get_recv_voice",self.get_recv_voice)#获取是否收到留言
+ EventMesh.subscribe("rate_change",self.rate_change)#直接修改语速
+ EventMesh.subscribe("rate_move",self.rate_move)#模糊修改语速
# EventMesh.subscribe("get_voicerupt_flag",self.get_voicerupt_flag)#获取留言播放状态
# EventMesh.subscribe("chenggong_tone",self.chenggong_tone)
self.VC_stop_play_audio_flag = msg
print("self.VC_stop_play_audio_flag:{}".format(self.VC_stop_play_audio_flag))
+ def rate_change(self,event,msg):#直接设置语速(数字)
+ self.speech_rate = msg
+ EventMesh.publish("set_storage_config",["speech_rate",self.speech_rate])
+ print("set_speech_rate:{}".format(self.speech_rate))
+ def rate_move(self,event,msg):#设置语速(模糊(快/慢一点))
+ if msg == 1:#增大
+ self.speech_rate += 10
+ else:#减小
+ self.speech_rate -= 10
+ EventMesh.publish("set_storage_config",["speech_rate",self.speech_rate])
+ print("set_speech_rate:{}".format(self.speech_rate))
def audio_test(self,event = None, msg = None):
self.VC_Speech_Start()
self.VC_Play_Start()
EventMesh.publish("set_storage_config",["VC_TTS_voice_key",self.VC_TTS_voice_key])
print("VC_TTS_voice_type:{}".format(self.VC_TTS_voice_type))
print("VC_TTS_voice_key:{}".format(self.VC_TTS_voice_key))
+ #修改音量大小 msg为1则为加大,msg为0则为减小
+ def change_volume(self,event =None, msg =None):
+ if msg == 0 :
+ self.VC_TTS_volume -= 10
+ if self.VC_TTS_volume < 0:
+ self.VC_TTS_volume = 0
+ self.AI_TTS_str = "音量已经是最小啦"
+ else:
+ self.aud.setVolume(self.VC_TTS_volume //10)
+ EventMesh.publish("set_storage_config",["VC_TTS_volume",self.VC_TTS_volume])
+ EventMesh.publish("post_device_state")
+ EventMesh.publish("adjust_volume_toBle",self.VC_TTS_volume)
+ self.AI_TTS_str = "好嘞,音量已经调小了,当前音量是{}".format(self.VC_TTS_volume)
+ elif msg == 1:
+ self.VC_TTS_volume += 10
+ if self.VC_TTS_volume > 100:
+ self.VC_TTS_volume = 100
+ self.AI_TTS_str = "音量已经是最大啦"
+ else:
+ self.aud.setVolume(self.VC_TTS_volume //10)
+ EventMesh.publish("set_storage_config",["VC_TTS_volume",self.VC_TTS_volume])
+ EventMesh.publish("post_device_state")
+ EventMesh.publish("adjust_volume_toBle",self.VC_TTS_volume)
+ self.AI_TTS_str = "好嘞,音量已经调大了,当前音量是{}".format(self.VC_TTS_volume)
+ #查询指令判断
+ def find_cmd(self,event ,msg):
+ if "电量" in msg:
+ battery = EventMesh.publish("get_battery")
+ print("电量查询:{}".format(battery))
+ tts_play_str = "电量剩余百分之{}".format(battery)
+ EventMesh.publish("play_tts",[tts_play_str,1])
+ elif "信号" in msg:
+ signal = net.csqQueryPoll()
+ tts_play_str = "当前信号{}".format(signal)
+ EventMesh.publish("play_tts",[tts_play_str,1])
+ elif "卡号" in msg:
+ iccid = sim.getIccid()
+ if iccid != -1 and len(iccid) > 5:
+ print("iccid{}".format(iccid))
+ tts_play_str = "当前卡号为:{}".format(iccid)
+ else:
+ tts_play_str = "卡号查询失败"
+ EventMesh.publish("play_tts",[tts_play_str,1])
+ elif "设备号" in msg:
+ imei = modem.getDevImei()
+ if imei != -1 and len(imei) > 5:
+ print("IMEI:{}".format(imei))
+ tts_play_str = "当前设备号为:{}".format(imei)
+ else:
+ tts_play_str = "设备号查询失败"
+ EventMesh.publish("play_tts",[tts_play_str,1])
#语音留言
def play_new_voice(self,event = None,msg= None):
EventMesh.publish("publish_AI_btnInfo",{"func":self.play_new_voice_cb,"data":msg})
read_soslist = EventMesh.publish("get_storage_config","sos_list")
print(read_soslist)
EventMesh.publish(WEB_CMD_ENUM.SOS_LIST_S_CMD)
+#NLP指令处理
+def ai_cmd_handle(cmd):
+ # print("")
+ if "音量" in cmd:#当指令中有音量时,截取音量操作
+ voice_start_index = cmd.index("音量") + len("音量")#动态判断截取部分
+ volume = cmd[voice_start_index:]#音量截取
+ if volume == "加大":
+ EventMesh.publish("change_volume",1)
+ elif volume == "减小":
+ EventMesh.publish("change_volume",0)
+ elif "查询" in cmd:#当指令中有查询时,截取查询操作
+ voice_start_index = cmd.index("查询") + len("查询")#动态判断截取部分
+ find = cmd[:voice_start_index]#查询截取
+ EventMesh.publish("find_cmd",find)
+ elif "讲话" in cmd:#当指令中有讲话时,截取语速操作
+ voice_start_index = cmd.index("讲话") + len("讲话")#动态判断截取部分
+ find = cmd[voice_start_index:]#查询截取
+ if "快" in find:
+ EventMesh.publish("rate_move",1)
+ elif "慢" in find:
+ EventMesh.publish("rate_move",0)
+#NLP指令
+class IOTWeb_Nlp_ConfigProtoCol(ProtoCol):
+ """ai_cmd"""
+ TYPE = "ai_cmd"
+
+ def send(self, event, msg):
+ # print("ai_cmd{}".format(msg))
+ # 通过websocket发送到服务器端
+ date_tmp = utime.localtime()
+ time_tmp = utime.mktime(date_tmp)
+ ai_cmd = {
+ "cmd":"ai_cmd",
+ "ts":time_tmp,
+ "msg":"AI指令",
+ "data":None
+ }
+ send_data = b''
+ send_data = protocol_send_total_data(ai_cmd)
+ print("send_data ai_cmd{}".format(send_data))
+ EventMesh.publish("CHANNEL_IOT_WEB_SEND", send_data)
+
+ def recv(self, event, msg):
+ """
+ @param event:上行下发push_music
+ @param msg: 接收到的下行数据
+ """
+ #提取指令名称
+ cmdName = msg["data"]
+ print("提取到的AI指令为{}".format(cmdName))
+ ai_cmd_handle(cmdName)
+ print("recv push_music{}".format(msg))
+
#音乐播放
class IOTWeb_play_MusicProtoCol(ProtoCol):
"""push_music"""
# 通过websocket发送到服务器端
date_tmp = utime.localtime()
time_tmp = utime.mktime(date_tmp)
- get_chat_config = {
+ push_music = {
"cmd":"push_music",
"ts":time_tmp,
"msg":"音乐播放",
"data":None
}
send_data = b''
- send_data = protocol_send_total_data(get_chat_config)
+ send_data = protocol_send_total_data(push_music)
print("send_data push_music{}".format(send_data))
EventMesh.publish("CHANNEL_IOT_WEB_SEND", send_data)