diff --git a/asr/sherpa_ncnn_asr.py b/asr/sherpa_ncnn_asr.py index 4124e76..4fd2845 100644 --- a/asr/sherpa_ncnn_asr.py +++ b/asr/sherpa_ncnn_asr.py @@ -63,7 +63,18 @@ class SherpaNcnnAsr(AsrBase): logger.info(f'_recognize_loop') print(f'_recognize_loop') - with sd.InputStream(channels=1, dtype="float32", samplerate=self._sample_rate) as s: + while self._stop_event.is_set(): + logger.info(f'_recognize_loop000') + self._notify_complete('介绍中国5000年历史文学') + logger.info(f'_recognize_loop111') + segment_id += 1 + time.sleep(150) + logger.info(f'_recognize_loop222') + logger.info(f'_recognize_loop exit') + + +''' + with sd.InputStream(channels=1, dtype="float32", samplerate=self._sample_rate) as s: while self._stop_event.is_set(): samples, _ = s.read(self._samples_per_read) # a blocking read samples = samples.reshape(-1) @@ -83,15 +94,6 @@ class SherpaNcnnAsr(AsrBase): self._notify_complete(result) segment_id += 1 self._recognizer.reset() -''' - - while self._stop_event.is_set(): - logger.info(f'_recognize_loop000') - self._notify_complete('介绍中国5000年历史文学') - logger.info(f'_recognize_loop111') - segment_id += 1 - time.sleep(150) - logger.info(f'_recognize_loop222') - logger.info(f'_recognize_loop exit') + ''' diff --git a/human/human_render.py b/human/human_render.py index 186ddbc..6cd816a 100644 --- a/human/human_render.py +++ b/human/human_render.py @@ -48,7 +48,7 @@ class HumanRender(AudioHandler): logging.info('human render run') while self._exit_event.is_set() and self._is_running: self._run_step() - delay = 0.04 + delay = 0.02 time.sleep(delay) logging.info('human render exit') diff --git a/ui/pygame_ui.py b/ui/pygame_ui.py index 134b580..96871e4 100644 --- a/ui/pygame_ui.py +++ b/ui/pygame_ui.py @@ -17,14 +17,53 @@ logger = logging.getLogger(__name__) current_file_path = os.path.dirname(os.path.abspath(__file__)) +def cal_box(inv_m, p): + x = inv_m[0][0] * p[0] + inv_m[0][1] * p[1] + inv_m[0][2] + y = inv_m[1][0] * p[0] + inv_m[1][1] * p[1] + inv_m[1][2] + return x, y + + def img_warp_back_inv_m(img, img_to, inv_m): - h_up, w_up, c = img_to.shape - mask = np.ones_like(img).astype(np.float32) + h_up, w_up, c = img.shape + # mask = np.ones_like(img).astype(np.float32) + # inv_mask = cv2.warpAffine(mask, inv_m, (w_up, h_up)) + # inv_img = cv2.warpAffine(img, inv_m, (w_up, h_up)) + # mask_indices = inv_mask == 1 + # if 4 == c: + # img_to[:, :, :3][mask_indices] = inv_img[mask_indices] + # else: + # img_to[inv_mask == 1] = inv_img[inv_mask == 1] + # return img_to + cv2.imwrite('./face.png', img) + tx = inv_m[0][2] + ty = inv_m[1][2] + + inv_m[0][2] = 0 + inv_m[1][2] = 0 + + p0 = cal_box(inv_m, (0, 0)) + p1 = cal_box(inv_m, (w_up, 0)) + p2 = cal_box(inv_m, (w_up, h_up)) + p3 = cal_box(inv_m, (0, h_up)) + lp = (min(p0[0], p3[0]), min(p0[1], p1[1])) + rp = (max(p2[0], p1[0]), min(p2[1], p3[1])) + + w_up = int(rp[0] - lp[0]) + h_up = int(rp[1] - lp[1]) + + print(f'src_x:{w_up}, src_y:{h_up}') + inv_m[0][2] = 0 + inv_m[1][2] = 0 + + mask = np.ones_like(img, dtype=np.float32) inv_mask = cv2.warpAffine(mask, inv_m, (w_up, h_up)) inv_img = cv2.warpAffine(img, inv_m, (w_up, h_up)) - mask_indices = inv_mask == 1 - if 4 == c: - img_to[:, :, :3][mask_indices] = inv_img[mask_indices] + cv2.imwrite('./combine_frame.png', inv_img[inv_mask == 1]) + cv2.imwrite('./combine_frame-1.png', img_to) + + if c == 4: + # img_to[30:h, 30:w][:, :, :3] = img + img_to[:, :, :3][inv_mask == 1] = inv_img[inv_mask == 1] else: img_to[inv_mask == 1] = inv_img[inv_mask == 1] return img_to @@ -58,13 +97,13 @@ class PyGameUI: def __init__(self): self._human_context = None self._queue = None - self.screen_ = pygame.display.set_mode((1920, 1080), HWSURFACE | DOUBLEBUF | RESIZABLE) + self.screen_ = pygame.display.set_mode((920, 860), HWSURFACE | DOUBLEBUF | RESIZABLE) self.clock = pygame.time.Clock() background = os.path.join(current_file_path, '..', 'data', 'background', 'background.jpg') logger.info(f'background: {background}') self._background = pygame.image.load(background).convert() - self.background_display_ = pygame.transform.scale(self._background, (1920, 1080)) + self.background_display_ = pygame.transform.scale(self._background, (920, 860)) self._human_image = None self.running = True