AI 립싱크 기술이 얼굴은 두고 입만 다시 그리는 이유, 멀리 찍은 장면이 실패한 구조
AI 립싱크는 영상을 새로 만드는 게 아니라 얼굴을 먼저 찾고 입 부분만 새 음성에 맞춰 다시 그립니다. 그래서 얼굴이 작은 장면은 실패하고, 집 그래픽카드 16GB로도 6초 장면이 3분 안에 끝납니다.
방구석컴퍼니
혼자 일하는 사람 · 작업 기록
"영상을 다시 만드는 거예요, 입만 고치는 거예요?"
한국어로 말하던 캐릭터가 영어로 말하는 결과를 보면 이게 제일 먼저 궁금해집니다. 답은 뒤쪽이에요. 제가 쓴 무료 AI 립싱크 프로그램 TBDub(티비더브)은 영상을 한 장도 새로 생성하지 않습니다. 얼굴을 찾고, 입 주변만 새 음성에 맞춰 다시 그리고, 나머지는 원본 그대로 둡니다.
이 구조 하나가 세 가지를 설명해요. 왜 6초 장면이 집 그래픽카드에서 3분 안에 끝나는지, 왜 멀리서 찍은 장면은 아예 실패하는지, 왜 번역과 목소리는 따로 준비해야 하는지. 이미 만든 캐릭터 영상의 대사를 바꾸려다 막힌 분이 내 장면이 될지 안 될지를 미리 가늠할 수 있게, 제 컴퓨터(RTX 5080, 그래픽카드 메모리 16GB)에서 잰 숫자로 설명합니다.

입력은 영상 하나와 새 음성 하나다
TBDub이 받는 건 두 가지예요. 원래 영상과, 그 영상에 입힐 새 음성.
프로그램은 프레임마다 얼굴 위치를 잡고 입 둘레만 잘라 냅니다. 그 부분을 새 음성의 소리에 맞춰 다시 그린 다음 원래 프레임에 붙여 넣어요. 표정, 머리카락, 헤드폰을 쓰는 손동작, 창밖 배경은 손대지 않습니다.
위 사진의 왼쪽이 원본, 오른쪽이 영어 음성을 넣은 결과예요. 손 위치도 헤드폰 각도도 같습니다. 다른 건 입뿐이에요.
그래서 이 방식은 생성이 아니라 수선에 가깝습니다. 장면이 마음에 들었는데 대사만 바꾸고 싶을 때 맞는 도구예요.
다시 그린 입 말고도 달라지는 게 하나 있다
색이에요. 새로 붙인 얼굴 부분이 원래보다 살짝 밝고 따뜻하게 나옵니다.
장면 하나만 볼 땐 거의 모르는데, 앞뒤 장면과 이어 붙이면 얼굴 톤이 튈 수 있어요. 공식 색 보정 단계가 들어가서 생기는 차이로 보고 있습니다. 편집할 땐 이어 붙인 지점의 얼굴색부터 확인하세요.
얼굴을 먼저 찾아야 입을 그릴 수 있다
입을 그리려면 입이 어디 있는지부터 알아야 합니다. 그래서 첫 단계가 얼굴 찾기예요. 여기서 실패하면 뒤 단계는 시작도 안 합니다.

이 장면이 실제로 실패한 장면이에요. 열차 안을 멀리서 잡아서 얼굴이 손톱만 합니다. 얼굴 찾기 부품이 이 영상에서 얼굴을 하나도 찾지 못했다는 오류를 내고 멈췄어요.
개발사 논문도 같은 한계를 적어 뒀습니다. 얼굴이 작으면 입이 차지하는 정보가 너무 적어서 치아가 흐려지거나 윗니와 아랫니가 붙는다고요. 얼굴을 찾더라도 작은 얼굴은 결과가 약하다는 뜻입니다.
그래서 제가 묶은 키트는 그리기 전에 얼굴 검사부터 돌리고, 얼굴 너비가 160픽셀에 못 미치면 미리 경고를 띄웁니다. 한참 돌린 뒤에 실패를 알게 되는 대신 시작하자마자 멈추게 한 거예요.
고개를 빠르게 돌린 장면은 따라갔다
얼굴만 제대로 잡히면 움직임엔 생각보다 강했습니다.

