|
@@ -58,7 +58,7 @@ class MyAudioMediaPort(pj.AudioMediaPort):
|
|
|
|
|
|
def onFrameReceived(self, frame):
|
|
|
# self.wav.writeframes(bytes(frame.buf))
|
|
|
- print("Received audio frame:", frame.buf, frame.size)
|
|
|
+ # print("Received audio frame:", frame.buf, frame.size)
|
|
|
if self.asr: # 如果ASR实例存在,则发送音频数据
|
|
|
self.asr.send_audio(frame.buf)
|
|
|
|
|
@@ -74,8 +74,8 @@ class MyAudioMediaPort(pj.AudioMediaPort):
|
|
|
self.call.chat(user_asr_text)
|
|
|
|
|
|
player_queue_size = self.call.player_queue.qsize()
|
|
|
- print('onFrameReceived:player_queu_size=',player_queue_size,'play_complete=', play_complete)
|
|
|
if (player_queue_size > 0 and not self.cur_player_file) or (player_queue_size > 0 and play_complete):
|
|
|
+ print('onFrameReceived:player_queu_size=', player_queue_size, 'play_complete=', play_complete)
|
|
|
self.cur_player_file = self.get_player_file()
|
|
|
self.call.send_bot_speaker(self.cur_player_file)
|
|
|
|
|
@@ -151,6 +151,8 @@ class MyCall(pj.Call):
|
|
|
self.call_id = call_id
|
|
|
self.kwargs = kwargs
|
|
|
self.aud_med = None
|
|
|
+ self.audio_port = None
|
|
|
+ self.player = None
|
|
|
self.asr = None
|
|
|
|
|
|
self.scripts = build_demo_script()
|
|
@@ -205,18 +207,18 @@ class MyCall(pj.Call):
|
|
|
traceback.print_exc()
|
|
|
|
|
|
def receive_user_speaker(self):
|
|
|
- audio_port = MyAudioMediaPort(self, self.aud_med, self.asr)
|
|
|
- audio_port.createPort("Incoming Call Port", build_audio_format())
|
|
|
- self.aud_med.startTransmit(audio_port)
|
|
|
+ self.audio_port = MyAudioMediaPort(self, self.aud_med, self.asr)
|
|
|
+ self.audio_port.createPort("Incoming Call Port", build_audio_format())
|
|
|
+ self.aud_med.startTransmit(self.audio_port)
|
|
|
|
|
|
def send_bot_speaker(self, player_file):
|
|
|
if not player_file or not os.path.exists(player_file):
|
|
|
return
|
|
|
player_id = murmur3_32(player_file)
|
|
|
self.player_complete_dict[player_id] = False
|
|
|
- player = MyAudioMediaPlayer(player_id, self.aud_med, on_complete=self.on_media_player_complete)
|
|
|
- player.createPlayer(player_file)
|
|
|
- player.startTransmit(self.aud_med)
|
|
|
+ self.player = MyAudioMediaPlayer(player_id, self.aud_med, on_complete=self.on_media_player_complete)
|
|
|
+ self.player.createPlayer(player_file)
|
|
|
+ self.player.startTransmit(self.aud_med)
|
|
|
|
|
|
def on_receiver_asr_result(self, message, *args):
|
|
|
self.user_asr_text_queue.put(message)
|
|
@@ -234,15 +236,12 @@ class MyCall(pj.Call):
|
|
|
message = {'player_file': self.scripts.get()}
|
|
|
player = message.get('player_file')
|
|
|
print('chat::player_file=', player)
|
|
|
- if "SAY_HELLO" == user_asr_text:
|
|
|
- self.send_bot_speaker('/code/src/core/voip/test111.wav')
|
|
|
- else:
|
|
|
- self.player_queue.put(player)
|
|
|
+ self.player_queue.put(player)
|
|
|
|
|
|
|
|
|
class BotAgent:
|
|
|
|
|
|
- def __init__(self, logger, user_part_range=range(1001, 1011), host="172.16.12.16", port="5060", password="slibra@#123456"):
|
|
|
+ def __init__(self, logger, user_part_range=range(1001, 1011), host="172.16.12.24", port="5060", password="slibra@#123456"):
|
|
|
self.logger = logger
|
|
|
self.user_part_range, self.host, self.port, self.password = user_part_range, host, port, password
|
|
|
self.user_part_pool = queue.Queue(maxsize=len(user_part_range))
|