Перейти к основному содержимому

Конфигурация плагина

Конфигурация модели

Пересоздайте генераторы реалистичных моделей для каждого воспроизведения.

Для надежной работы с моделями Realistic и Mood-Enabled Realistic пересоздавайте генератор перед каждым новым воспроизведением аудио, а не используйте его повторно во время длительных пауз. Подробнее см. Пересоздание генератора в разделе «Устранение неполадок».

Конфигурация стандартной модели

Узел Create Runtime Viseme Generator использует настройки по умолчанию, которые хорошо работают в большинстве сценариев. Конфигурация осуществляется через свойства узла смешивания Animation Blueprint.

Для параметров конфигурации Animation Blueprint см. раздел Конфигурация Lip Sync ниже.

Настройка реалистичной модели

Узел Create Realistic MetaHuman Lip Sync Generator принимает необязательный параметр Configuration, позволяющий настроить поведение генератора:

Тип модели

Настройка Тип модели определяет, какую версию реалистичной модели использовать:

Тип моделиПроизводительностьВизуальное качествоУстойчивость к шумуРекомендуемые сценарии использования
Высокооптимизированная (по умолчанию)Максимальная производительность, минимальное использование ЦПХорошее качествоВозможны заметные движения рта при фоновом шуме или неречевых звукахЧистые аудиосреды, сценарии, критичные к производительности
ПолуоптимизированнаяХорошая производительность, умеренное использование ЦПВысокое качествоЛучшая стабильность с шумным аудиоСбалансированные производительность и качество, смешанные аудиоусловия
ОригинальнаяПодходит для использования в реальном времени на современных ЦПМаксимальное качествоНаиболее стабильна при фоновом шуме и неречевых звукахВысококачественные проекты, шумные аудиосреды, когда требуется максимальная точность

Настройки производительности

Внутриоперационные потоки: Управляет количеством потоков, используемых для внутренних операций обработки модели.

  • 0 (По умолчанию/Автоматически): Использует автоматическое определение (обычно 1/4 доступных ядер процессора, максимум 4)
  • 1-16: Укажите количество потоков вручную. Более высокие значения могут повысить производительность на многоядерных системах, но требуют больше ресурсов процессора

Inter Op Threads: Управляет количеством потоков, используемых для параллельного выполнения различных операций модели.

  • 0 (По умолчанию/Автоматически): Используется автоматическое определение (обычно 1/8 доступных ядер ЦП, максимум 2)
  • 1-8: Укажите количество потоков вручную. Обычно оно поддерживается низким для обработки в реальном времени.

Размер блока обработки

Размер блока обработки определяет, сколько сэмплов обрабатывается на каждом шаге инференса. Значение по умолчанию — 160 сэмплов (10 мс аудио на частоте 16 кГц):

  • Меньшие значения обеспечивают более частые обновления, но увеличивают нагрузку на CPU
  • Большие значения снижают нагрузку на CPU, но могут уменьшить отзывчивость синхронизации губ
  • Рекомендуется использовать числа, кратные 160, для оптимального выравнивания

Setting Processing Chunk Size

Конфигурация модели с поддержкой настроения

Узел Create Realistic MetaHuman Lip Sync With Mood Generator предоставляет дополнительные параметры конфигурации помимо базовой реалистичной модели:

Базовая конфигурация

Упреждение (мс): Время упреждения в миллисекундах для повышения точности синхронизации губ.

  • По умолчанию: 80 мс
  • Диапазон: от 20 мс до 200 мс (должно делиться на 20)
  • Более высокие значения обеспечивают лучшую синхронизацию, но увеличивают задержку

Тип вывода: Определяет, какие лицевые контролы создаются.

  • Полное лицо: Все 81 элемент управления лицом (брови, глаза, нос, рот, челюсть, язык)
  • Только рот: Только элементы управления, связанные с ртом, челюстью и языком

Настройки производительности: Использует те же настройки Intra Op Threads и Inter Op Threads, что и обычная реалистичная модель.

Настройки настроения

Доступные настроения:

  • Нейтральное, Радость, Грусть, Отвращение, Гнев, Удивление, Страх
  • Уверенный, Взволнованный, Скучающий, Игривый, Растерянный

