Chuyển tới nội dung chính

Cấu hình Plugin

Cấu hình mô hình

Tái tạo các trình tạo mô hình chân thực cho mỗi lần phát lại

Để hoạt động đáng tin cậy với các mô hình Realistic và Mood-Enabled Realistic, hãy tạo lại bộ tạo trước mỗi lần phát âm thanh mới thay vì tái sử dụng qua các khoảng im lặng dài. Xem Tạo lại Bộ tạo trong phần Xử lý sự cố để biết chi tiết.

Cấu hình Mô Hình Tiêu Chuẩn

Nút Create Runtime Viseme Generator sử dụng các cài đặt mặc định hoạt động tốt cho hầu hết các tình huống. Cấu hình được xử lý thông qua các thuộc tính của nút blending trong Animation Blueprint.

Để biết các tùy chọn cấu hình Animation Blueprint, hãy xem phần Cấu hình Lip Sync bên dưới.

Cấu hình mô hình thực tế

Nút Create Realistic MetaHuman Lip Sync Generator chấp nhận tham số Configuration tùy chọn, cho phép bạn tùy chỉnh hành vi của trình tạo:

Loại mô hình

Cài đặt Model Type xác định phiên bản nào của mô hình thực tế sẽ được sử dụng:

Loại mô hìnhHiệu suấtChất lượng hình ảnhXử lý nhiễuTrường hợp sử dụng được khuyến nghị
Tối ưu hóa cao (Mặc định)Hiệu suất cao nhất, sử dụng CPU thấp nhấtChất lượng tốtCó thể hiển thị chuyển động miệng đáng chú ý khi có tiếng ồn nền hoặc âm thanh không phải giọng nóiMôi trường âm thanh sạch, các tình huống yêu cầu hiệu suất cao
Bán tối ưu hóaHiệu suất tốt, sử dụng CPU ở mức vừa phảiChất lượng caoỔn định hơn với âm thanh nhiễuCân bằng giữa hiệu suất và chất lượng, điều kiện âm thanh hỗn hợp
Nguyên bảnPhù hợp để sử dụng thời gian thực trên CPU hiện đạiChất lượng cao nhấtỔn định nhất với tiếng ồn nền và âm thanh không phải giọng nóiSản phẩm chất lượng cao, môi trường âm thanh nhiễu, khi cần độ chính xác tối đa

Cài đặt Hiệu suất

Intra Op Threads: Kiểm soát số lượng luồng được sử dụng cho các hoạt động xử lý nội bộ của mô hình.

  • 0 (Mặc định/Tự động): Sử dụng phát hiện tự động (thường là 1/4 số lõi CPU khả dụng, tối đa 4)
  • 1-16: Chỉ định thủ công số luồng. Giá trị cao hơn có thể cải thiện hiệu suất trên hệ thống đa lõi nhưng sử dụng nhiều CPU hơn

Inter Op Threads: Kiểm soát số lượng luồng được sử dụng để thực thi song song các thao tác khác nhau của mô hình.

  • 0 (Mặc định/Tự động): Sử dụng phát hiện tự động (thường là 1/8 số lõi CPU khả dụng, tối đa 2)
  • 1-8: Chỉ định thủ công số luồng. Thường được giữ ở mức thấp để xử lý theo thời gian thực

Kích thước Khối Xử lý

Kích thước Khối Xử lý xác định số lượng mẫu được xử lý trong mỗi bước suy luận. Giá trị mặc định là 160 mẫu (10ms âm thanh ở tần số 16kHz):

  • Giá trị nhỏ hơn cung cấp cập nhật thường xuyên hơn nhưng tăng mức sử dụng CPU
  • Giá trị lớn hơn giảm tải CPU nhưng có thể làm giảm độ phản hồi của khớp môi
  • Nên sử dụng bội số của 160 để căn chỉnh tối ưu

Setting Processing Chunk Size

Cấu hình mô hình hỗ trợ cảm xúc

Nút Create Realistic MetaHuman Lip Sync With Mood Generator cung cấp các tùy chọn cấu hình bổ sung ngoài mô hình thực tế cơ bản:

Cấu hình cơ bản

Lookahead Ms: Thời gian nhìn trước tính bằng mili giây để cải thiện độ chính xác của khớp môi.

  • Mặc định: 80ms
  • Phạm vi: 20ms đến 200ms (phải chia hết cho 20)
  • Giá trị cao hơn cung cấp đồng bộ tốt hơn nhưng tăng độ trễ

