플러그인 설정
모델 구성
Realistic 및 Mood-Enabled Realistic 모델을 안정적으로 작동시키려면 긴 무음 구간에서 생성기를 재사용하지 말고 각 새로운 오디오 재생 전에 생성기를 다시 생성하세요. 자세한 내용은 문제 해결의 생성기 재생성을 참조하세요.
표준 모델 구성
Create Runtime Viseme Generator 노드는 대부분의 시나리오에서 잘 작동하는 기본 설정을 사용합니다. 구성은 Animation Blueprint 블렌딩 노드 속성을 통해 처리됩니다.
Animation Blueprint 구성 옵션에 대한 자세한 내용은 아래의 립 싱크 구성 섹션을 참조하세요.
사실적인 모델 구성
Create Realistic MetaHuman Lip Sync Generator 노드는 생성기의 동작을 사용자 지정할 수 있는 선택적 Configuration 매개변수를 허용합니다.
모델 유형
Model Type 설정은 사용할 사실적인 모델의 버전을 결정합니다.
| 모델 유형 | 성능 | 시각적 품질 | 노이즈 처리 | 권장 사용 사례 |
|---|---|---|---|---|
| Highly Optimized (기본값) | 최고 성능, 최저 CPU 사용량 | 우수한 품질 | 배경 소음이나 비음성 사운드에서 눈에 띄는 입 움직임이 나타날 수 있음 | 깨끗한 오디오 환경, 성능이 중요한 시나리오 |
| Semi-Optimized | 우수한 성능, 중간 CPU 사용량 | 높은 품질 | 노이즈가 있는 오디오에서 더 나은 안정성 | 성능과 품질의 균형, 혼합 오디오 조건 |
| Original | 최신 CPU에서 실시간 사용에 적합 | 최고 품질 | 배경 소음 및 비음성 사운드에 가장 안정적 | 고품질 프로덕션, 노이즈가 많은 오디오 환경, 최대 정확도가 필요할 때 |
성능 설정
Intra Op Threads: 내부 모델 처리 작업에 사용되는 스레드 수를 제어합니다.
- 0 (기본값/자동): 자동 감지 사용 (일반적으로 사용 가능한 CPU 코어의 1/4, 최대 4)
- 1-16: 스레드 수를 수동으로 지정합니다. 값이 높을수록 멀티코어 시스템에서 성능이 향상될 수 있지만 CPU 사용량이 증가합니다.
Inter Op Threads: 다양한 모델 작업의 병렬 실행에 사용되는 스레드 수를 제어합니다.
- 0 (기본값/자동): 자동 감지 사용 (일반적으로 사용 가능한 CPU 코어의 1/8, 최대 2)
- 1-8: 스레드 수를 수동으로 지정합니다. 일반적으로 실시간 처리를 위해 낮게 유지됩니다.
처리 청크 크기
Processing Chunk Size는 각 추론 단계에서 처리되는 샘플 수를 결정합니다. 기본값은 160 샘플 (16kHz에서 10ms 오디오)입니다.
- 값이 작을수록 더 빈번한 업데이트를 제공하지만 CPU 사용량이 증가합니다.
- 값이 클수록 CPU 부하가 줄어들지만 립 싱크 응답성이 감소할 수 있습니다.
- 최적의 정렬을 위해 160의 배수를 사용하는 것이 좋습니다.

Mood-Enabled 모델 구성
Create Realistic MetaHuman Lip Sync With Mood Generator 노드는 기본 사실적인 모델 이상의 추가 구성 옵션을 제공합니다.
기본 구성
Lookahead Ms: 립 싱크 정확도 향상을 위한 선행 시간(밀리초)입니다.
- 기본값: 80ms
- 범위: 20ms ~ 200ms (20으로 나누어 떨어져야 함)
- 값이 높을수록 동기화가 더 좋아지지만 지연 시간이 증가합니다.
Output Type: 생성되는 얼굴 컨트롤을 제어합니다.
- Full Face: 모든 81개 얼굴 컨트롤 (눈썹, 눈, 코, 입, 턱, 혀)
- Mouth Only: 입, 턱 및 혀 관련 컨트롤만 해당
Performance Settings: 일반 사실적인 모델과 동일한 Intra Op Threads 및 Inter Op Threads 설정을 사용합니다.
무드 설정
사용 가능한 무드:
- Neutral, Happy, Sad, Disgust, Anger, Surprise, Fear
- Confident, Excited, Bored, Playful, Confused
Mood Intensity: 무드가 애니메이션에 영향을 미치는 강도를 제어합니다 (0.0 ~ 1.0).
런타임 무드 제어
런타임 중에 다음 함수를 사용하여 무드 설정을 조정할 수 있습니다.
- Set Mood: 현재 무드 유형을 변경합니다.
- Set Mood Intensity: 무드가 애니메이션에 영향을 미치는 강도를 조정합니다 (0.0 ~ 1.0).
- Set Lookahead Ms: 동기화를 위한 선행 시간을 수정합니다.
- Set Output Type: Full Face와 Mouth Only 컨트롤 간에 전환합니다.