다른 캐릭터 진상이 1초 동안 고개를 휙 돌리며 말하는 중간 거리 장면이에요. 51초 만에 입이 영어 대사로 바뀌었고, 돌아가는 얼굴을 따라 입도 같이 움직였습니다. 근접 장면(도아, 1초 남짓)은 57초였어요.
다만 개발사는 고개 각도가 크면 입 모양이 일그러지고 경계가 밀릴 수 있다고 밝혀 뒀습니다. 이 장면은 통과했지만, 옆얼굴에 가까워질수록 위험하다고 보는 게 맞아요. 고개를 크게 돌리는 장면은 결과를 반드시 비교 영상에서 다시 보세요.
30단계를 2단계로 줄여서 집 컴퓨터에서 돈다
TBDub에는 모델이 둘 있습니다. 30단계에 걸쳐 그리는 큰 선생 모델과, 그걸 따라 배워 2단계만에 그리는 학생 모델이에요. 집에서 쓰는 건 학생 모델입니다.
메모리 숫자로 보면 이렇습니다.
| 조건 | 그래픽카드 메모리 |
|---|---|
| 공식 기본 모드(학생 모델) | 약 28GB |
| 공식 절약 모드 | 약 15GB |
| 제 컴퓨터, 절약 모드로 6초 장면 | 최고 8GB 정도 |
| 키트가 정한 최소 / 권장 | 10GB / 12GB |
공식 기본 모드는 16GB 카드 거의 두 장 분량이에요. 공식 절약 모드도 16GB 카드에선 여유가 1GB도 안 남습니다. 저는 프레임을 잘게 나눠 처리하는 비공식 실행 방식을 써서 8GB 정도로 끝냈어요.
여기까지가 공식 문서와 제 실측입니다. 키트 최소 사양 10GB는 실제 10GB 카드로 잰 게 아니라, 제 카드의 메모리를 일부러 묶어서 작은 카드를 흉내 낸 시험으로 정했어요. 이 줄이 이 글에서 제가 틀릴 수 있는 숫자입니다.
측정 최고치로 사양을 정하면 틀린다
"최고 8GB 정도만 썼으니 8GB 카드면 되겠다."
측정값만 보면 이렇게 읽히기 쉽습니다. 숫자만 보면 8GB 카드로 될 것 같지만, 시험 결과는 반대였어요.
8GB 카드에서 프로그램 하나가 실제로 쓸 수 있는 양을 7GB로 잡고 제 카드 메모리를 묶었더니, 그린 결과를 영상으로 풀어내는 마지막 단계에서 메모리가 모자라 멈췄어요. 제 컴퓨터에서 잰 최고치가 8GB 정도였으니 7GB 울타리 안엔 처음부터 안 들어갔던 셈입니다.
그래서 키트 사양은 측정 최고치가 아니라 끝까지 통과한 시험으로 정했어요. 9GB로 묶은 시험(10GB 카드 상당)과 11GB로 묶은 시험(12GB 카드 상당)이 둘 다 끝까지 통과해서 최소 10GB, 권장 12GB가 됐습니다. 제가 시험한 대사 길이가 6초라, 키트는 대사를 60초 안으로 끊어 넣게 막아 뒀고요.
같은 장면을 레이턴트싱크에 넣으면 2분 늦게 끝났다
비교 대상은 바이트댄스가 공개한 레이턴트싱크(LatentSync) 1.6입니다. 같은 도아 정면 6초 장면, 같은 영어 음성, 같은 컴퓨터로 돌렸어요.
| 항목 | TBDub | 레이턴트싱크 1.6 |
|---|---|---|
| 걸린 시간 | 166초 | 280초 |
| 공식 최소 메모리 | 공식 절약 모드 약 15GB | 18GB |
| 16GB 카드 설치 | 비공식 실행 방식으로 바로 | 같이 깔리는 계산 도구를 새 버전으로 바꾼 뒤 |
| 제 눈에 보인 입 | 크게 벌리고 치아까지 보임 | 덜 벌리고 입술이 조금 뭉개짐 |