Loại đầu ra: Kiểm soát loại điều khiển khuôn mặt nào được tạo ra.

  • Toàn bộ khuôn mặt: Tất cả 81 điều khiển khuôn mặt (lông mày, mắt, mũi, miệng, hàm, lưỡi)
  • Chỉ miệng: Chỉ các điều khiển liên quan đến miệng, hàm và lưỡi

Cài đặt hiệu suất: Sử dụng cùng các thiết lập Intra Op Threads và Inter Op Threads như mô hình thực tế thông thường.

Cài đặt cảm xúc

Các Tâm Trạng Có Sẵn:

  • Trung lập, Vui vẻ, Buồn bã, Ghê tởm, Tức giận, Ngạc nhiên, Sợ hãi
  • Tự tin, Phấn khích, Chán nản, Tinh nghịch, Bối rối

Cường độ cảm xúc: Kiểm soát mức độ ảnh hưởng của cảm xúc đến hoạt ảnh (0.0 đến 1.0)

Kiểm soát cảm xúc Runtime

Bạn có thể điều chỉnh cài đặt cảm xúc trong thời gian chạy bằng các hàm sau:

  • Đặt Tâm Trạng: Thay đổi loại tâm trạng hiện tại
  • Đặt Cường Độ Tâm Trạng: Điều chỉnh mức độ ảnh hưởng của tâm trạng đến hoạt ảnh (0.0 đến 1.0)
  • Đặt Thời Gian Nhìn Trước (Ms): Sửa đổi thời gian nhìn trước để đồng bộ hóa
  • Đặt Loại Đầu Ra: Chuyển đổi giữa điều khiển Toàn Bộ Khuôn Mặt và Chỉ Miệng

Mood Configuration

Hướng dẫn chọn tâm trạng

Chọn tâm trạng phù hợp dựa trên nội dung của bạn:

MoodPhù hợp nhất vớiKhoảng cường độ điển hình
Trung tínhHội thoại thông thường, tường thuật, trạng thái mặc định0.5 - 1.0
Vui vẻNội dung tích cực, hội thoại vui tươi, lễ kỷ niệm0.6 - 1.0
Buồn bãNội dung u sầu, cảnh xúc động, khoảnh khắc ảm đạm0.5 - 0.9
Ghê tởmPhản ứng tiêu cực, nội dung khó chịu, sự từ chối0.4 - 0.8
Tức giậnHội thoại hung hăng, cảnh đối đầu, sự bực bội0.6 - 1.0
Ngạc nhiênSự kiện bất ngờ, tiết lộ, phản ứng sốc0.7 - 1.0
Sợ hãiTình huống đe dọa, lo lắng, hội thoại hồi hộp0.5 - 0.9
Tự tinThuyết trình chuyên nghiệp, hội thoại lãnh đạo, lời nói quả quyết0.7 - 1.0
Hào hứngNội dung tràn đầy năng lượng, thông báo, hội thoại nhiệt tình0.8 - 1.0
Chán nảnNội dung đơn điệu, hội thoại thờ ơ, lời nói mệt mỏi0.3 - 0.7
Tinh nghịchTrò chuyện thân mật, hài hước, tương tác vui vẻ nhẹ nhàng0.6 - 0.9
Bối rốiHội thoại nhiều câu hỏi, sự không chắc chắn, sự hoang mang0.4 - 0.8

Cấu hình Animation Blueprint

Cấu hình Lip Sync

Nút Blend Runtime MetaHuman Lip Sync có các tùy chọn cấu hình trong bảng thuộc tính của nó:

Thuộc tínhMặc địnhMô tả
Tốc độ nội suy25Kiểm soát tốc độ chuyển đổi chuyển động môi giữa các viseme. Giá trị cao hơn dẫn đến chuyển đổi nhanh hơn, đột ngột hơn.
Thời gian đặt lại0.2Khoảng thời gian tính bằng giây sau đó quá trình đồng bộ môi được đặt lại. Điều này hữu ích để ngăn quá trình đồng bộ môi tiếp tục sau khi âm thanh đã dừng.

Hoạt ảnh tiếng cười

Bạn cũng có thể thêm các hoạt ảnh tiếng cười để phản hồi một cách linh hoạt khi phát hiện tiếng cười trong âm thanh:

  1. Thêm node Blend Runtime MetaHuman Laughter
  2. Kết nối biến RuntimeVisemeGenerator của bạn vào chân Viseme Generator
  3. Nếu bạn đã đang sử dụng lip sync:
    • Kết nối đầu ra từ node Blend Runtime MetaHuman Lip Sync đến Source Pose của node Blend Runtime MetaHuman Laughter
    • Kết nối đầu ra của node Blend Runtime MetaHuman Laughter đến chân Result của Output Pose
  4. Nếu chỉ sử dụng tiếng cười mà không có khớp môi:
    • Kết nối pose nguồn của bạn trực tiếp vào Source Pose của node Blend Runtime MetaHuman Laughter
    • Kết nối đầu ra tới chân Result

