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

Настройка плагина

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

Стандартная настройка модели

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

Для параметров конфигурации Animation Blueprint см. раздел Настройка синхронизации губ ниже.

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

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

Тип модели

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

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

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

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

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

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

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

Размер чанка обработки

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

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

Настройка размера чанка обработки

Настройка модели с поддержкой настроения

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

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

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

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

Output Type: Управляет тем, какие лицевые контролы генерируются.

  • Full Face: Все 81 лицевой контрол (брови, глаза, нос, рот, челюсть, язык)
  • Mouth Only: Только контролы, связанные со ртом, челюстью и языком

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

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

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

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

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

Управление настроением в реальном времени

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

  • Set Mood: Изменить текущий тип настроения
  • Set Mood Intensity: Настроить, насколько сильно настроение влияет на анимацию (от 0.0 до 1.0)
  • Set Lookahead Ms: Изменить время упреждения для синхронизации
  • Set Output Type: Переключиться между контролами Full Face и Mouth Only

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

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

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

НастроениеЛучше всего подходит дляТипичный диапазон интенсивности
НейтральноеОбщий разговор, повествование, состояние по умолчанию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 имеет параметры конфигурации на своей панели свойств:

СвойствоПо умолчаниюОписание
Interpolation Speed25Управляет тем, насколько быстро движения губ переходят между висемами. Более высокие значения приводят к более быстрым и резким переходам.
Reset Time0.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 имеет собственные параметры конфигурации:

СвойствоПо умолчаниюОписание
Interpolation Speed25Управляет скоростью перехода движений губ между анимациями смеха. Более высокие значения приводят к более быстрым и резким переходам.
Reset Time0.2Длительность в секундах, после которой смех сбрасывается. Это полезно для предотвращения продолжения смеха после остановки аудио.
Max Laughter Weight0.7Масштабирует максимальную интенсивность анимации смеха (0.0 - 1.0).

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

Комбинирование с существующими анимациями

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

  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. Важно для пользовательских мимических анимаций: В Curve Blend Option выберите "Use Max Value". Это позволяет правильно накладывать пользовательские мимические анимации (выражения, эмоции и т.д.) поверх синхронизации губ.
  4. Сделайте соединения:
    • Существующие анимации (например, BodyPose) → вход Base Pose
    • Выход мимической анимации (от узлов синхронизации губ и/или смеха) → вход Blend Poses 0
    • Узел Layered blend → финальная поза Result

Layered Blend Per Bone

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

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

Тонкая настройка поведения синхронизации губ

Управление высовыванием языка

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

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

Управление открытием челюсти

Реалистичная синхронизация губ может создавать чрезмерно отзывчивые движения челюсти в зависимости от вашего аудиоконтента и визуальных требований. Чтобы настроить интенсивность открытия челюсти:

  1. После вашего узла смешивания синхронизации губ добавьте узел Modify Curve
  2. Щелкните правой кнопкой мыши на узле Modify Curve и выберите Add Curve Pin
  3. Добавьте пин кривой с именем CTRL_expressions_jawOpen
  4. Установите свойство Apply Mode узла в Scale
  5. Отрегулируйте параметр Value, чтобы контролировать диапазон открытия челюсти (например, 0.9 для уменьшения движения челюсти на 10%)

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

Для моделей с поддержкой настроения вы можете точно настроить определенные эмоциональные выражения:

Управление бровями:

  • 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, которое может привести к прекращению работы синхронизации губ при повторном использовании генераторов после периодов тишины.

Например, вы можете пересоздавать генератор синхронизации губ при каждом начале воспроизведения, например, всякий раз, когда вы вызываете 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 реалистичных моделей в собранных сборках.

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

  1. В настройках вашего проекта (Project Settings) → Packaging установите Build Configuration в Shipping
  2. Пересоберите ваш проект

Shipping Configuration

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

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

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

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

  • Настройте Processing Chunk Size для Реалистичных моделей в соответствии с вашими требованиями к производительности
  • Используйте соответствующее количество потоков для вашего целевого оборудования
  • Рассмотрите возможность использования типа вывода Mouth Only для моделей с поддержкой настроения, когда полная мимическая анимация не требуется