레이턴트싱크가 끝날 때쯤 TBDub은 이미 끝나고 2분 가까이 쉬고 있었던 셈이에요. 레이턴트싱크 공식 최소 사양은 18GB라 제 16GB 카드는 원래 기준 미달이었고, 그래도 완주는 했습니다.

기계 점수와 사람 눈 점수는 반대로 나왔다
여기서 조심할 게 있습니다. TBDub 논문 안에서도 기계로 잰 점수는 레이턴트싱크가 앞서요. 입 부분 화질을 잰 점수도, 입이 소리와 맞는지 잰 점수도 그렇습니다.
반대로 사람이 직접 보고 매긴 입모양 점수는 5점 만점에 TBDub이 4점 가까이, 레이턴트싱크가 2점 정도예요. 논문 저자도 입-소리 맞춤 점수가 사람의 느낌과 잘 안 맞는다고 적었습니다.
다만 이 사람 점수는 TBDub 개발사가 자체적으로 낸 평가예요. 제 눈 비교도 장면 하나뿐이고요. 그래서 저는 "TBDub이 더 낫다"가 아니라 "입을 크게 벌리는 대사에선 TBDub 쪽이 덜 뭉개졌다"까지만 말합니다. 판단은 비교 영상을 직접 틀어 보고 하세요.
번역과 목소리는 이 구조 밖에 있다
TBDub은 입만 그립니다. 번역도, 목소리도 만들지 않아요.

공식 저장소 첫 문장도 "기존 영상에 새 목소리를 준다"예요. 그래서 번역 더빙을 하려면 순서가 이렇게 됩니다.
- 대사를 다른 언어로 옮긴다(사람 또는 번역기)
- 그 대사를 읽는 목소리를 만든다(내 녹음 또는 음성 합성)
- 원래 영상과 그 목소리를 TBDub에 넣는다
도아 장면도 이 순서였어요. 원래 한국어로 말하던 영상에 시험용 무료 음성으로 만든 영어를 넣었습니다. 도아 원래 목소리를 따라 만든 건 아니에요.
유튜브 자동 더빙은 이 셋 중 1·2번만 해 줍니다. 한국어 원본이면 영어, 인도네시아어 두 언어로 목소리가 바뀌고 설명란에 auto-dubbed(자동 더빙됨) 표시가 붙지만, 입은 원래 한국어 그대로예요. 입까지 맞추는 기능은 일부 채널에서만 시험 중입니다. 1·2·3번을 한 번에 해 온 건 헤이젠 같은 유료 서비스였고요.
내 장면에 쓰기 전 확인할 네 가지
위에서 본 사례가 넷이니 확인도 넷입니다.
- 얼굴 크기 — 정면에 가깝고 얼굴이 화면 높이의 4분의 1 이상인 장면을 고릅니다(와이드 장면 실패).
- 고개 각도 — 빠르게 돌리는 건 됐지만 옆얼굴에 가까우면 비교 영상으로 확인합니다(진상 장면).
- 이어 붙일 때 색 — 새 얼굴이 살짝 밝아지니 앞뒤 장면과 톤을 맞춥니다.
- 대사와 목소리 — 번역문과 목소리는 따로 준비하고, 60초 안으로 끊어 넣습니다.
그래픽카드가 이미 있다면 돌릴 때마다 드는 건 전기값이에요. 카드가 계속 최대 전력으로 돌고 누진제 최고 단가를 적용해도 6초 장면 한 번에 5원쯤입니다. 대신 카드를 새로 사야 한다면 RTX 5080 출시가 999달러가 헤이젠 월 29달러 요금제 3년 가까이 치라, 그때는 공짜라는 말이 성립하지 않아요.
내 영상에서 얼굴이 가장 크게 잡힌 장면은 몇 초짜리인가요? 그 장면 하나부터 시작하면 됩니다. 제가 Windows에서 바로 돌게 묶은 키트는 방구석모각코 오픈채팅방의 공지에 올려 뒀고, 위 장면들이 실제로 움직이는 모습은 상단 영상에서 볼 수 있어요.