# AI VTuber **Repository Path**: silicon-grass/ai-vtuber ## Basic Information - **Project Name**: AI VTuber - **Description**: 基于 Unity Live2D SDK 与 Coze API 的AI虚拟主播解决方案 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-05 - **Last Updated**: 2025-11-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI VTuber #### 介绍 基于 Unity Live2D SDK 与 Coze API 的 AI 虚拟主播解决方案 当前该项目并不能做虚拟主播,仅实现了聊天机器人的基本功能,未来会继续添加相关功能。 #### 软件架构 项目包含 AI 小人动作管理系统、 Coze 对话 API 调用、 `Live2D` 模型控制、文字转语音等多个组件模块,并且采用完全流式控制,保证流畅的对话体验。 一个完整的响应流程包括向 Coze API 发出请求、流式接收 Coze 给出的回应、解码翻译该回应、依次执行 AI 需要执行的任务。 其中, AI 小人的核心任务是说话,这通过调用文字转语音模块来实现。AI 的任务也包括实时改变 `Live2D` 模型的状态,模仿人类在对话时的神态和动作。 若要发出 Coze 请求,你的 `GameObject` 上需要挂有 `CozeRequestManager` 组件。该组件用于创建会话和发出请求。该组件没有任何参数,但是它是 `CozeBot` 和 `TextToSpeechCoze` 的依赖项。 `CozeBot` 组件控制用于对话的 Coze 智能体。其参数包括一个输入框的引用(用于输入)、你创建的智能体的令牌及 `BotId` 。 它调用 `CozeRequestManager` 来创建会话和发送请求。在完成请求后,它会调用 `BotActionTranslator` 将返回的内容翻译成一个个动作,并将动作加入 `BotActionController` 的队列中。因此,这两个组件也必须挂到与 `CozeBot` 相同的 `GameObject` 上。 `BotActionTranslator` 用于翻译 Coze 智能体给出的响应。其参数包括整数 `minWordLen` 、列表`splitKeys`、`expressions`、`motions`。`minWordLen`表示被判定为一句完整的话的最短长度,默认为0。 `splitKeys`表示用于分割相邻两句话的标志字符串。建议设置为常用中英文标点符号`,.?!;,。?!;`。`expressions`和`motions`表示表情和动作标签,会被翻译成做相应的表情或者动作。后续可能会修改。 `BotActionController` 是控制 AI 小人各种行为的核心组件。其包括一个队列,用来缓存 AI 小人将要完成的行为。其中行为包括“朗读文字”“改变表情”“完成动作”三种类型。(后续可能将 AI 行为定义为抽象类并添加更多类型。) `BotActionController` 总是试图在空闲的时候执行下一个行为。它也会在空闲的时候提前调用`TextToSpeechBase`进行语音转文字,调用`FileDownloader`进行音频文件下载和缓存,以保证响应速度。后续会加入暂停、终止等操作。 `TextToSpeechBase` 是文字转语音模块的抽象基类,仅定义了一个方法,将输入的字符串转化为语音。它有两个子类: `TextToSpeechCoze` 使用另外一个 Coze 智能体来实现文字转语音。由于也存在对 Coze API 的调用,它依赖 `CozeRequestManager` ,同样有令牌和 `BotId` 作为参数。你需要输入你的语音转文字智能体的相应信息。 `TextToSpeechHzys` 使用活字印刷术实现文字转语音。它有两种模式。勾选 `useYuanShengDaDie` 即启用原声大碟模式。此外,另外三个参数分别表示拼音活字音频文件、原声大碟音频文件和原声大碟映射表(不含后缀)相对 `Assets\Resources` 的位置。 这些文件会被打包进你的 Build。它们在程序开始运行的时候加载到内存中。这些音频文件必须为 `.wav` 格式。 拼音活字音频文件需要包含所有可能的汉字拼音组合,且以该拼音组合为文件名,原声大碟音频文件则只需包含你希望替换的语句。原声大碟映射表应当为一个 json 字典,表示你希望用原声大碟语句替换的部分。格式如范例。 该方式会将文字转化成拼音,再调取相应的拼音活字组件进行拼接。 当原声大碟模式启动时,转化成拼音的文字会先进行原声大碟匹配。否则,原声大碟相关文件不会加载。 `Live2DController` 用于控制 AI 小人的动作和表情。与其他组件不同,它需要挂在 `Live2D` 模型上。其参数 `expressionIdBank` 构建了从表情名称到表情编号的映射。`motionOnStart` 和 `expressionOnStart` 表示开始时执行的动作和表情。 #### 安装教程 1. 下载源代码 2. 打开unity并运行 #### 如何创建你的AI小人 #### 参与贡献