무드 선택 가이드
콘텐츠에 따라 적절한 무드를 선택하세요.
| 무드 | 가장 적합한 경우 | 일반적인 강도 범위 |
|---|---|---|
| Neutral | 일반 대화, 내레이션, 기본 상태 | 0.5 - 1.0 |
| Happy | 긍정적인 콘텐츠, 즐거운 대화, 축하 | 0.6 - 1.0 |
| Sad | 우울한 콘텐츠, 감정적인 장면, 엄숙한 순간 | 0.5 - 0.9 |
| Disgust | 부정적인 반응, 불쾌한 콘텐츠, 거부 | 0.4 - 0.8 |
| Anger | 공격적인 대화, 대립적인 장면, 좌절 | 0.6 - 1.0 |
| Surprise | 예상치 못한 사건, 폭로, 충격 반응 | 0.7 - 1.0 |
| Fear | 위협적인 상황, 불안, 긴장된 대화 | 0.5 - 0.9 |
| Confident | 전문적인 프레젠테이션, 리더십 대화, 단호한 연설 | 0.7 - 1.0 |
| Excited | 에너지 넘치는 콘텐츠, 발표, 열정적인 대화 | 0.8 - 1.0 |
| Bored | 단조로운 콘텐츠, 무관심한 대화, 지친 연설 | 0.3 - 0.7 |
| Playful | 캐주얼한 대화, 유머, 가벼운 상호작용 | 0.6 - 0.9 |
| Confused | 질문이 많은 대화, 불확실성, 당혹감 | 0.4 - 0.8 |
Animation Blueprint 구성
립 싱크 구성
- Standard Model
- Realistic Models
Blend Runtime MetaHuman Lip Sync 노드에는 속성 패널에 구성 옵션이 있습니다.
| 속성 | 기본값 | 설명 |
|---|---|---|
| Interpolation Speed | 25 | 립 무브먼트가 비짐 간에 전환되는 속도를 제어합니다. 값이 높을수록 더 빠르고 급격한 전환이 발생합니다. |
| Reset Time | 0.2 | 립 싱크가 재설정되는 시간(초)입니다. 오디오가 중지된 후 립 싱크가 계속되는 것을 방지하는 데 유용합니다. |
웃음 애니메이션
오디오에서 감지된 웃음에 동적으로 반응하는 웃음 애니메이션을 추가할 수도 있습니다.
Blend Runtime MetaHuman Laughter노드를 추가합니다.RuntimeVisemeGenerator변수를Viseme Generator핀에 연결합니다.- 이미 립 싱크를 사용 중인 경우:
Blend Runtime MetaHuman Lip Sync노드의 출력을Blend Runtime MetaHuman Laughter노드의Source Pose에 연결합니다.Blend Runtime MetaHuman Laughter노드의 출력을Output Pose의Result핀에 연결합니다.
- 립 싱크 없이 웃음만 사용하는 경우:
- 소스 포즈를
Blend Runtime MetaHuman Laughter노드의Source Pose에 직접 연결합니다. - 출력을
Result핀에 연결합니다.
- 소스 포즈를