Blend Runtime MetaHuman Laughter

Khi phát hiện tiếng cười trong âm thanh, nhân vật của bạn sẽ tự động hoạt hình theo cách tương ứng:

Cấu hình tiếng cười

Nút Blend Runtime MetaHuman Laughter có các tùy chọn cấu hình riêng của nó:

Thuộc tínhMặc địnhMô tả
Tốc độ nội suy25Kiểm soát tốc độ chuyển đổi của chuyển động môi giữa các hoạt ảnh tiếng cười. Giá trị cao hơn dẫn đến chuyển đổi nhanh hơn, đột ngột hơn.
Thời gian đặt lại0.2Khoảng thời gian tính bằng giây sau đó tiếng cười được đặt lại. Điều này hữu ích để ngăn tiếng cười tiếp tục sau khi âm thanh đã dừng.
Trọng số tiếng cười tối đa0.7Điều chỉnh tỷ lệ cường độ tối đa của hoạt ảnh tiếng cười (0.0 - 1.0).

Lưu ý: Tính năng phát hiện tiếng cười hiện chỉ khả dụng với Mô hình Chuẩn.

Kết hợp với các Animation hiện có

Hướng dẫn bằng video

Thích xem hơn đọc? Hãy xem video hướng dẫn bao gồm cách thiết lập chính xác này.

Để áp dụng lip sync và tiếng cười cùng với các animation cơ thể hiện có và animation khuôn mặt tùy chỉnh mà không ghi đè lên chúng:

Chuyển động cơ thể

Thiết lập này áp dụng cho Animation Blueprint của khuôn mặt, vì lip sync không nằm trong Animation Blueprint của cơ thể. Đối với các animation cơ thể tùy chỉnh (ví dụ: thân trên, cánh tay và các chuyển động cơ thể khác), chỉ cần kết nối chuỗi animation của bạn (thông qua Sequence Player) trực tiếp với pose đầu ra trong Animation Blueprint của cơ thể. Không cần thiết lập bổ sung nào ở đó.

  1. Thêm node Layered blend per bone giữa các animation cơ thể của bạn và đầu ra cuối cùng. Đảm bảo Use Attached Parent được bật (true).
  2. Cấu hình thiết lập lớp:
    • Thêm 1 mục vào mảng Layer Setup
    • Thêm 3 mục vào Branch Filters cho layer, với các Bone Name sau:
      • FACIAL_C_FacialRoot
      • FACIAL_C_Neck2Root
      • FACIAL_C_Neck1Root
  3. Quan trọng đối với hoạt ảnh khuôn mặt tùy chỉnh: Trong Curve Blend Option, hãy chọn "Use Max Value". Điều này cho phép các hoạt ảnh khuôn mặt tùy chỉnh (biểu cảm, cảm xúc, v.v.) được xếp lớp đúng cách lên trên hoạt ảnh khớp môi.
  4. Tạo các kết nối:
    • Hoạt ảnh tùy chỉnh của bạn (thường là một Sequence Player với asset chuỗi hoạt ảnh mong muốn) → đầu vào Base Pose
    • Đầu ra hoạt ảnh khuôn mặt (từ các node lip sync và/hoặc tiếng cười) → đầu vào Blend Poses 0
    • Node blend phân lớp → pose Result cuối cùng

Layered Blend Per Bone

Tập hợp lựa chọn Morph Target

Mô hình Chuẩn sử dụng các pose asset vốn hỗ trợ mọi quy ước đặt tên morph target thông qua thiết lập pose asset tùy chỉnh. Không cần cấu hình bổ sung nào.

Tinh chỉnh hành vi Lip Sync

Mở rộng quy mô các đường cong Lip Sync cụ thể

Bạn có thể làm giảm (hoặc khuếch đại) các chuyển động khuôn mặt riêng lẻ do lip sync tạo ra bằng cách sử dụng node Modify Curve. Điều này hữu ích khi một curve cụ thể trông quá rõ rệt so với nội dung âm thanh hoặc nhân vật của bạn.

Thiết lập:

  1. Sau nút blend lip sync của bạn, thêm một nút Modify Curve
  2. Nhấp chuột phải vào nút và chọn Add Curve Pin, sau đó nhập tên đường cong bạn muốn chia tỷ lệ
  3. Đặt thuộc tính Apply Mode của nút thành Scale
  4. Đặt tham số Value: giá trị dưới 1.0 làm giảm chuyển động, giá trị trên 1.0 làm khuếch đại chuyển động (ví dụ: 0.8 = giảm 20%)

