Compare commits

..

1 Commits

Author SHA1 Message Date
jocelyn
19f638ada3 [ADD]add logic of loop frame 2025-06-23 16:56:58 +08:00
2 changed files with 9 additions and 6 deletions

View File

@ -31,6 +31,8 @@ class AudioInferenceHandler(AudioHandler):
self._is_running = True
self.last_direction = 1
self.startfrom = 0
self.frame_indexes = []
self._exit_event = Event()
self._run_thread = Thread(target=self.__on_run, name="AudioInferenceHandlerThread")
self._exit_event.set()
@ -103,9 +105,10 @@ class AudioInferenceHandler(AudioHandler):
print('AudioInferenceHandler not running')
break
self.startfrom = self.frame_indexes[-1] if self.frame_indexes else 0
if is_all_silence:
frame_indexes, self.last_direction = human_status.get_index_v2(self.person_config["frame_config"], self.last_direction, batch_size) # [1,3,4]
for i, frame_idx in zip(range(batch_size), frame_indexes):
self.frame_indexes, self.last_direction = human_status.get_index_v2(self.startfrom, self.person_config["frame_config"], self.last_direction, batch_size) # [1,3,4]
for i, frame_idx in zip(range(batch_size), self.frame_indexes):
if not self._is_running:
break
# self.on_next_handle((None, mirror_index(length, index),
@ -119,9 +122,9 @@ class AudioInferenceHandler(AudioHandler):
img_batch = []
index_list = []
# for i in range(batch_size):
frame_indexes,self.last_direction = human_status.get_index_v2(self.person_config["frame_config"], self.last_direction, batch_size) # [1,3,4]
self.frame_indexes,self.last_direction = human_status.get_index_v2(self.startfrom, self.person_config["frame_config"], self.last_direction, batch_size) # [1,3,4]
# TODO: 推理状态下获取循环帧逻辑
for i, frame_idx in zip(range(len(mel_batch)), frame_indexes):
for i, frame_idx in zip(range(len(mel_batch)), self.frame_indexes):
# idx = mirror_index(length, index + i)
index_list.append(frame_idx)
face = face_list_cycle[frame_idx]

View File

@ -52,7 +52,7 @@ class HumanStatus:
self._current_frame = (self._current_frame + 1) % self._total_frames
return index
def get_index_v2(self, frame_config:list, last_direction:int=1, batch_size:int=5):
def get_index_v2(self, startfrom, frame_config:list, last_direction:int=1, batch_size:int=5):
"""
"""
audio_frame_length = batch_size
@ -68,7 +68,7 @@ class HumanStatus:
first_speak,# 刚开始讲话 向讲话移动
last_speak, # 讲话结束 向静默移动
)
startfrom = start_idx_list[-1]
# startfrom = start_idx_list[-1]
# 一次返回一个batch帧号
return start_idx_list, last_direction