오디오에서 웃음이 감지되면 캐릭터가 그에 따라 동적으로 애니메이션됩니다.
웃음 설정
Blend Runtime MetaHuman Laughter 노드에는 자체 설정 옵션이 있습니다:
| 속성 | 기본값 | 설명 |
|---|---|---|
| 보간 속도 (Interpolation Speed) | 25 | 웃음 애니메이션 간 입술 움직임 전환 속도를 제어합니다. 값이 높을수록 더 빠르고 급격한 전환이 발생합니다. |
| 리셋 시간 (Reset Time) | 0.2 | 웃음이 리셋되는 시간(초)입니다. 오디오가 중지된 후 웃음이 계속되는 것을 방지하는 데 유용합니다. |
| 최대 웃음 가중치 (Max Laughter Weight) | 0.7 | 웃음 애니메이션의 최대 강도를 조정합니다(0.0 - 1.0). |
참고: 웃음 감지는 현재 Standard Model에서만 사용할 수 있습니다.
Blend Realistic MetaHuman Lip Sync 노드에는 속성 패널에 설정 옵션이 있습니다:
| 속성 | 기본값 | 설명 |
|---|---|---|
| 보간 속도 (Interpolation Speed) | 30 | 활성 음성 중 표정 전환 속도를 제어합니다. 값이 높을수록 더 빠르고 급격한 전환이 발생합니다. |
| 유휴 보간 속도 (Idle Interpolation Speed) | 15 | 표정이 유휴/중립 상태로 돌아가는 속도를 제어합니다. 값이 낮을수록 더 부드럽고 점진적으로 휴식 자세로 복귀합니다. |
| 리셋 시간 (Reset Time) | 0.2 | 립싱크가 유휴 상태로 리셋되는 시간(초)입니다. 오디오 중지 후 표정이 계속되는 것을 방지하는 데 유용합니다. |
| 유휴 상태 유지 (Preserve Idle State) | false | 활성화되면 중립으로 리셋하는 대신 유휴 기간 동안 마지막 감정 상태를 유지합니다. |
| 눈 표정 유지 (Preserve Eye Expressions) | true | 유휴 상태 동안 눈 관련 얼굴 컨트롤을 유지할지 여부를 제어합니다. Preserve Idle State가 활성화된 경우에만 효과적입니다. |
| 눈썹 표정 유지 (Preserve Brow Expressions) | true | 유휴 상태 동안 눈썹 관련 얼굴 컨트롤을 유지할지 여부를 제어합니다. Preserve Idle State가 활성화된 경우에만 효과적입니다. |
| 입 모양 유지 (Preserve Mouth Shape) | false | 유휴 상태 동안 입 모양 컨트롤(혀, 턱과 같은 음성 특정 움직임 제외)을 유지할지 여부를 제어합니다. Preserve Idle State가 활성화된 경우에만 효과적입니다. |
유휴 상태 유지 (Idle State Preservation)
Preserve Idle State 기능은 Realistic 모델이 침묵 구간을 처리하는 방식을 다룹니다. 개별 비쥼(viseme)을 사용하고 침묵 중에 일관되게 0 값으로 돌아가는 Standard 모델과 달리, Realistic 모델의 신경망은 MetaHuman의 기본 휴식 자세와 다른 미묘한 얼굴 위치를 유지할 수 있습니다.
활성화 시기:
- 음성 구간 사이에 감정 표현 유지
- 캐릭터 성격 특성 보존
- 시네마틱 시퀀스에서 시각적 연속성 보장
부위별 제어 옵션:
- 눈 표정 (Eye Expressions): 눈을 가늘게 뜨거나 크게 뜨는 동작, 눈꺼풀 위치 유지
- 눈썹 표정 (Brow Expressions): 눈썹과 이마 위치 유지
- 입 모양 (Mouth Shape): 음성 움직임(혀, 턱)은 리셋하면서 일반적인 입 곡률 유지
기존 애니메이션과 결합
기존 바디 애니메이션 및 사용자 지정 표정 애니메이션과 함께 립싱크 및 웃음을 덮어쓰지 않고 적용하려면:
- 바디 애니메이션과 최종 출력 사이에
Layered blend per bone노드를 추가합니다.Use Attached Parent가 true인지 확인하십시오. - 레이어 설정을 구성합니다:
Layer Setup배열에 1개 항목 추가- 레이어의
Branch Filters에 3개 항목을 추가하고 다음Bone Name을 설정합니다:FACIAL_C_FacialRootFACIAL_C_Neck2RootFACIAL_C_Neck1Root
- 사용자 지정 표정 애니메이션의 경우 중요:
Curve Blend Option에서 "Use Max Value" 를 선택합니다. 이렇게 하면 사용자 지정 표정 애니메이션(표현, 감정 등)이 립싱크 위에 적절하게 레이어링됩니다. - 연결을 만듭니다:
- 기존 애니메이션(예:
BodyPose) →Base Pose입력 - 표정 애니메이션 출력(립싱크 및/또는 웃음 노드에서) →
Blend Poses 0입력 - 레이어드 블렌드 노드 → 최종
Result포즈
- 기존 애니메이션(예:

모프 타겟 세트 선택
- Standard Model
- Realistic Models
Standard Model은 사용자 지정 포즈 애셋 설정을 통해 본질적으로 모든 모프 타겟 명명 규칙을 지원하는 포즈 애셋을 사용합니다. 추가 구성이 필요하지 않습니다.
Blend Realistic MetaHuman Lip Sync 노드에는 표정 애니메이션에 사용할 모프 타겟 명명 규칙을 결정하는 Morph Target Set 속성이 포함되어 있습니다:
| 모프 타겟 세트 | 설명 | 사용 사례 |
|---|---|---|
| MetaHuman (기본값) | 표준 MetaHuman 모프 타겟 이름 (예: CTRL_expressions_jawOpen) | MetaHuman 캐릭터 |
| ARKit | Apple ARKit 호환 이름 (예: JawOpen, MouthSmileLeft) | ARKit 기반 캐릭터 |
립싱크 동작 미세 조정
특정 립싱크 커브 조정
Modify Curve 노드를 사용하여 립싱크로 생성된 개별 얼굴 움직임을 약화(또는 증폭)시킬 수 있습니다. 이는 특정 커브가 오디오 콘텐츠나 캐릭터에 비해 너무 두드러져 보일 때 유용합니다.
설정:
- 립싱크 블렌드 노드 뒤에
Modify Curve노드를 추가합니다. - 노드를 마우스 오른쪽 버튼으로 클릭하고 Add Curve Pin을 선택한 다음 조정하려는 커브 이름을 입력합니다.
- 노드의 Apply Mode 속성을 Scale로 설정합니다.
- Value 매개변수를 설정합니다: 1.0 미만의 값은 움직임을 약화시키고, 1.0 초과 값은 증폭시킵니다 (예: 0.8 = 20% 감소).
일반적으로 조정되는 커브:
| 커브 이름 | 목적 | 적용 대상 | 일반적인 조정 |
|---|---|---|---|
CTRL_expressions_tongueOut | 특정 음소 중 혀 내밀기 | Standard 모델 | 0.8로 돌출 감소 |
CTRL_expressions_jawOpen | 턱 열림 범위 | Realistic 모델 | 0.9로 턱 움직임 감소 |
동일한 Modify Curve 노드에 여러 커브 핀을 추가하여 한 번에 여러 커브를 조정할 수 있습니다.
분위기별 미세 조정
분위기 지원 모델의 경우 특정 감정 표현을 미세 조정할 수 있습니다:
눈썹 제어:
CTRL_expressions_browRaiseInL/CTRL_expressions_browRaiseInR- 눈썹 안쪽 올리기CTRL_expressions_browRaiseOuterL/CTRL_expressions_browRaiseOuterR- 눈썹 바깥쪽 올리기CTRL_expressions_browDownL/CTRL_expressions_browDownR- 눈썹 내리기
눈 표정 제어:
CTRL_expressions_eyeSquintInnerL/CTRL_expressions_eyeSquintInnerR- 눈 가늘게 뜨기CTRL_expressions_eyeCheekRaiseL/CTRL_expressions_eyeCheekRaiseR- 볼 올리기
모델 비교 및 선택
모델 간 선택
프로젝트에 사용할 립싱크 모델을 결정할 때 다음 요소를 고려하십시오:
| 고려 사항 | Standard Model | Realistic Model | 분위기 지원 Realistic Model |
|---|---|---|---|
| 캐릭터 호환성 | MetaHuman 및 모든 사용자 지정 캐릭터 유형 | MetaHuman (및 ARKit) 캐릭터 | MetaHuman (및 ARKit) 캐릭터 |
| 시각적 품질 | 효율적인 성능의 우수한 립싱크 | 더 자연스러운 입 움직임으로 향상된 사실감 | 감정 표현이 포함된 향상된 사실감 |
| 성능 | 모바일/VR을 포함한 모든 플랫폼에 최적화 | 더 높은 리소스 요구 사항 | 더 높은 리소스 요구 사항 |
| 기능 | 14개 비쥼, 웃음 감지 | 81개 얼굴 컨트롤, 3개 최적화 수준 | 81개 얼굴 컨트롤, 12개 분위기, 구성 가능한 출력 |
| 플랫폼 지원 | Windows, Android, Quest | Windows, Mac, iOS, Linux, Android, Quest | Windows, Mac, iOS, Linux, Android, Quest |
| 사용 사례 | 일반 애플리케이션, 게임, VR/AR, 모바일 | 시네마틱 경험, 클로즈업 상호작용 | 감정적 스토리텔링, 고급 캐릭터 상호작용 |
엔진 버전 호환성
Unreal Engine 5.2를 사용하는 경우, UE의 리샘플링 라이브러리 버그로 인해 Realistic Models가 올바르게 작동하지 않을 수 있습니다. 안정적인 립싱크 기능이 필요한 UE 5.2 사용자는 대신 Standard Model을 사용하십시오.
이 문제는 UE 5.2에 국한되며 다른 엔진 버전에는 영향을 미치지 않습니다.
성능 권장 사항
- 대부분의 프로젝트에서 Standard Model은 품질과 성능의 탁월한 균형을 제공합니다.
- MetaHuman 캐릭터에 대해 최고 수준의 시각적 충실도가 필요할 때 Realistic Model을 사용하십시오.
- 애플리케이션에서 감정 표현 제어가 중요할 때 분위기 지원 Realistic Model을 사용하십시오.
- 모델을 선택할 때 대상 플랫폼의 성능 기능을 고려하십시오.
- 다양한 최적화 수준을 테스트하여 특정 사용 사례에 가장 적합한 균형을 찾으십시오.
문제 해결
일반적인 문제
Realistic Models용 생성기 재생성: Realistic Models의 안정적이고 일관된 작동을 위해, 비활성 기간 후에 새 오디오 데이터를 입력할 때마다 생성기를 다시 생성하는 것이 좋습니다. 이는 ONNX 런타임 동작으로 인해 침묵 기간 후 생성기를 재사용할 때 립싱크가 작동을 멈출 수 있기 때문입니다.
예를 들어, Play Sound 2D를 호출하거나 사운드 웨이브 재생 및 립싱크를 시작하는 다른 방법을 사용할 때마다 립싱크 생성기를 다시 생성할 수 있습니다:

Runtime Text To Speech 통합을 위한 플러그인 위치: Runtime MetaHuman Lip Sync를 Runtime Text To Speech와 함께 사용하는 경우(두 플러그인 모두 ONNX Runtime 사용), 플러그인이 엔진의 Marketplace 폴더에 설치되어 있으면 패키징된 빌드에서 문제가 발생할 수 있습니다. 해결 방법:
- UE 설치 폴더의
\Engine\Plugins\Marketplace에서 두 플러그인을 찾습니다 (예:C:\Program Files\Epic Games\UE_5.6\Engine\Plugins\Marketplace) RuntimeMetaHumanLipSync및RuntimeTextToSpeech폴더를 모두 프로젝트의Plugins폴더로 이동합니다.- 프로젝트에
Plugins폴더가 없으면.uproject파일과 동일한 디렉토리에 새로 만듭니다. - Unreal Editor를 다시 시작합니다.
이는 엔진의 Marketplace 디렉토리에서 여러 ONNX Runtime 기반 플러그인이 로드될 때 발생할 수 있는 호환성 문제를 해결합니다.
패키징 구성 (Windows): Windows에서 패키징된 프로젝트에서 립싱크가 올바르게 작동하지 않는 경우, Development 대신 Shipping 빌드 구성을 사용하고 있는지 확인하십시오. Development 구성은 패키징된 빌드에서 Realistic 모델 ONNX 런타임에 문제를 일으킬 수 있습니다.
해결 방법:
- 프로젝트 설정 → 패키징에서 빌드 구성을 Shipping으로 설정합니다.
- 프로젝트를 다시 패키징합니다.

일부 Blueprint 전용 프로젝트에서 Unreal Engine은 Shipping이 선택된 경우에도 Development 구성으로 빌드될 수 있습니다. 이런 경우, C++ 클래스를 하나 이상 추가하여(비어 있어도 됨) 프로젝트를 C++ 프로젝트로 변환하십시오. 이렇게 하려면 UE 편집기 메뉴에서 Tools → New C++ Class로 이동하여 빈 클래스를 생성합니다. 이렇게 하면 프로젝트가 Shipping 구성에서 올바르게 빌드됩니다. 프로젝트의 기능은 Blueprint 전용으로 유지될 수 있으며, C++ 클래스는 올바른 빌드 구성에만 필요합니다.
립싱크 응답성 저하: Streaming Sound Wave 또는 Capturable Sound Wave를 사용할 때 시간이 지남에 따라 립싱크 응답성이 저하되는 경우, 이는 메모리 누적 때문일 수 있습니다. 기본적으로 새 오디오가 추가될 때마다 메모리가 재할당됩니다. 이 문제를 방지하려면 ReleaseMemory 함수를 주기적으로(예: 30초마다) 호출하여 누적된 메모리를 해제하십시오.
성능 최적화:
- 성능 요구 사항에 따라 Realistic 모델의 Processing Chunk Size를 조정하십시오.
- 대상 하드웨어에 적합한 스레드 수를 사용하십시오.
- 전체 표정 애니메이션이 필요하지 않은 경우 분위기 지원 모델에 대해 Mouth Only 출력 유형 사용을 고려하십시오.