开源数字人框架 AWESOME-DIGITAL-HUMAN 技术解析与应用指南

一、项目概述

AWESOME-DIGITAL-HUMAN 是一个基于 Live2D 技术的开源数字人框架,它集成了语音识别(ASR)、大语言模型(LLM)、语音合成(TTS)和 Agent 模块化扩展能力,支持快速部署和自定义开发。项目特点包括:超轻量级设计(配置要求低于2核2G)、支持 Docker 快速部署、多平台兼容(PC端和移动端)以及丰富的 Live2D 人物模型扩展能力。

系统架构

项目采用前后端分离的架构设计:

  • 前端:基于 Next.js 构建,负责用户界面展示和 Live2D 模型渲染
  • 后端:提供 ASR、TTS、LLM 等核心服务接口
  • 通信:前后端通过 WebSocket 实现实时交互

二、核心功能模块

1. 语音交互模块

项目集成了百度 ASR 和 TTS 引擎,实现语音与文本的双向转换:

python 复制代码
# 百度 ASR 引擎核心代码
@ASREngines.register("BaiduAPI")
class BaiduAPI(BaseEngine): 
    def setup(self):
        # 获取 API Token
        params = {
            'grant_type': 'client_credentials',
            'client_id': self.cfg.AK,
            'client_secret': self.cfg.SK
        }
        response = httpx.post(self.cfg.TOKEN_URL, data=params)
        self.token = response.json().get("access_token")
    
    async def run(self, input: AudioMessage) -> Optional[TextMessage]:
        # 发送语音数据并获取识别结果
        params = {'cuid': CUID, 'token': self.token, 'dev_pid': self.cfg.DEV_PID}
        headers = {
            'Content-Type': f'audio/{input.format}; rate={input.sampleRate}',
            'Content-Length': str(len(input.data))
        }
        resp = await httpxAsyncClient.post(self.cfg.ASR_URL, content=input.data, params=params, headers=headers)
        return TextMessage(data=resp.json()["result"][0])

2. Live2D 模型渲染

前端使用 Live2D Cubism Web Framework 实现人物模型的渲染和控制,支持表情、动作和口型同步:

typescript 复制代码
// Live2D 眨眼效果实现
public updateParameters(model: CubismModel, deltaTimeSeconds: number): void {
    this._userTimeSeconds += deltaTimeSeconds;
    let parameterValue: number;
    
    // 根据眨眼状态计算参数值
    switch (this._blinkingState) {
      case EyeState.EyeState_Closing:
        parameterValue = 1.0 - this.calculateProgress(this._closingSeconds);
        if (this.isStateComplete()) {
            this._blinkingState = EyeState.EyeState_Closed;
        }
        break;
      // 其他状态处理...
    }
    
    // 更新模型参数
    for (let i = 0; i < this._parameterIds.getSize(); ++i) {
      model.setParameterValueById(this._parameterIds.at(i), parameterValue);
    }
  }

3. 多模态交互

系统支持文本和语音两种交互方式,并提供流式响应处理:

typescript 复制代码
// 流式聊天处理
public async streamingChat(
    data: string,
    callbackProcessing: (index: number, data: string) => void,
    callbackEnd: (index: number) => void
  ): Promise<void> {
    try {
      const reader = await API.agent_infer_streaming_api(data);
      const decoder = new TextDecoder("utf-8");
      let index = 0;
      
      // 处理流式响应
      while (true) {
        const { value, done } = await reader.read(); 
        if (done) {
          callbackEnd(index);
          break;
        }
        const chunk = decoder.decode(value, { stream: true });
        callbackProcessing(index, chunk);
        index++;
      }
    } catch (error) {
      console.error(error);
    }
  }

三、部署与开发

1. 快速部署

项目支持 Docker 快速部署,只需执行以下命令:

bash 复制代码
# 构建并启动容器
docker buildx build --platform linux/amd64,linux/arm64 -t adh-web:latest -f docker/adhWeb.Dockerfile . --push
docker buildx build --platform linux/amd64,linux/arm64 -t adh-api:latest -f docker/adhServer.Dockerfile . --push

2. 开发环境搭建

前端开发环境启动:

bash 复制代码
# 启动前端开发服务器
pnpm dev
# 访问 http://localhost:3000

3. 自定义扩展

项目提供了模块化扩展接口,可以方便地集成新的 ASR、TTS 或 LLM 服务:

python 复制代码
# 自定义 TTS 引擎示例
@TTSEngines.register("CustomTTS")
class CustomTTS(BaseEngine):
    async def run(self, input: TextMessage) -> Optional[AudioMessage]:
        # 实现自定义 TTS 逻辑
        audio_data = self.custom_tts_service(input.data)
        return AudioMessage(
            data=audio_data,
            format="wav",
            sampleRate=16000,
            sampleWidth=2,
        )

四、应用场景与案例

1. 智能客服

利用项目的多模态交互能力和 LLM 集成,可以快速搭建智能客服系统,支持语音和文本咨询。

2. 教育领域

可用于开发虚拟教师或学习助手,提供个性化学习体验。

3. 直播助手

支持创建虚拟主播,实现自动语音播报和互动。

五、项目贡献与社区

项目采用 MIT 开源许可证,欢迎社区贡献。贡献方式包括:提交问题报告、提交代码补丁、参与文档编写等。

复制代码
# Cubism Web Framework 贡献指南
プロジェクトに貢献する方法はたくさんあります。バグのログの記録、このGitHubでのプルリクエストの送信、Live2Dコミュニティでの問題の報告と提案の作成です。

六、总结与展望

AWESOME-DIGITAL-HUMAN 为开发者提供了一个功能完备、易于扩展的数字人框架,无论是个人开发者还是企业团队,都可以基于此框架快速构建自己的数字人应用。未来,项目计划进一步优化性能、增加更多的交互功能和模型支持,推动数字人技术的普及和应用。

相关推荐
Swizard3 小时前
别再只会算直线距离了!用“马氏距离”揪出那个伪装的数据“卧底”
python·算法·ai
代码小学僧3 小时前
从 Arco Table 迁移到 VTable:VTable使用经验分享
前端·react.js·开源
事变天下3 小时前
肾尚科技完成新一轮融资,加速慢性肾脏病(CKD)精准化管理闭环渗透
大数据·人工智能
GEO AI搜索优化助手3 小时前
范式革命——从“关键词”到“意图理解”,搜索本质的演进与重构
人工智能·搜索引擎·生成式引擎优化·ai优化·geo搜索优化
大刘讲IT3 小时前
2025年企业级 AI Agent 标准化落地深度年度总结:从“对话”到“端到端价值闭环”的范式重构
大数据·人工智能·程序人生·ai·重构·制造
一个没有感情的程序猿3 小时前
前端实现人体骨架检测与姿态对比:基于 MediaPipe 的完整方案
机器学习·计算机视觉·前端框架·开源
2301_823438023 小时前
【无标题】解析《采用非对称自玩实现强健多机器人群集的深度强化学习方法》
数据库·人工智能·算法
沛沛老爹3 小时前
Web开发者快速上手AI Agent:提示词应用优化实战
人工智能·ai·agent·提示词·rag·入门知识
中国胖子风清扬3 小时前
SpringAI和 Langchain4j等 AI 框架之间的差异和开发经验
java·数据库·人工智能·spring boot·spring cloud·ai·langchain
Dev7z3 小时前
基于Stanley算法的自动驾驶车辆路径跟踪控制研究
人工智能·机器学习·自动驾驶