Интенсивность настроения: Управляет тем, насколько сильно настроение влияет на анимацию (от 0.0 до 1.0).

Контроль настроения в реальном времени

Вы можете изменять настройки настроения во время выполнения с помощью следующих функций:

  • Задать настроение: Изменяет текущий тип настроения
  • Задать интенсивность настроения: Настраивает, насколько сильно настроение влияет на анимацию (от 0.0 до 1.0)
  • Задать время упреждения (мс): Изменяет время упреждения для синхронизации
  • Задать тип вывода: Переключает управление между режимами «Полное лицо» и «Только рот»

Mood Configuration

Руководство по выбору настроения

Выберите подходящие настроения в зависимости от вашего контента:

MoodНаилучшее применениеТипичный диапазон интенсивности
НейтральноеОбщая беседа, повествование, состояние по умолчанию0.5 - 1.0
РадостьПозитивный контент, веселый диалог, праздники0.6 - 1.0
ГрустьМеланхоличный контент, эмоциональные сцены, мрачные моменты0.5 - 0.9
ОтвращениеНегативные реакции, неприятный контент, неприятие0.4 - 0.8
ГневАгрессивный диалог, конфликтные сцены, раздражение0.6 - 1.0
УдивлениеНеожиданные события, откровения, шоковые реакции0.7 - 1.0
СтрахУгрожающие ситуации, тревога, нервный диалог0.5 - 0.9
УверенностьПрофессиональные презентации, лидерский диалог, уверенная речь0.7 - 1.0
ВосторгЭнергичный контент, объявления, восторженный диалог0.8 - 1.0
СкукаМонотонный контент, равнодушный диалог, усталая речь0.3 - 0.7
ИгривостьНепринужденная беседа, юмор, беззаботное общение0.6 - 0.9
РастерянностьДиалог с большим количеством вопросов, неуверенность, недоумение0.4 - 0.8

Конфигурация Animation Blueprint

Конфигурация синхронизации губ

Узел Blend Runtime MetaHuman Lip Sync имеет параметры конфигурации в своей панели свойств:

СвойствоПо умолчаниюОписание
Скорость интерполяции25Управляет тем, насколько быстро движения губ переходят между висемами. Более высокие значения приводят к более быстрым и резким переходам.
Время сброса0.2Длительность в секундах, после которой синхронизация губ сбрасывается. Это полезно, чтобы синхронизация губ не продолжалась после остановки аудио.

Анимация смеха

Вы также можете добавить анимации смеха, которые будут динамически реагировать на смех, обнаруженный в аудио:

  1. Добавьте узел Blend Runtime MetaHuman Laughter
  2. Подключите вашу переменную RuntimeVisemeGenerator к пину Viseme Generator
  3. Если вы уже используете липсинк:
    • Подключите выход узла Blend Runtime MetaHuman Lip Sync к пину Source Pose узла Blend Runtime MetaHuman Laughter
    • Подключите выход узла Blend Runtime MetaHuman Laughter к пину Result узла Output Pose
  4. Если используется только смех без синхронизации губ:
    • Подключите вашу исходную позу напрямую к пину Source Pose узла Blend Runtime MetaHuman Laughter
    • Подключите выход к пину Result

Blend Runtime MetaHuman Laughter

Когда в аудио обнаруживается смех, ваш персонаж будет динамически анимироваться соответствующим образом:

Конфигурация смеха

Узел Blend Runtime MetaHuman Laughter имеет собственные параметры конфигурации:

СвойствоПо умолчаниюОписание
Скорость интерполяции25Определяет, насколько быстро движения губ переходят между анимациями смеха. Более высокие значения обеспечивают более быстрые и резкие переходы.
Время сброса0.2Продолжительность в секундах, через которую выполняется сброс смеха. Это полезно для предотвращения продолжения смеха после остановки аудио.
Максимальный вес смеха0.7Масштабирует максимальную интенсивность анимации смеха (0.0 - 1.0).

Примечание: Обнаружение смеха в настоящее время доступно только в стандартной модели.

Объединение с существующими анимациями

Видеоинструкция

Предпочитаете смотреть, а не читать? Посмотрите видеоурок, охватывающий именно эту настройку.

Чтобы применить синхронизацию губ и смех наряду с существующими анимациями тела и пользовательскими анимациями лица, не переопределяя их:

Анимации тела

Эта настройка применима к Animation Blueprint лица, так как синхронизация губ не является частью Animation Blueprint тела. Для пользовательских анимаций тела (например, торс, руки и другие движения тела) просто подключите вашу анимационную последовательность (через Sequence Player) напрямую к выходной позе в Animation Blueprint тела. Там не требуется дополнительная настройка.

  1. Добавьте узел Layered blend per bone между вашими анимациями тела и финальным выводом. Убедитесь, что Use Attached Parent равно true.
  2. Настройте конфигурацию слоёв:
    • Добавьте 1 элемент в массив Layer Setup
    • Добавьте 3 элемента в Branch Filters для слоя, со следующими Bone Name:
      • FACIAL_C_FacialRoot
      • FACIAL_C_Neck2Root
      • FACIAL_C_Neck1Root
  3. Важно для пользовательской анимации лица: В Параметре смешивания кривых выберите «Использовать максимальное значение». Это позволяет корректно накладывать пользовательские анимации лица (выражения, эмоции и т. д.) поверх синхронизации губ.
  4. Установите соединения:
    • Ваша пользовательская анимация (обычно Sequence Player с нужным ассетом последовательности анимации) → вход Base Pose
    • Выход лицевой анимации (от узлов липсинка и/или смеха) → вход Blend Poses 0
    • Узел слоёного смешивания → финальная поза Result

Layered Blend Per Bone

Выбор набора морф-таргетов

Стандартная модель использует ассеты позы, которые изначально поддерживают любое соглашение об именовании морф-таргетов благодаря настройке пользовательского ассета позы. Никакой дополнительной настройки не требуется.

Тонкая настройка поведения липсинка

Масштабирование конкретных кривых липсинка

Вы можете ослабить (или усилить) отдельные движения лица, создаваемые синхронизацией губ, с помощью узла Modify Curve. Это полезно, когда конкретная кривая выглядит слишком выраженной для вашего аудиоматериала или персонажа.

Настройка:

  1. После вашего узла смешивания липсинка добавьте узел Modify Curve
  2. Щёлкните узел правой кнопкой мыши и выберите Add Curve Pin, затем введите имя кривой, которую нужно масштабировать
  3. Установите для свойства Apply Mode узла значение Scale
  4. Установите параметр Value: значения ниже 1.0 ослабляют движение, значения выше 1.0 усиливают его (например, 0.8 = уменьшение на 20%)

Часто масштабируемые кривые:

Curve NamePurposeApplies ToTypical Adjustment
CTRL_expressions_tongueOutForward tongue protrusion during certain phonemesStandard model0.8 to reduce protrusion
CTRL_expressions_jawOpenJaw opening rangeRealistic models0.9 to reduce jaw movement

Вы можете добавить несколько кривых-пинов к одному и тому же узлу 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 - Поднятие щёк

Сравнение и выбор моделей

Выбор между моделями

При выборе модели синхронизации губ для вашего проекта учтите следующие факторы:

РассмотрениеСтандартная модельРеалистичная модельРеалистичная модель с поддержкой настроения
Совместимость с персонажамиMetaHumans и все типы пользовательских персонажейперсонажи MetaHumans (и ARKit)Персонажи MetaHumans (и ARKit)
Визуальное качествоХороший липсинк с эффективной производительностьюУлучшенный реализм с более естественными движениями рта.Улучшенный реализм с эмоциональными выражениями
ПроизводительностьОптимизировано для всех платформ, включая мобильные/VRБолее высокие требования к ресурсамПовышенные требования к ресурсам
Возможности14 визем, определение смеха81 лицевой контрол, 3 уровня оптимизации81 лицевой контрол, 12 настроений, настраиваемый вывод
Поддержка платформWindows, Android, QuestWindows, Mac, iOS, Linux, Android, QuestWindows, Mac, iOS, Linux, Android, Quest
Варианты использованияОбычные приложения, игры, VR/AR, мобильныеКинематографические впечатления, взаимодействия крупным планомЭмоциональное повествование, продвинутое взаимодействие персонажей

Совместимость версий движка

Проблема совместимости UE 5.2

