# APNG Lip Sync Tool 개발기 - v7: APNG 생성 로직 ## 개요 생성된 viseme 이미지들을 조합하여 부드러운 APNG 애니메이션을 생성합니다. ## APNG 라이브러리 ```python from apng import APNG def create_lipsync_sequence_apng(viseme_sequence, viseme_images, output_path, frame_delay=100): """Create an APNG animation from a sequence of visemes.""" apng = APNG() for viseme in viseme_sequence: image_path = viseme_images.get(viseme, viseme_images["rest"]) apng.append_file(str(image_path), delay=frame_delay) apng.save(str(output_path)) return output_path ``` ## 트랜지션 프레임 입모양 간 자연스러운 전환을 위해 알파 블렌딩으로 중간 프레임을 생성: ```python def create_transition_apng(from_image, to_image, num_frames=2): """Create smooth transition between two visemes.""" img1 = Image.open(from_image) img2 = Image.open(to_image) for i in range(1, num_frames + 1): alpha = i / (num_frames + 1) blended = Image.blend(img1, img2, alpha) # Add to APNG... ``` ## 프레임 타이밍 - 기본 프레임 딜레이: 100ms (10fps) - 트랜지션 프레임: 50ms (더 빠르게) - TTS 동기화 시: 실제 음성 타이밍에 맞춤 --- *다음: v8 - 캐릭터 프로필 저장/관리*