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

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

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

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

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

Стандартная конфигурация модели

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

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

Реалистичная конфигурация модели

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

Тип модели

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

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

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

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

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

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

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

Размер обрабатываемого фрагмента

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

  • Меньшие значения обеспечивают более частые обновления, но увеличивают нагрузку на процессор
  • Большие значения снижают нагрузку на процессор, но могут уменьшить отзывчивость синхронизации губ
  • Рекомендуется использовать значения, кратные 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. Важно для пользовательских анимаций лица: В опции Curve Blend Option выберите "Use Max Value". Это позволяет корректно накладывать пользовательские анимации лица (выражения, эмоции и т. д.) поверх синхронизации губ.
  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%)

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

Название кривойНазначениеПрименяется кТипичная настройка
CTRL_expressions_tongueOutВыдвижение языка вперед при произнесении определенных фонемСтандартная модель0.8 для уменьшения выдвижения
CTRL_expressions_jawOpenДиапазон открытия челюстиРеалистичные модели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 — Поднятие щёк

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

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

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

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

Эта проблема характерна только для 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

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

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

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

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

Shipping Configuration

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

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

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

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

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