|
@@ -82,45 +82,45 @@ class MyAudioMediaPort(pj.AudioMediaPort):
|
|
|
self.call.logger.info("Received audio frame: %s %s", frame.buf, frame.size)
|
|
|
self.asr.send_audio(frame.buf)
|
|
|
|
|
|
- # try:
|
|
|
- # asr_text = self.get_asr_text()
|
|
|
- # play_complete = self.call.is_play_complete()
|
|
|
- # current_time = time.time() # 实时当前时间
|
|
|
- # if self.call.inputType == '1.0':
|
|
|
- # time_difference = int(current_time - self.call.inputLongStart)
|
|
|
- # # print('current_time - self.call.inputLongStart:',time_difference > 35, self.call.txtLock , play_complete)
|
|
|
- # if time_difference > 35 and play_complete:
|
|
|
- # self.user_asr_texts.append(f"DTMF({self.call.digit})DTMF")
|
|
|
- # user_asr_text = self.user_asr_texts[0] if len(self.user_asr_texts) == 1 else '###'.join(self.user_asr_texts)
|
|
|
- # self.user_asr_texts.clear()
|
|
|
- # self.call.chat(user_asr_text)
|
|
|
- # # print("测试超长", user_asr_text)
|
|
|
- # elif asr_text:
|
|
|
- # self.user_asr_texts.append(asr_text)
|
|
|
- # if time_difference > int(self.call.wait_time):
|
|
|
- # self.call.reset_wait_time()
|
|
|
- # else:
|
|
|
- # if asr_text and not play_complete:
|
|
|
- # self.user_asr_texts.append(asr_text)
|
|
|
- # if (asr_text and play_complete) or (play_complete and self.user_asr_texts):
|
|
|
- # if asr_text:
|
|
|
- # self.user_asr_texts.append(asr_text)
|
|
|
- # user_asr_text = self.user_asr_texts[0] if len(self.user_asr_texts) == 1 else '###'.join(self.user_asr_texts)
|
|
|
- # self.user_asr_texts.clear()
|
|
|
- # self.call.chat(user_asr_text)
|
|
|
- #
|
|
|
- # if self.call.wait_time and self.call.wait_time != "0" and play_complete and not asr_text:
|
|
|
- # self.call.wait_time_check(current_time, self.call.wait_time)
|
|
|
- #
|
|
|
- # message_queue_size = self.call.message_queue.qsize()
|
|
|
- # if (message_queue_size > 0 and not self.call.cur_player_file) or (message_queue_size > 0 and play_complete):
|
|
|
- # # self.call.logger.info('onFrameReceived:message_queue_size=', message_queue_size, 'play_complete=', play_complete, asr_text)
|
|
|
- # self.call.cur_player_file, self.call.wait_time, self.call.inputType,self.call.action, self.call.node_id = self.get_player_file()
|
|
|
- # # 重置播放完成标志和超时计时器,确保新的播放从头开始计时
|
|
|
- # self.call.reset_wait_time()
|
|
|
- # self.call.send_bot_speaker(self.call.cur_player_file)
|
|
|
- # except:
|
|
|
- # pass
|
|
|
+ try:
|
|
|
+ asr_text = self.get_asr_text()
|
|
|
+ play_complete = self.call.is_play_complete()
|
|
|
+ current_time = time.time() # 实时当前时间
|
|
|
+ if self.call.inputType == '1.0':
|
|
|
+ time_difference = int(current_time - self.call.inputLongStart)
|
|
|
+ # print('current_time - self.call.inputLongStart:',time_difference > 35, self.call.txtLock , play_complete)
|
|
|
+ if time_difference > 35 and play_complete:
|
|
|
+ self.user_asr_texts.append(f"DTMF({self.call.digit})DTMF")
|
|
|
+ user_asr_text = self.user_asr_texts[0] if len(self.user_asr_texts) == 1 else '###'.join(self.user_asr_texts)
|
|
|
+ self.user_asr_texts.clear()
|
|
|
+ self.call.chat(user_asr_text)
|
|
|
+ # print("测试超长", user_asr_text)
|
|
|
+ elif asr_text:
|
|
|
+ self.user_asr_texts.append(asr_text)
|
|
|
+ if time_difference > int(self.call.wait_time):
|
|
|
+ self.call.reset_wait_time()
|
|
|
+ else:
|
|
|
+ if asr_text and not play_complete:
|
|
|
+ self.user_asr_texts.append(asr_text)
|
|
|
+ if (asr_text and play_complete) or (play_complete and self.user_asr_texts):
|
|
|
+ if asr_text:
|
|
|
+ self.user_asr_texts.append(asr_text)
|
|
|
+ user_asr_text = self.user_asr_texts[0] if len(self.user_asr_texts) == 1 else '###'.join(self.user_asr_texts)
|
|
|
+ self.user_asr_texts.clear()
|
|
|
+ self.call.chat(user_asr_text)
|
|
|
+
|
|
|
+ if self.call.wait_time and self.call.wait_time != "0" and play_complete and not asr_text:
|
|
|
+ self.call.wait_time_check(current_time, self.call.wait_time)
|
|
|
+
|
|
|
+ message_queue_size = self.call.message_queue.qsize()
|
|
|
+ if (message_queue_size > 0 and not self.call.cur_player_file) or (message_queue_size > 0 and play_complete):
|
|
|
+ # self.call.logger.info('onFrameReceived:message_queue_size=', message_queue_size, 'play_complete=', play_complete, asr_text)
|
|
|
+ self.call.cur_player_file, self.call.wait_time, self.call.inputType,self.call.action, self.call.node_id = self.get_player_file()
|
|
|
+ # 重置播放完成标志和超时计时器,确保新的播放从头开始计时
|
|
|
+ self.call.reset_wait_time()
|
|
|
+ self.call.send_bot_speaker(self.call.cur_player_file)
|
|
|
+ except:
|
|
|
+ pass
|
|
|
|
|
|
def get_asr_text(self):
|
|
|
try:
|