BQ-Wang0511/TalkLikeYou-Streaming-RealTime-Demo

Real-time browser demo for Talk Like You

TalkLikeYou – 실시간 대화 헤드 데모

기능 설명 – 브라우저 기반의 데모로, 정적 포트레이트(또는 동영상)를 업로드한 오디오, 실시간 마이크 입력, 또는 챗-LLM이 생성한 발화에 맞춰 입모양을 동기화하는 대화 헤드로 변환합니다. 기존 동영상을 다브할 수도 있으며, 원본 자세와 타이밍을 유지하면서 오직 입 움직임만 교체할 수 있습니다. 또한 LLM 응답, TTS 오디오, 아바타 애니메이션을 함께 스트리밍하는 챗 에이전트로도 작동합니다.

주요 기능

  • 오디오 모드 – 이미지 아바타를 업로드한 후 오디오 파일이나 실시간 마이크 입력을 제공하면, 실시간으로 입 움직임을 생성합니다.
  • 비디오 다브 모드 – 소스 비디오와 새로운 오디오 트랙을 제공합니다. 데모는 원본 머리 자세를 유지하고, 오직 발화와 관련된 입 움직임만 교체합니다.
  • 챗 에이전트 – 어떤 OpenAI 호환 챗, STT, TTS 서비스에도 연결할 수 있습니다. 텍스트 또는 음성 입력을 LLM에 전달하고, 응답은 텍스트, 음성 합성, 동기화된 아바타 애니메이션으로 스트리밍됩니다.
  • 사전 설정된 발화 스타일 – "습관 ID"(예: 192, 166, 202)를 사용해 참조 동영상 없이 다양한 입 움직임 스타일을 전환할 수 있습니다.
  • 실시간 성능 – NVIDIA RTX 3090에서는 30 FPS 이상으로 작동하며 GPU 메모리 사용량은 4GB 미만, 고해상도 얼굴 세부 정보를 제공합니다.

작동 방식 (개요)

  1. 아바타 등록 – 업로드된 이미지/비디오에서 얼굴을 감지하고 자르며, 얼굴 특징(중립적인 입 움직임 쉘 포함)을 캐시합니다. 이 단계는 아바타당 한 번만 수행됩니다.
  2. 스트리밍 렌더러 – 오디오를 청크(기본 1초)로 나누어 습관 조건부 입 움직임 생성기에 전달합니다. 흐름 매칭 포즈 브랜치(또는 Ditto-오디오 기반 포즈)가 머리 움직임을 제공합니다. 생성된 프레임은 원본 소스에 합성되어 브라우저로 스트리밍됩니다.
  3. 챗 통합 – 서버는 사용자 텍스트 또는 녹음된 발음을 설정된 LLM 및 TTS 엔드포인트로 전달합니다. 각 토큰/세그먼트가 도착할 때마다 해당 오디오와 아바타 프레임이 생성되어 표시됩니다.

설치

# conda 환경 생성 (Python 3.10, CUDA 12.1, cuDNN 9)
conda env create -f environment.yaml
conda activate talklikeyou-demo
# 또는 PyTorch를 수동으로 설치한 후:
pip install -r requirements.txt

요구 사항: Linux, NVIDIA GPU, FFmpeg.

데모 실행

cd TalkLikeYou-Streaming-RealTime-Demo
CUDA_VISIBLE_DEVICES=0 python app.py --host 0.0.0.0 --port 5070
# 브라우저에서 http://127.0.0.1:5070 열기
  • UI에서 오디오, 비디오 다브, 또는 챗 에이전트를 선택합니다.
  • 이미지(오디오/챗) 또는 비디오(비디오 다브)를 업로드하고 아바타를 등록합니다.
  • 오디오 모드에서는 오디오 파일을 선택하거나 실시간 마이크를 활성화하고 스트리밍 시작을 클릭합니다.
  • 비디오 다브 모드에서는 소스 비디오와 오디오 파일을 업로드하고 스트리밍을 시작합니다.
  • 챗 에이전트에서는 환경 변수(또는 .env 파일)로 LLM/STT/TTS 엔드포인트를 설정하고 챗 박스를 통해 상호작용합니다.

설정 요약

  • 습관 ID (Lip person ID)는 발화 스타일을 제어합니다. 추천 값은 192, 166, 202입니다.
  • 가이던스 강도 (Lip guidance, Pose guidance)는 모델이 선택한 습관을 얼마나 강하게 따를지 조절합니다.
  • 샘플링 스텝 수 – 실시간 설정은 1 스텝. 스텝 수를 늘리면 지연이 증가합니다.
  • 청크 크기 – Motion chunk (frames) 및 Audio chunk (seconds)는 지연과 처리량 사이의 트레이드오프를 조절합니다.
  • Ditto 포즈 – 활성화 시 이미지 아바타에 Ditto의 오디오 기반 포즈 생성기를 사용합니다. 비활성화하면 포즈 습관을 선택할 수 있습니다.
  • 챗 에이전트 – TALKLIKEYOU_LLM_BASE_URL, TALKLIKEYOU_LLM_API_KEY 등을 어떤 OpenAI 호환 서비스에도 연결할 수 있습니다. STT 및 TTS에도 동일하게 설정 가능합니다.

모델 체크포인트

  • Hugging Face 리포지토리 doubi-killer/TalkLikeYou에서 필요한 체크포인트를 다운로드하고, README에 설명된 대로 로컬 checkpoints/ 디렉터리에 배치하세요 (오디오 인코더, lip_motion.pt, pose_motion.pt, 런타임 자산).
  • 데모는 이 로컬 경로를 가리키는 runtime_config.pkl을 함께 제공합니다.

라이선스

  • 데모 코드: MIT 라이선스.
  • 제3자 구성 요소 (Ditto, LivePortrait)는 각각 원래 라이선스를 유지합니다 (자세한 내용은 THIRD_PARTY_NOTICES.md 참조).

누가 사용할 수 있나요

  • 실시간 입모양 동기화 및 아바타 애니메이션을 연구하는 연구자.
  • 인터랙티브 가상 에이전트, 스트리밍 아바타, 비디오 다브 도구를 개발하는 개발자.
  • 클라우드 추론 없이 가볍고 로컬에서 실행 가능한 대화 헤드 데모를 원하는 크리에이터.

문의처 – 질문은 wangbaiqin0511@gmail.com으로 보내주세요.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트