Các đường cong thường được chia tỷ lệ:

Tên đường congMục đíchÁp dụng choĐiều chỉnh điển hình
CTRL_expressions_tongueOutLưỡi nhô về phía trước trong một số âm vị nhất địnhMô hình tiêu chuẩn0.8 để giảm độ nhô ra
CTRL_expressions_jawOpenPhạm vi mở hàmMô hình chân thực0.9 để giảm chuyển động của hàm

Bạn có thể thêm nhiều chân đường cong vào cùng một nút Modify Curve để chia tỷ lệ nhiều đường cong cùng lúc.

Điều chỉnh tinh theo tâm trạng cụ thể

Đối với các mô hình hỗ trợ tâm trạng, bạn có thể tinh chỉnh các biểu cảm cảm xúc cụ thể:

Điều khiển lông mày:

  • CTRL_expressions_browRaiseInL / CTRL_expressions_browRaiseInR - Nhướn lông mày phần trong
  • CTRL_expressions_browRaiseOuterL / CTRL_expressions_browRaiseOuterR - Nhướn lông mày phần ngoài
  • CTRL_expressions_browDownL / CTRL_expressions_browDownR - Hạ lông mày

Điều khiển Biểu cảm Mắt:

  • CTRL_expressions_eyeSquintInnerL / CTRL_expressions_eyeSquintInnerR - Nheo mắt
  • CTRL_expressions_eyeCheekRaiseL / CTRL_expressions_eyeCheekRaiseR - Nâng má

So sánh và lựa chọn mô hình

Chọn Giữa Các Mô Hình

Khi quyết định sử dụng mô hình lip sync nào cho dự án của bạn, hãy cân nhắc các yếu tố sau:

Cân nhắcMô hình Tiêu chuẩnMô hình Chân thựcMô hình Chân thực hỗ trợ Cảm xúc
Khả năng tương thích nhân vậtMetaHumans và mọi loại nhân vật tùy chỉnhMetaHumans (và nhân vật ARKit)MetaHumans (và nhân vật ARKit)
Chất lượng hình ảnhKhớp môi tốt với hiệu suất tối ưuĐộ chân thực nâng cao với chuyển động miệng tự nhiên hơnĐộ chân thực nâng cao với biểu cảm cảm xúc
Hiệu suấtĐược tối ưu cho mọi nền tảng bao gồm di động/VRYêu cầu tài nguyên cao hơnYêu cầu tài nguyên cao hơn
Tính năng14 viseme, phát hiện tiếng cười81 bộ điều khiển khuôn mặt, 3 mức tối ưu hóa81 bộ điều khiển khuôn mặt, 12 cảm xúc, đầu ra có thể cấu hình
Hỗ trợ nền tảngWindows, Android, QuestWindows, Mac, iOS, Linux, Android, QuestWindows, Mac, iOS, Linux, Android, Quest
Trường hợp sử dụngỨng dụng thông thường, trò chơi, VR/AR, di độngTrải nghiệm điện ảnh, tương tác cận cảnhKể chuyện giàu cảm xúc, tương tác nhân vật nâng cao

Tương thích phiên bản Engine

Vấn đề tương thích UE 5.2

Nếu bạn đang sử dụng Unreal Engine 5.2, các Mô Hình Thực Tế (Realistic Models) có thể không hoạt động chính xác do lỗi trong thư viện lấy mẫu lại của UE. Đối với người dùng UE 5.2 cần chức năng đồng bộ khẩu hình (lip sync) đáng tin cậy, vui lòng sử dụng Mô Hình Chuẩn (Standard Model) để thay thế.

Sự cố này chỉ xảy ra riêng với UE 5.2 và không ảnh hưởng đến các phiên bản engine khác.

Khuyến nghị về Hiệu suất

  • Đối với hầu hết các dự án, Mô hình Tiêu chuẩn cung cấp sự cân bằng tuyệt vời giữa chất lượng và hiệu suất
  • Sử dụng Mô hình Hiện thực khi bạn cần độ trung thực hình ảnh cao nhất cho các nhân vật MetaHuman
  • Sử dụng Mô hình Hiện thực hỗ trợ Cảm xúc khi việc kiểm soát biểu cảm cảm xúc quan trọng đối với ứng dụng của bạn
  • Cân nhắc khả năng hiệu suất của nền tảng mục tiêu khi lựa chọn giữa các mô hình
  • Kiểm thử các mức độ tối ưu hóa khác nhau để tìm ra sự cân bằng tốt nhất cho trường hợp sử dụng cụ thể của bạn