Если вы используете Unreal Engine 5.2, реалистичные модели могут работать некорректно из-за ошибки в библиотеке ресемплинга UE. Пользователям UE 5.2, которым нужна надёжная синхронизация губ, следует вместо этого использовать стандартную модель.

Эта проблема характерна для UE 5.2 и не затрагивает другие версии движка.

Рекомендации по производительности

  • Для большинства проектов стандартная модель обеспечивает отличный баланс качества и производительности
  • Используйте реалистичную модель, когда вам нужна максимальная визуальная точность для персонажей MetaHuman
  • Используйте реалистичную модель с поддержкой эмоций, когда контроль эмоциональных выражений важен для вашего приложения
  • Учитывайте производительность вашей целевой платформы при выборе между моделями
  • Протестируйте различные уровни оптимизации, чтобы найти лучший баланс для вашего конкретного случая использования

Устранение неполадок

Распространенные проблемы

Пересоздание генератора для реалистичных моделей:

Для надежной и стабильной работы с реалистичными моделями рекомендуется пересоздавать генератор каждый раз, когда вы хотите подать новые аудиоданные после периода бездействия. Это связано с поведением ONNX Runtime, из-за которого синхронизация губ может переставать работать при повторном использовании генераторов после периодов тишины.

Например, вы можете пересоздавать генератор синхронизации губ при каждом начале воспроизведения, например, всякий раз, когда вы вызываете Play Sound 2D или используете любой другой метод для запуска воспроизведения звуковой волны и синхронизации губ:

Recreate Lip Sync Generator On Play Sound

Расположение плагина для интеграции Runtime Text To Speech: При использовании Runtime MetaHuman Lip Sync вместе с Runtime Text To Speech (оба плагина используют ONNX Runtime) могут возникать проблемы, если плагины установлены в папке Marketplace движка. Чтобы это исправить:

  1. Найдите оба плагина в папке установки UE в \Engine\Plugins\Marketplace (например, C:\Program Files\Epic Games\UE_5.6\Engine\Plugins\Marketplace)
  2. Переместите папки RuntimeMetaHumanLipSync и RuntimeTextToSpeech в папку Plugins вашего проекта
  3. Если в вашем проекте нет папки Plugins, создайте её в той же директории, где находится файл .uproject
  4. Перезапустите Unreal Editor

Это устраняет проблемы совместимости, которые могут возникать при загрузке нескольких плагинов на основе ONNX Runtime из каталога Marketplace движка.

Конфигурация упаковки (Windows): Если липсинк неправильно работает в упакованном проекте на Windows, убедитесь, что вы используете конфигурацию сборки Shipping, а не Development. Конфигурация Development может вызывать проблемы с ONNX runtime для реалистичных моделей в упакованных сборках.

Чтобы исправить это:

  1. В ваших Настройках проекта → Упаковка, установите Конфигурацию сборки на Shipping
  2. Переупакуйте ваш проект

Shipping Configuration

Проекты только на Blueprint

В некоторых проектах, использующих только Blueprint, Unreal Engine может всё равно выполнять сборку в конфигурации Development, даже если выбрана конфигурация Shipping. Если это происходит, преобразуйте проект в проект C++, добавив хотя бы один класс C++ (он может быть пустым). Для этого перейдите в Tools → New C++ Class в меню редактора UE и создайте пустой класс. Это заставит проект правильно собираться в конфигурации Shipping. По функциональности проект может оставаться проектом только на Blueprint, класс C++ нужен лишь для корректной конфигурации сборки.

Снижение отзывчивости синхронизации губ: Если вы замечаете, что синхронизация губ со временем становится менее отзывчивой при использовании потоковой звуковой волны или захватываемой звуковой волны, это может быть вызвано накоплением памяти. По умолчанию память перераспределяется каждый раз при добавлении нового аудио. Чтобы предотвратить эту проблему, периодически вызывайте функцию ReleaseMemory для освобождения накопленной памяти, например, каждые 30 секунд или около того.

Оптимизация производительности:

  • Настройте размер фрагмента обработки для реалистичных моделей в соответствии с вашими требованиями к производительности
  • Используйте подходящее количество потоков для вашего целевого оборудования
  • Рассмотрите возможность использования типа вывода «Только рот» для моделей с поддержкой настроения, когда полная лицевая анимация не требуется