add human txt
This commit is contained in:
parent
d08a74b4e4
commit
b3bbf40d95
@ -63,7 +63,8 @@ class AudioMalHandler(AudioHandler):
|
||||
count = 0
|
||||
for _ in range(self._context.batch_size * 2):
|
||||
frame, _type = self.get_audio_frame()
|
||||
self.frames.append(frame)
|
||||
chunk, txt = frame
|
||||
self.frames.append(chunk)
|
||||
self.on_next_handle((frame, _type), 0)
|
||||
count = count + 1
|
||||
|
||||
@ -103,7 +104,8 @@ class AudioMalHandler(AudioHandler):
|
||||
frame = self._queue.get()
|
||||
type_ = 0
|
||||
else:
|
||||
frame = np.zeros(self.chunk, dtype=np.float32)
|
||||
chunk = np.zeros(self.chunk, dtype=np.float32)
|
||||
frame = (chunk, '')
|
||||
type_ = 1
|
||||
# print('AudioMalHandler get_audio_frame type:', type_)
|
||||
return frame, type_
|
||||
|
@ -121,52 +121,4 @@ class HumanRender(AudioHandler):
|
||||
# self._video_render.stop()
|
||||
# self._exit_event.clear()
|
||||
# self._thread.join()
|
||||
'''
|
||||
self._exit_event = Event()
|
||||
self._thread = Thread(target=self._on_run)
|
||||
self._exit_event.set()
|
||||
self._thread.start()
|
||||
|
||||
def _on_run(self):
|
||||
logging.info('human render run')
|
||||
while self._exit_event.is_set():
|
||||
self._run_step()
|
||||
time.sleep(0.02)
|
||||
|
||||
logging.info('human render exit')
|
||||
|
||||
def _run_step(self):
|
||||
try:
|
||||
res_frame, idx, audio_frames = self._queue.get(block=True, timeout=.002)
|
||||
except queue.Empty:
|
||||
# print('render queue.Empty:')
|
||||
return None
|
||||
if audio_frames[0][1] != 0 and audio_frames[1][1] != 0:
|
||||
combine_frame = self._context.frame_list_cycle[idx]
|
||||
else:
|
||||
bbox = self._context.coord_list_cycle[idx]
|
||||
combine_frame = copy.deepcopy(self._context.frame_list_cycle[idx])
|
||||
y1, y2, x1, x2 = bbox
|
||||
try:
|
||||
res_frame = cv2.resize(res_frame.astype(np.uint8), (x2 - x1, y2 - y1))
|
||||
except:
|
||||
return
|
||||
# combine_frame = get_image(ori_frame,res_frame,bbox)
|
||||
# t=time.perf_counter()
|
||||
combine_frame[y1:y2, x1:x2] = res_frame
|
||||
|
||||
image = combine_frame
|
||||
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
|
||||
|
||||
if self._image_render is not None:
|
||||
self._image_render.on_render(image)
|
||||
|
||||
for audio_frame in audio_frames:
|
||||
frame, type_ = audio_frame
|
||||
frame = (frame * 32767).astype(np.int16)
|
||||
if self._audio_render is not None:
|
||||
self._audio_render.write(frame.tobytes(), int(frame.shape[0]*2))
|
||||
# new_frame = AudioFrame(format='s16', layout='mono', samples=frame.shape[0])
|
||||
# new_frame.planes[0].update(frame.tobytes())
|
||||
# new_frame.sample_rate = 16000
|
||||
'''
|
||||
|
@ -98,7 +98,7 @@ class DouBaoHttp:
|
||||
]
|
||||
self._response = self.__request(msg_list)
|
||||
if not self._response.ok:
|
||||
logger.info(f"请求失败,状态码:{self._response.status_code}")
|
||||
logger.error(f"请求失败,状态码:{self._response.status_code}")
|
||||
return
|
||||
sec = ''
|
||||
for chunk in self._response.iter_lines():
|
||||
@ -106,13 +106,23 @@ class DouBaoHttp:
|
||||
if len(content) < 1:
|
||||
continue
|
||||
content = content[5:]
|
||||
content = json.loads(content)
|
||||
content = content.strip()
|
||||
if content == '[DONE]':
|
||||
break
|
||||
|
||||
try:
|
||||
content = json.loads(content)
|
||||
except Exception as e:
|
||||
logger.error(f"json解析失败,错误信息:{e, content}")
|
||||
continue
|
||||
sec = sec + content["choices"][0]["delta"]["content"]
|
||||
sec, message = handle.handle(sec)
|
||||
if len(message) > 0:
|
||||
logger.info(f'-------dou_bao nlp time:{time.time() - t:.4f}s')
|
||||
callback(message)
|
||||
callback(sec)
|
||||
if len(sec) > 0:
|
||||
callback(sec)
|
||||
|
||||
self._requesting = False
|
||||
logger.info(f'-------dou_bao nlp time:{time.time() - t:.4f}s')
|
||||
|
||||
|
@ -23,12 +23,13 @@ class VoiceRender(BaseRender):
|
||||
|
||||
for audio_frame in frame:
|
||||
frame, type_ = audio_frame
|
||||
frame = (frame * 32767).astype(np.int16)
|
||||
chunk, txt = frame
|
||||
chunk = (chunk * 32767).astype(np.int16)
|
||||
|
||||
if self._audio_render is not None:
|
||||
try:
|
||||
chunk_len = int(frame.shape[0] * 2)
|
||||
chunk_len = int(chunk.shape[0] * 2)
|
||||
# print('audio frame:', frame.shape, chunk_len)
|
||||
self._audio_render.write(frame.tobytes(), chunk_len)
|
||||
self._audio_render.write(chunk.tobytes(), chunk_len)
|
||||
except Exception as e:
|
||||
logging.error(f'Error writing audio frame: {e}')
|
||||
|
@ -70,6 +70,7 @@ class TTSAudioSplitHandle(TTSAudioHandle):
|
||||
return
|
||||
|
||||
s, txt = stream
|
||||
current = 0
|
||||
with self._lock:
|
||||
if len(self._priority_queue) != 0:
|
||||
current = self._priority_queue[0][0]
|
||||
@ -90,15 +91,17 @@ class TTSAudioSplitHandle(TTSAudioHandle):
|
||||
idx += self._chunk
|
||||
if not self._is_running:
|
||||
return
|
||||
heapq.heappush(self._priority_queue, (index, chunks))
|
||||
heapq.heappush(self._priority_queue, (index, (chunks, txt)))
|
||||
|
||||
print('TTSAudioSplitHandle::on_handle', index, current, self._current, len(self._priority_queue))
|
||||
if current == self._current:
|
||||
self._current = self._current + 1
|
||||
chunks = heapq.heappop(self._priority_queue)[1]
|
||||
chunks, txt = chunks
|
||||
|
||||
if chunks is not None:
|
||||
for chunk in chunks:
|
||||
self.on_next_handle(chunk, 0)
|
||||
self.on_next_handle((chunk, txt), 0)
|
||||
|
||||
def stop(self):
|
||||
self._is_running = False
|
||||
|
@ -45,7 +45,7 @@ class AsyncTaskQueue:
|
||||
|
||||
await func(*args) # Execute async function
|
||||
except Exception as e:
|
||||
logging.error(f'{self._name} error: {e}')
|
||||
logging.error(f'{self._name} error: {repr(e)}')
|
||||
finally:
|
||||
self._queue.task_done()
|
||||
|
||||
@ -68,4 +68,4 @@ class AsyncTaskQueue:
|
||||
|
||||
def stop(self):
|
||||
self.stop_workers()
|
||||
self._thread.join()
|
||||
self._thread.join()
|
||||
|
Loading…
Reference in New Issue
Block a user