Xử lý sự cố

Các vấn đề thường gặp

Tái tạo Generator cho các Mô Hình Thực Tế: Để vận hành đáng tin cậy và nhất quán với các Mô Hình Thực Tế, bạn nên tái tạo generator mỗi lần muốn đưa dữ liệu âm thanh mới vào sau một khoảng thời gian không hoạt động. Điều này là do hành vi của ONNX runtime có thể khiến lip sync ngừng hoạt động khi tái sử dụng generator sau những khoảng thời gian im lặng.

Ví dụ, bạn có thể tái tạo trình tạo khớp môi mỗi khi bắt đầu phát lại, chẳng hạn như bất cứ khi nào bạn gọi Play Sound 2D hoặc sử dụng bất kỳ phương pháp nào khác để bắt đầu phát sóng âm thanh và khớp môi:

Recreate Lip Sync Generator On Play Sound

Vị trí Plugin cho Tích hợp Runtime Text To Speech: Khi sử dụng Runtime MetaHuman Lip Sync cùng với Runtime Text To Speech (cả hai plugin đều sử dụng ONNX Runtime), bạn có thể gặp sự cố nếu các plugin được cài đặt trong thư mục Marketplace của engine. Để khắc phục điều này:

  1. Tìm cả hai plugin trong thư mục cài đặt UE của bạn tại \Engine\Plugins\Marketplace (ví dụ: C:\Program Files\Epic Games\UE_5.6\Engine\Plugins\Marketplace)
  2. Di chuyển cả hai thư mục RuntimeMetaHumanLipSyncRuntimeTextToSpeech vào thư mục Plugins của dự án bạn
  3. Nếu dự án của bạn không có thư mục Plugins, hãy tạo một thư mục mới trong cùng thư mục chứa tệp .uproject của bạn
  4. Khởi động lại Unreal Editor

Điều này giải quyết các vấn đề tương thích có thể xảy ra khi nhiều plugin dựa trên ONNX Runtime được tải từ thư mục Marketplace của engine.

Cấu hình đóng gói (Windows): Nếu lip sync không hoạt động chính xác trong dự án đã đóng gói trên Windows, hãy đảm bảo bạn đang sử dụng cấu hình build Shipping thay vì Development. Cấu hình Development có thể gây ra sự cố với ONNX runtime của các mô hình thực tế trong các bản build đã đóng gói.

Để sửa lỗi này:

  1. Trong Project Settings → Packaging của bạn, đặt Build Configuration thành Shipping
  2. Đóng gói lại dự án của bạn

Shipping Configuration

Dự án Chỉ-Dùng-Blueprint

Trong một số dự án chỉ dùng Blueprint, Unreal Engine vẫn có thể build ở cấu hình Development ngay cả khi đã chọn Shipping. Nếu điều này xảy ra, hãy chuyển đổi dự án của bạn thành dự án C++ bằng cách thêm ít nhất một lớp C++ (có thể để trống). Để thực hiện, hãy vào Tools → New C++ Class trong menu trình chỉnh sửa UE và tạo một lớp trống. Điều này sẽ buộc dự án build chính xác ở cấu hình Shipping. Dự án của bạn có thể vẫn chỉ dùng Blueprint về mặt chức năng, lớp C++ chỉ cần thiết để cấu hình build phù hợp.

Độ trễ phản hồi của Lip Sync bị suy giảm: Nếu bạn gặp tình trạng lip sync trở nên kém phản hồi hơn theo thời gian khi sử dụng Streaming Sound Wave hoặc Capturable Sound Wave, điều này có thể do sự tích tụ bộ nhớ. Theo mặc định, bộ nhớ được cấp phát lại mỗi khi có âm thanh mới được thêm vào. Để ngăn chặn vấn đề này, hãy gọi hàm ReleaseMemory định kỳ để giải phóng bộ nhớ tích tụ, chẳng hạn như mỗi 30 giây một lần.

Tối Ưu Hiệu Suất:

  • Điều chỉnh Kích thước Khối Xử lý cho các mô hình Realistic dựa trên yêu cầu hiệu suất của bạn
  • Sử dụng số lượng luồng phù hợp cho phần cứng mục tiêu của bạn
  • Cân nhắc sử dụng loại đầu ra Chỉ Miệng cho các mô hình hỗ trợ cảm xúc khi không cần hoạt ảnh khuôn mặt đầy đủ