> For the complete documentation index, see [llms.txt](https://docs.convai.com/api-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.convai.com/api-docs/zh/cha-jian-yu-ji-cheng/unity-plugin-beta-overview/getting-started/setup/add-lip-sync-to-your-character.md).

# 为您的角色添加口型同步

## 简介

该 **Convai Lip Sync** 该组件将实时语音动画连接到角色的面部。当角色在说话时，它会接收传入的 Lip Sync 数据，通过当前启用的 Lip Sync 映射进行处理，并自动驱动角色网格上的混合形状。

本页说明如何添加该组件、检查器各部分的作用，以及如何正确配置它，以便在 Unity 中获得可用的 Lip Sync 设置。

***

## 开始之前

在添加该组件之前，请确保你的设置包含：

* 场景中有一个至少包含一个 **`SkinnedMeshRenderer`** 其中包含面部混合形状的
* A **Convai Character** 同一 GameObject 上的组件

***

## 添加组件

在 Hierarchy 中选中角色的根 GameObject，然后在 Inspector 中选择：

```
Add Component > Convai > Lip Sync > Convai Lip Sync
```

添加后，该组件会在 Inspector 中显示四个主要部分：

* **核心设置**
* **播放与行为**
* **流式传输与延迟**
* **实时状态**

## 核心设置

这是主要的设置部分。它定义角色使用哪个 Lip Sync 配置文件、应用哪个映射，以及哪些网格会被动画驱动。

<figure><img src="/files/69382e89ba960daf4743dae23b1da6180833ab61" alt=""><figcaption></figcaption></figure>

### Profile

该 **Profile** 下拉菜单选择角色使用的 Lip Sync 配置文件。

这会告诉系统当前设置应期待哪种通道架构。

可用选项有：

| 选项               | 适用于你的角色是……时                             |
| ---------------- | --------------------------------------- |
| **ARKit**        | 标准 Unity 角色，或任何具有与 ARKit 兼容的混合形状名称的骨骼绑定 |
| **MetaHuman**    | 导入 Unity 的 Unreal Engine MetaHuman      |
| **CC4 Extended** | 使用 Reallusion Character Creator 4 制作的角色 |

此设置必须与角色设计所使用的格式相匹配。如果选择了错误的配置文件，传入的通道将无法正确对应，面部动画也会出现错误。

有关配置文件行为和支持格式的更多详情，请参阅 [**Lip Sync 配置文件与映射**](/api-docs/zh/cha-jian-yu-ji-cheng/unity-plugin-beta-overview/getting-started/setup/add-lip-sync-to-your-character/lip-sync-profiles-and-mappings.md).

### 映射

该 **映射** 字段会分配 `ConvaiLipSyncMapAsset` 供该组件使用。

映射将传入的 Lip Sync 通道连接到角色网格上实际的混合形状名称。

字段旁边的按钮：

| 按钮      | 作用                                     |
| ------- | -------------------------------------- |
| **新建**  | 创建一个新的空 `ConvaiLipSyncMapAsset` 并立即分配它 |
| **编辑**  | 在 Inspector 中打开已分配的映射资源                |
| **验证器** | 检查当前映射与已分配网格的匹配情况，并报告映射覆盖问题            |

如果此字段留空，组件会为所选配置文件使用内置默认映射。对于许多标准的 ARKit、MetaHuman 或 CC4 Extended 设置来说，这已经足够入门。

如果你的角色使用自定义的混合形状名称，请改为创建并分配自定义映射。该流程请参阅 [**创建自定义映射**](/api-docs/zh/cha-jian-yu-ji-cheng/unity-plugin-beta-overview/getting-started/setup/add-lip-sync-to-your-character/lip-sync-profiles-and-mappings/creating-a-custom-map.md).

## 目标网格

该 **目标网格** 列表定义了哪些 `SkinnedMeshRenderer` 组件将接收混合形状动画。

<figure><img src="/files/d564c226420cc6cd3dfa28eca984533419452639" alt=""><figcaption></figcaption></figure>

你可以通过三种方式填充此列表：

* 单击 **+** 手动添加一个槽位
* 拖入一个 `SkinnedMeshRenderer` 到现有槽位中
* 单击 **自动查找** 以自动搜索当前 GameObject 及其所有子对象

填充列表后，组件会显示类似如下的摘要：

```
✓ 找到 10 个网格（294 个混合形状）
```

这表示找到了多少个网格，以及这些网格一共提供了多少个混合形状槽位。

如果此计数为 `0`，口型同步系统就没有任何可动画化的内容。

对于大多数角色， **自动查找** 是构建此列表最快的方法。之后，手动移除任何不应被驱动的网格，例如没有面部混合形状的服装或配饰。

## 播放与行为

此部分控制面部动画在播放时的感觉。

<figure><img src="/files/a811d174df998b12c6f469ea0b73feae05a3a385" alt=""><figcaption></figcaption></figure>

### Lip Smoothing

**Lip Smoothing** 控制传入数值在逐帧之间被平滑处理的强度。

范围： `0` 到 `0.9`\
默认： `0.5`

行为：

* **0**：无平滑，更直接，但可能有抖动
* **0.9**：非常平滑，但响应更慢
* **0.5**：适用于大多数角色的平衡默认值

较高的值会让面部运动更柔和、更稳定。较低的值会让面部对传入变化的反应更快。

### 淡出过渡

**淡出过渡** 控制语音结束后，面部恢复到中立状态所需的时间。

范围： `0.05` 到 `2` 秒\
默认： `0.2`

行为：

* **0.05**：几乎立即恢复到中立状态
* **0.2**：适用于大多数人形角色的自然默认值
* **2.0**：非常缓慢的淡出

这有助于避免语音结束时突然跳变。

### A/V 同步偏移

**A/V 同步偏移** 相对于音频，将 Lip Sync 播放时间提前或延后。

范围： `-0.5` 到 `+0.5` 秒\
默认： `0`

行为：

* **负值**：嘴唇会比音频稍早移动
* **正值**：嘴唇会比音频稍晚移动
* **0**：无时间偏移

在大多数设置中，此项应保持为 `0` ，除非你在播放期间持续注意到画面不同步。

## 流式传输与延迟

此部分控制传入的 Lip Sync 数据如何缓冲并播放。

对大多数用户来说，默认设置就是正确选择。

<figure><img src="/files/c005d39c56ea444d4bab4c9b8f61aee4924e4565" alt=""><figcaption></figcaption></figure>

### 延迟模式

**延迟模式** 会应用一组预设的缓冲策略。

可用模式：

| 模式       | 最适合          | 权衡           |
| -------- | ------------ | ------------ |
| **超低延迟** | 非常稳定的低延迟环境   | 延迟更低，但卡顿风险更高 |
| **平衡**   | 大多数生产环境用例    | 稳定性与响应性的最佳平衡 |
| **网络安全** | 移动端或不稳定的网络环境 | 更高延迟，更稳定的播放  |
| **自定义**  | 高级手动调优       | 需要直接控制缓冲设置   |

每个预设使用的内部值：

| 模式   | 最大缓冲  | 最小余量   |
| ---- | ----- | ------ |
| 超低延迟 | 1.0 秒 | 0.05 秒 |
| 平衡   | 3.0 秒 | 0.12 秒 |
| 网络安全 | 6.0 秒 | 0.25 s |
| 自定义  | 不变    | 不变     |

### 最大缓冲秒数

这定义了在开始播放之前，动画数据可以累积多少。

较大的值会提升不稳定连接下的稳定性，但也会增加可见延迟。

此字段仅可在 **自定义** 模式下编辑。

### 最小恢复余量

如果播放耗尽了缓冲帧并暂停，这个值决定在恢复播放前需要积累多少数据。

较高的值会让恢复行为更保守、更稳定。

此字段仅可在 **自定义** 模式下编辑。

对于大多数项目，请保持 **延迟模式** on **平衡**.

## 实时状态

该 **实时状态** 该部分为只读，并会在 Play 模式下更新。

它会提供对 Lip Sync 组件内部行为的实时视图，因此在调试时非常有用。

<figure><img src="/files/50e151969d18c7ff40428ce0c1f5e49fda2730c2" alt=""><figcaption></figcaption></figure>

### 状态指示器

Inspector 中的彩色状态标签会显示当前播放状态。

| State    | 颜色 | 含义                    |
| -------- | -- | --------------------- |
| **空闲**   | 绿色 | 未接收到语音数据              |
| **缓冲中**  | 黄色 | 数据正在到达并在播放前缓冲         |
| **播放中**  | 绿色 | Lip Sync 正在主动应用到这些网格上 |
| **缓冲耗尽** | 红色 | 播放已用尽缓冲数据，正在等待更多数据    |
| **淡出中**  | 橙色 | 语音结束，面部正在恢复到中立状态      |

配置文件徽标还会确认运行时当前启用的是哪个配置文件。

### 计时计数器

该组件还会显示以下运行时计数器：

| 计数器       | 含义                     |
| --------- | ---------------------- |
| **已用时间**  | 当前语音事件开始后的时间           |
| **剩余**    | 剩余的缓冲动画秒数              |
| **接收的数据** | 当前事件接收到的 Lip Sync 数据总量 |
| **余量**    | 播放与缓冲末尾之间的安全间隔         |
| **缓冲大小**  | 当前总缓冲大小（秒）             |
| **是否在说话** | 角色当前是否正在说话             |

如果 **余量** 如果在测试期间经常降到接近零，请考虑切换到 **网络安全** 或检查网络质量。

## 逐步设置

请按以下流程从零开始为角色设置 Lip Sync。

{% stepper %}
{% step %}
**添加 Convai Lip Sync 组件**

选中角色的根 GameObject，然后添加：

```
Convai > Lip Sync > Convai Lip Sync
```

<figure><img src="/files/060d7a4f4b918ff6e5fe82483423dc2554b02b41" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**选择正确的配置文件**

在 **核心设置 > 配置文件**，选择与角色匹配的配置文件：

* **ARKit**
* **MetaHuman**
* **CC4 Extended**

如果你不确定这为什么重要，请查看 [**Lip Sync 配置文件与映射**](/api-docs/zh/cha-jian-yu-ji-cheng/unity-plugin-beta-overview/getting-started/setup/add-lip-sync-to-your-character/lip-sync-profiles-and-mappings.md).

<figure><img src="/files/b0cc3e89cb431c5df64a5a077f5a57b76fc9953c" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**分配目标网格**

在 **目标网格**，点击 **自动查找**.

确保组件报告的网格和 blendshape 数量都不为零。如果某些网格不应接收 Lip Sync 动画，请手动移除它们。

<figure><img src="/files/8ab5ea7e42827666a783e9c4f1f6cf3de12337f8" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**检查或分配映射**

如果你的角色已经使用所选配置文件对应的标准 blendshape 名称，你可以将 **映射** 留空，并使用内置默认映射，或者你也可以从 **提供的映射中选择一个。**

如果你的角色使用不同的 blendshape 名称，请创建自定义映射并在此分配。

该流程请参见 [**创建自定义映射**](/api-docs/zh/cha-jian-yu-ji-cheng/unity-plugin-beta-overview/getting-started/setup/add-lip-sync-to-your-character/lip-sync-profiles-and-mappings/creating-a-custom-map.md).

<figure><img src="/files/5ddda549a3c8bdb2e64f3f4ec16fbdab23cfad5f" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**运行验证器**

单击 **验证器** 映射字段旁边的

这会检查当前映射与已分配网格的匹配程度，并帮助识别未映射或不匹配的通道。

较高的覆盖率结果，尤其是在嘴部相关通道上，是设置正确的强烈指标。

<figure><img src="/files/df95443f5a15fe6d3b0ada22ef3215dee533ff52" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ed3fcb8518fce98412fc8e3ef5e1b92a8a24c3bc" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**选择延迟模式**

在 **流式传输与延迟**，保持 **延迟模式** on **平衡** ，除非你已经确定需要更低延迟或更适合网络环境的配置。
{% endstep %}

{% step %}
**进入 Play 模式并测试**

启动 Play 模式，并从你的 Convai 角色触发一次语音事件。

观察 **实时状态** 部分。在工作正常的设置中，状态通常会依次经过：

```
Idle -> Buffering -> Playing
```

同时，角色的面部应与语音同步动画。

如果状态始终不离开 **空闲**，请检查 **Convai Character** 组件是否位于同一个 GameObject 上并已完整配置。
{% endstep %}
{% endstepper %}

## 常见问题

| 症状                 | 可能原因                       | 修复                                        |
| ------------------ | -------------------------- | ----------------------------------------- |
| 状态一直为 Idle         | 缺少 Convai Character 组件或未连接 | 确保 Convai Character 组件存在于同一个 GameObject 上 |
| 余量经常变红             | 网络抖动或缓冲不足                  | 将延迟模式切换为网络安全                              |
| 错误的面部形状在移动         | 选择了错误的配置文件                 | 选择与角色骨骼绑定匹配的配置文件                          |
| 某些 blendshape 没有动画 | 映射覆盖不完整                    | 运行验证器，修复未映射项，或使用自定义映射                     |
| 动画感觉太强             | 映射乘数过高                     | 降低映射乘数或减小特定条目的数值                          |
| 动画感觉太弱             | 映射乘数过低                     | 提高映射乘数                                    |
| 嘴唇在音频之前移动          | 偏移需要更早修正                   | 使用小幅正向或负向调整，并仔细重新测试                       |
| 嘴唇在音频之后移动          | 偏移需要更晚修正                   | 使用小幅正向或负向调整，并仔细重新测试                       |
| 组件在 Play 期间自行禁用    | 验证或设置失败                    | 检查 Console 中与配置文件、角色设置或必需引用相关的错误          |

## 相关页面

如需更详细的设置与自定义，请继续查看：

* [**Lip Sync 配置文件与映射**](/api-docs/zh/cha-jian-yu-ji-cheng/unity-plugin-beta-overview/getting-started/setup/add-lip-sync-to-your-character/lip-sync-profiles-and-mappings.md)
* [**创建配置文件**](/api-docs/zh/cha-jian-yu-ji-cheng/unity-plugin-beta-overview/getting-started/setup/add-lip-sync-to-your-character/lip-sync-profiles-and-mappings/creating-a-profile.md)
* [**创建自定义映射**](/api-docs/zh/cha-jian-yu-ji-cheng/unity-plugin-beta-overview/getting-started/setup/add-lip-sync-to-your-character/lip-sync-profiles-and-mappings/creating-a-custom-map.md)

## 结论

Convai Lip Sync 组件是运行时层，它将配置文件、映射和角色网格整合为可用的面部动画设置。

一旦选对配置文件、分配好目标网格并确保映射有效，Lip Sync 播放就会基本自动化。之后，播放平滑、淡出时间和延迟设置可以帮助你细化项目中最终效果的手感。

{% hint style="info" %}
**需要帮助？** 如有疑问，请访问 [**Convai 开发者论坛**](https://forum.convai.com/).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.convai.com/api-docs/zh/cha-jian-yu-ji-cheng/unity-plugin-beta-overview/getting-started/setup/add-lip-sync-to-your-character.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
