[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-2758":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":15,"starSnapshotCount":15,"syncStatus":28,"lastSyncTime":29,"discoverSource":30},2758,"opentalking","datascale-ai\u002Fopentalking","datascale-ai","OpenTalking: An industrial-grade open-source AI digital human framework that supports real-time conversation, private deployment, and pluggable models.",null,"Python",1135,262,10,8,0,56,223,712,168,20.26,"Apache License 2.0",false,"main",[],"2026-06-12 02:00:43","\u003Ch1 align=\"center\">OpenTalking\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cb>面向实时对话的开源数字人产线：LLM、TTS、WebRTC、角色音色与可插拔模型后端\u003C\u002Fb>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\".\u002FREADME.en.md\">English\u003C\u002Fa> ·\n  \u003Ca href=\"https:\u002F\u002Fdatascale-ai.github.io\u002Fopentalking\u002F\">📖 文档站\u003C\u002Fa> ·\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdatascale-ai\u002Fopentalking\">GitHub\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"LICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache%202.0-blue.svg\" alt=\"License\">\u003C\u002Fa>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.10%2B-brightgreen.svg\" alt=\"Python\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact-18-61dafb.svg\" alt=\"React\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFastAPI-009688.svg\" alt=\"FastAPI\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FWebRTC-realtime-orange.svg\" alt=\"WebRTC\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#快速开始\">快速开始\u003C\u002Fa> ·\n  \u003Ca href=\"#选择部署路线\">部署路线\u003C\u002Fa> ·\n  \u003Ca href=\"#模型支持\">模型支持\u003C\u002Fa> ·\n  \u003Ca href=\"#能力进展与-roadmap\">Roadmap\u003C\u002Fa> ·\n  \u003Ca href=\"#系统架构与项目结构\">架构\u003C\u002Fa> ·\n  \u003Ca href=\"#文档与社区\">文档与社区\u003C\u002Fa> ·\n  \u003Ca href=\"#致谢\">致谢\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n## 项目简介\n\nOpenTalking 是一个开源实时数字人对话编排框架，目标是构建 **数字人对话产品** 的核心链路：前端交互、会话状态、LLM 回复、TTS\u002F音色选择、打断控制、字幕事件、WebRTC 音视频播放，以及本地或远端模型服务调用。\n\nOpenTalking 专注 **数字人产线编排**，可以根据不同层级的需求，快速构建属于你的数字人：\n\n- **快速体验**：`mock \u002F 无驱动模式`，适合第一次打通 API、TTS、WebRTC 全链路，但缺少视频推理渲染。\n- **轻量单机部署**：面向消费级 GPU 单机，提供快速接入 `Wav2Lip\u002FMuseTalk\u002FQuickTalk` 能力，具备视频渲染效果。\n- **高质量部署**：通过 OmniRT 接入 `FlashTalk` 等高质量模型，面向多卡和分布式推理部署，提供更佳使用体验。\n\n更多文档：\n\n- 在线文档：\u003Chttps:\u002F\u002Fdatascale-ai.github.io\u002Fopentalking\u002F>\n- 英文文档：\u003Chttps:\u002F\u002Fdatascale-ai.github.io\u002Fopentalking\u002Fen\u002F>\n\n## WebUI 与效果展示\n\nOpenTalking 提供 Web 服务界面，用于管理数字人对话链路：可以选择或新建数字人物，配置音色、LLM、TTS、STT 和数字人驱动模型，查看模型连接状态，并在同一页面完成实时对话、字幕和音视频播放验证。\n\n![OpenTalking WebUI](docs\u002Fassets\u002Fimages\u002FWebUI.png)\n\n### Demo 视频\n\n以下是 OpenTalking 典型场景演示视频，展示数字人在不同内容形态下的表现。\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd align=\"center\" colspan=\"3\">\n      \u003Cb>实时手机录制\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fa3abce76-12c0-4b8b-844f-bbc5c3227dc7\" controls width=\"100%\">\u003C\u002Fvideo>\u003Cbr\u002F>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"33%\">\n      \u003Cb>动漫脱口秀\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fb3743604-7f50-40d1-9248-f2df80ea7308\" controls width=\"100%\">\u003C\u002Fvideo>\u003Cbr\u002F>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"33%\">\n      \u003Cb>电商带货\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F826c777b-a9d2-49be-a1a0-b295c8a4b498\" controls width=\"100%\">\u003C\u002Fvideo>\u003Cbr\u002F>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"33%\">\n      \u003Cb>新闻女主播\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F34a282da-84cb-4134-bc4b-644356ac4f6f\" controls width=\"100%\">\u003C\u002Fvideo>\u003Cbr\u002F>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd align=\"center\" valign=\"top\" colspan=\"3\">\n      \u003Ctable>\n        \u003Ctr>\n          \u003Ctd align=\"center\" valign=\"top\" width=\"50%\">\n            \u003Cb>创意演唱 \u002F 模仿秀\u003C\u002Fb>\u003Cbr\u002F>\n            \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F98e813c2-f170-4cc8-b934-a77a72061d2e\" controls width=\"100%\">\u003C\u002Fvideo>\u003Cbr\u002F>\n          \u003C\u002Ftd>\n          \u003Ctd align=\"center\" valign=\"top\" width=\"50%\">\n            \u003Cb>陪伴类角色\u003C\u002Fb>\u003Cbr\u002F>\n            \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F44bbf1d9-75b1-4b0a-9704-c7f81c39446e\" controls width=\"100%\">\u003C\u002Fvideo>\u003Cbr\u002F>\n          \u003C\u002Ftd>\n        \u003C\u002Ftr>\n      \u003C\u002Ftable>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## 快速开始\n\nOpenTalking 的 **编排层**（API \u002F Worker \u002F 前端）和 **数字人合成后端**（`mock`、`local`、`direct_ws` 或 [OmniRT](https:\u002F\u002Fgithub.com\u002Fdatascale-ai\u002Fomnirt)）可以独立部署。第一次接触项目时，建议先用 Mock 模式跑通完整链路，再按显卡和模型需求切换到更多数字人渲染模型。\n\n### 0. 安装 OpenTalking\n\n```bash\nexport DIGITAL_HUMAN_HOME=\u002Fopt\u002Fdigital_human\nmkdir -p \"$DIGITAL_HUMAN_HOME\"\n\ncd \"$DIGITAL_HUMAN_HOME\"\ngit clone https:\u002F\u002Fgithub.com\u002Fdatascale-ai\u002Fopentalking.git && cd opentalking\n\n# 设置国内源提升依赖包下载速度（样例为清华源，可按需切换）\nexport UV_DEFAULT_INDEX=https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n\n# 依赖包安装\nuv sync --extra dev --python 3.11\nsource .venv\u002Fbin\u002Factivate\ncp .env.example .env\n```\n\n要求：Python 3.10+（推荐 3.11）、Node.js 18+、FFmpeg。若环境不便使用 `uv`，可用兼容安装：\n\n```bash\npython3 -m venv .venv\nsource .venv\u002Fbin\u002Factivate\npip install --index-url https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple -e \".[dev]\"\n```\n\n编辑 `.env`，至少配置 LLM \u002F TTS；`edge` TTS 不需要 key：\n\n```env\n# LLM模型配置（百炼、DeepSeek、豆包等）\nOPENTALKING_LLM_BASE_URL=https:\u002F\u002Fdashscope.aliyuncs.com\u002Fcompatible-mode\u002Fv1\nOPENTALKING_LLM_API_KEY=sk-your-key\nOPENTALKING_LLM_MODEL=qwen-flash\n\n# 语音识别（若使用 DashScope STT；本地 SenseVoice 不需要 key）\nOPENTALKING_STT_DEFAULT_PROVIDER=dashscope\nOPENTALKING_STT_DASHSCOPE_MODEL=paraformer-realtime-v2\nOPENTALKING_STT_DASHSCOPE_API_KEY=sk-your-key\n\n# 声音合成\u002F声音复刻（若使用 DashScope TTS）\nOPENTALKING_TTS_DASHSCOPE_API_KEY=sk-your-key\n\n# 其他声音合成选项\nOPENTALKING_TTS_DEFAULT_PROVIDER=edge\nOPENTALKING_TTS_EDGE_VOICE=zh-CN-XiaoxiaoNeural\n```\n\n> 注意：`edge` TTS 不需要 key。LLM、STT、TTS 不再共享 fallback key；即使用同一把 DashScope key，也要分别写入对应的 `OPENTALKING_*_API_KEY`。\n\n### 1. 快速上手\n\n适用：不下载模型权重、不部署推理后端，先验证前端、API、LLM、TTS、STT、WebRTC 和浏览器播放链路。数字人画面使用内置 Mock 静态帧，LLM 回复、流式 TTS、字幕事件和 WebRTC 传输仍是完整链路，启动服务：\n\n```bash\ncd \"$DIGITAL_HUMAN_HOME\u002Fopentalking\"\nbash scripts\u002Fstart_unified.sh --mock\n```\n\n默认前端地址是 `http:\u002F\u002Flocalhost:5173`。如果需要改端口请额外指定端口：\n\n```bash\nbash scripts\u002Fstart_unified.sh --mock --api-port 8210 --web-port 5280\n```\n\n停止服务：\n\n```bash\nbash scripts\u002Fquickstart\u002Fstop_all.sh\n```\n\n### 2. 常用启动参数\n\n`scripts\u002Fstart_unified.sh` 是推荐入口；旧的 `scripts\u002Fquickstart\u002F*` 脚本继续保留，适合更细的模型服务调试。\n\n| 参数 | 作用 | 示例 |\n| --- | --- | --- |\n| `--mock` | 使用内置 Mock，不需要模型权重或视频推理后端 | `--mock` |\n| `--backend \u003Cmock\\|local\\|omnirt\\|direct_ws>` | 指定模型的推理后端 | `--backend local` |\n| `--model \u003Cname>` | 指定要使用推理的模型 | `--model quicktalk` |\n| `--omnirt \u003Curl>` | 接入 OmniRT 推理服务的url | `--omnirt http:\u002F\u002F127.0.0.1:9000` |\n| `--api-port \u003Cport>` | OpenTalking服务后端端口 | `--api-port 8010` |\n| `--web-port \u003Cport>` | OpenTalking WebUI端口 | `--web-port 5180` |\n| `--host \u003Chost>` | WebUI 监听地址（可选） | `--host 0.0.0.0` |\n| `--env \u003Cfile>` | 指定 env 文件位置（可选） | `--env scripts\u002Fquickstart\u002Fenv` |\n\n示例：\n\n```bash\n# 初阶1：消费级卡单机路线，权重放在仓库根目录 models\u002F (需要先按下方教程完成部署)\nbash scripts\u002Fstart_unified.sh --backend local --model quicktalk\n\n# 初阶2：消费级卡单机 Wav2Lip 路线，使用 OpenTalking 内置 local runtime\nbash scripts\u002Fstart_unified.sh --backend local --model wav2lip\n\n# 高阶2：OmniRT 远端推理路线，先启动 OmniRT，再连接 endpoint (需要先按下方教程完成部署)\nbash scripts\u002Fstart_unified.sh --backend omnirt --model flashtalk --omnirt http:\u002F\u002F\u003Cgpu-server>:9000\n```\n\n## 选择部署路线\n\nMock 模式跑通后，建议按以下部署场景选择其中一条路线继续。\n\n| 路线 | 推荐模型 | 是否部署推理后端 | 适合场景 |\n| --- | --- | --- | --- |\n| 初阶1：消费级显卡单机部署 | `quicktalk` | 不需要独立推理服务 | 单机 3090 \u002F 4090 机器上实时视频渲染 |\n| 初阶2：消费级显卡单机部署 | `wav2lip` | 不需要独立推理服务 | 轻量的口型同步、快速验证自定义形象 |\n| 高阶1：全本地音频 + QuickTalk | `sensevoice` + `local_cosyvoice` + `quicktalk` | 需要本地 STT\u002FTTS 权重和 CosyVoice service | 私有化验证、本地语音输入和本地音色合成 |\n| 高阶2：远端高质量推理 | `flashtalk` | 需要 | 多卡、远端 GPU\u002FNPU、私有化和高质量画面 |\n\n如果想在初阶1的 QuickTalk 单机部署基础上，把语音识别和语音合成也改成本地模型，可以继续走高阶1，参考 [本地 STT\u002FTTS + QuickTalk](docs\u002Fzh\u002Fmodel-deployment\u002Flocal-quicktalk-audio.md)。LLM 默认仍通过 OpenAI-compatible endpoint 接入；如果已有本地 LLM 服务，也可以把 `OPENTALKING_LLM_BASE_URL` 指向本地服务。\n\n### 初阶1：消费级显卡单机部署\n\n适用：在本地 GPU 机器上运行真实数字人实时渲染，不想一开始就引入如OmniRT等推理服务，推荐从 **QuickTalk** 开始。若对 **Wav2Lip** 感兴趣，移步[初阶2](docs\u002Fzh\u002Fmodel-deployment\u002Fwav2lip-local.md)，初阶1与初阶2内容非常相似。\n\n#### 1. 安装本地模型依赖\n\n如果前面只安装了 `--extra dev`，这里补装本地模型依赖：\n\n```bash\ncd \"$DIGITAL_HUMAN_HOME\u002Fopentalking\"\nuv sync --extra dev --extra models --python 3.11\nsource .venv\u002Fbin\u002Factivate\n```\n\n#### 2. 准备 QuickTalk 权重\n\n本地权重、第三方 HuBERT \u002F InsightFace 依赖和缓存统一放到仓库根目录 `models\u002Fquicktalk\u002F`。QuickTalk 权重和 HuBERT 依赖可从 Hugging Face 下载：\n\n```bash\ncd \"$DIGITAL_HUMAN_HOME\u002Fopentalking\"\nmkdir -p models\u002Fquicktalk\u002Fcheckpoints\n\nuv pip install -U \"huggingface_hub[cli]\"\n\n# 可选：网络慢时使用镜像\nexport HF_ENDPOINT=https:\u002F\u002Fhf-mirror.com\n\nhf download datascale-ai\u002Fquicktalk \\\n  quicktalk.pth \\\n  repair.npy \\\n  chinese-hubert-large\u002Fconfig.json \\\n  chinese-hubert-large\u002Fpreprocessor_config.json \\\n  chinese-hubert-large\u002Fpytorch_model.bin \\\n  --local-dir models\u002Fquicktalk\u002Fcheckpoints\n```\n\nQuickTalk 权重和 HuBERT 文件已经包含在 `datascale-ai\u002Fquicktalk` 中。QuickTalk 仍需要单独准备 InsightFace `buffalo_l` 依赖权重：\n\n```bash\n# 下载并解压 InsightFace buffalo_l 到 QuickTalk auxiliary 目录。\nmkdir -p \u002Ftmp\u002Fopentalking-insightface models\u002Fquicktalk\u002Fcheckpoints\u002Fauxiliary\u002Fmodels\ncurl -L \\\n  -o \u002Ftmp\u002Fopentalking-insightface\u002Fbuffalo_l.zip \\\n  https:\u002F\u002Fgithub.com\u002Fdeepinsight\u002Finsightface\u002Freleases\u002Fdownload\u002Fv0.7\u002Fbuffalo_l.zip\nunzip -q -o \u002Ftmp\u002Fopentalking-insightface\u002Fbuffalo_l.zip \\\n  -d \u002Ftmp\u002Fopentalking-insightface\nrsync -a \u002Ftmp\u002Fopentalking-insightface\u002Fbuffalo_l\u002F \\\n  models\u002Fquicktalk\u002Fcheckpoints\u002Fauxiliary\u002Fmodels\u002Fbuffalo_l\u002F\n```\n\n如果 Hugging Face 或 GitHub 访问不稳定，可以使用内部镜像或手动同步离线文件；只要最终目录结构与下方一致即可。\n\n整理后目录应类似：\n\n```text\nmodels\u002F\n  quicktalk\u002F\n    checkpoints\u002F\n      quicktalk.pth\n      repair.npy\n      chinese-hubert-large\u002F\n        config.json\n        preprocessor_config.json\n        pytorch_model.bin\n      auxiliary\u002Fmodels\u002Fbuffalo_l\u002F\n        det_10g.onnx\n        ...\n```\n\n建议校验关键文件 SHA256：\n\n```text\nquicktalk.pth: fc8a7ea025c99a471ef00738874be5ecb6b5dfaf88ff6a1255a5d45a05d73001\nrepair.npy: 9ea50edde851bf3b12aa22d67b6f0db4f2930f3d9b7b3febcbd383e14117bfca\nchinese-hubert-large\u002Fconfig.json: 8511d73054ac289ef47a527efdfd6738d2cb60f69f2973fdc9277492d9ff854b\nchinese-hubert-large\u002Fpreprocessor_config.json: 6334d6e0c5f2084c9a99b85ddff243cbc79dbaa4aa790bcddf8c41c496fab6fb\nchinese-hubert-large\u002Fpytorch_model.bin: 9cf43abec3f0410ad6854afa4d376c69ccb364b48ddddfd25c4c5aa16398eab0\n```\n\n检查关键文件（若文件不存在会提示No such file or directory）：\n\n```bash\nstat models\u002Fquicktalk\u002Fcheckpoints\u002Fquicktalk.pth\nstat models\u002Fquicktalk\u002Fcheckpoints\u002Frepair.npy\nstat models\u002Fquicktalk\u002Fcheckpoints\u002Fchinese-hubert-large\u002Fpytorch_model.bin\nstat models\u002Fquicktalk\u002Fcheckpoints\u002Fauxiliary\u002Fmodels\u002Fbuffalo_l\u002Fdet_10g.onnx\n```\n\n更完整的 QuickTalk 权重来源、第三方依赖说明和离线同步方式见 [Talking-Head 模型部署](docs\u002Fzh\u002Fmodel-deployment\u002Ftalking-head.md#quicktalk)。\n\n#### 3. 启动 OpenTalking（推理后端为 QuickTalk）\n\n```bash\nexport OPENTALKING_TORCH_DEVICE=cuda:0\nexport OPENTALKING_QUICKTALK_ASSET_ROOT=\"$DIGITAL_HUMAN_HOME\u002Fopentalking\u002Fmodels\u002Fquicktalk\"\nexport OPENTALKING_QUICKTALK_WORKER_CACHE=1\n\ncd \"$DIGITAL_HUMAN_HOME\u002Fopentalking\"\nbash scripts\u002Fstart_unified.sh --backend local --model quicktalk --api-port 8210 --web-port 5280\n```\n\n打开 `http:\u002F\u002Flocalhost:5280`，选择 `QuickTalk Local` 形象和 `quicktalk` 模型。若不指定 `--web-port`，默认前端地址是 `http:\u002F\u002Flocalhost:5173`。首次启动会构建 face cache 和 worker，可能需要几十秒；后续会复用缓存。\n\n#### 4. 上传自己的数字人形象\n\nWebUI 的“形象库”支持从本地上传参考图创建自定义形象。进入页面后点击 **从本地上传新形象**，填写名称并上传正脸或半身参考图，系统会基于当前选择的形象生成一个可删除的自定义形象。\n\n选中 `QuickTalk` 作为驱动模型，再上传自己的参考图，给数字人命名，产生一个新的形象。随后可以按照需要在左侧调整音色等，最后点击开始对话即可（下图是一个gif演示，可能加载较慢）。\n\n![OpenTalking 自定义上传数字人](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F491b84b6-4b5c-4b5c-b886-27ea3cc68320)\n\n#### 5. 消费级卡调优\n\n如果显存紧张或首帧太慢，优先调这些参数：\n\n> 注意，调整完后需要重新启动服务\n\n| 参数 | 默认建议 | 作用 |\n| --- | --- | --- |\n| `OPENTALKING_QUICKTALK_MAX_TEMPLATE_SECONDS` | `1` | 限制模板视频预处理时长，降低冷启动 |\n| `OPENTALKING_QUICKTALK_RESOLUTION` | `256` | 降低可减少显存和推理压力 |\n| `OPENTALKING_QUICKTALK_HUBERT_DEVICE` | 留空或 `cuda:1` | 多卡时可把 HuBERT 放到另一张卡 |\n| `OPENTALKING_PREWARM_AVATARS` | `quicktalk-local` | 服务启动时提前预热 avatar |\n\n### 高阶1：全本地音频 + QuickTalk\n\n适用：在初阶1的 QuickTalk 单机视频驱动基础上，把 STT 和 TTS 也切到本地部署，用于私有化验证、本地语音输入和本地音色合成。这条路线需要额外准备 SenseVoiceSmall、Fun-CosyVoice3-0.5B-2512 权重，并启动 CosyVoice service；部署成本高于初阶路线，但不依赖百炼 STT\u002FTTS。\n\n完整步骤见 [本地 STT\u002FTTS + QuickTalk](docs\u002Fzh\u002Fmodel-deployment\u002Flocal-quicktalk-audio.md)。\n\n### 高阶2：远端高质量推理\n\n适用：当你需要更高画质、远端 GPU\u002FNPU、多卡调度或生产隔离时，再引入 OmniRT。OmniRT 完整部署见 [模型部署文档](docs\u002Fzh\u002Fmodel-deployment\u002Ftalking-head.md)。\n\n当 OmniRT 已在远端 GPU 机器启动，并暴露端口（如 `http:\u002F\u002F\u003Cgpu-server>:9000`），就可以在 OpenTalking 中连接这个 endpoint：\n\n```bash\ncd \"$DIGITAL_HUMAN_HOME\u002Fopentalking\"\n\nbash scripts\u002Fstart_unified.sh \\\n  --backend omnirt \\\n  --model flashtalk \\\n  --api-port 8210 \\\n  --web-port 5280 \\\n  --omnirt http:\u002F\u002F\u003Cgpu-server>:9000\n```\n\n高阶路线推荐模型：\n\n- **FlashTalk \u002F FlashHead**：高质量数字人视频生成模型，推荐通过 OmniRT 部署在远端 GPU\u002FNPU 或多卡机器上。\n- **Wav2Lip \u002F MuseTalk**：如果你希望用 OmniRT 管理所有轻量模型，也可以通过同一个 endpoint 接入。\n\n### 路线速览\n\n| 阶段 | 推荐模型 | 启动方式 | 结果 |\n| --- | --- | --- | --- |\n| 快速上手 | `mock` | `bash scripts\u002Fstart_unified.sh --mock` | 验证 API、LLM、TTS、WebRTC |\n| 初阶1 | `quicktalk` | `bash scripts\u002Fstart_unified.sh --backend local --model quicktalk` | 消费级显卡真实视频渲染 |\n| 初阶2 | `wav2lip` | `bash scripts\u002Fstart_unified.sh --backend local --model wav2lip` | 轻量口型同步和自定义形象验证 |\n| 高阶1 | `sensevoice` + `local_cosyvoice` + `quicktalk` | 见 [本地 STT\u002FTTS + QuickTalk](docs\u002Fzh\u002Fmodel-deployment\u002Flocal-quicktalk-audio.md) | 全本地音频链路和私有化验证 |\n| 高阶2 | `flashtalk` | `bash scripts\u002Fstart_unified.sh --backend omnirt --model flashtalk --omnirt ...` | 高质量、多卡、生产部署 |\n\n## 模型支持\n\n| 模型 | 输入 | 推荐 backend | 资源建议 |\n| --- | --- | --- | --- |\n| `mock` | 参考图 \u002F 静态帧 | `mock` | 不需要 GPU |\n| `quicktalk` | template video + audio | `local` | CUDA GPU，推荐 3090 \u002F 4090 |\n| `wav2lip` | 参考图 \u002F frames + audio | `local` \u002F `omnirt` | `>= 8 GB` GPU \u002F NPU memory |\n| `musetalk` | full frames + audio | `omnirt` \u002F `local` | `>= 12 GB` GPU memory |\n| `soulx-flashtalk-14b` | portrait + audio | `omnirt` | 多卡 GPU \u002F NPU |\n| `soulx-flashhead-1.3b` | portrait + audio | `omnirt` | 多卡 GPU \u002F NPU |\n\n### 消费级显卡参考\n\n下表是测试过的部署数据，后续会补充 4090 \u002F 5090 或更多显卡数据，包括冷启动时间、首轮总延迟和显存等。\n\n| 模型 | 硬件 | 输入 | 输出 | 显存占用 | 生成吞吐 |\n| --- | --- | --- | --- | --- | --- |\n| `quicktalk` | RTX 3090 | template video + audio | 720x900 \u002F 25fps | 约 3.8 GiB | 约 35 fps |\n\n更多的权重下载、Docker、故障排查和模型配置见 [索引](docs\u002Fzh\u002Fmodel-deployment\u002Findex.md)、[模型部署文档](docs\u002Fzh\u002Fmodel-deployment\u002Ftalking-head.md)、[部署文档](docs\u002Fzh\u002Fuser-guide\u002Fdeployment.md)。\n\n## 能力进展与 Roadmap\n\n### Coming soon\n\n- [ ] **更自然的实时对话**\n  强化打断、会话状态、低延迟响应、音画同步和异常恢复。\n\n- [ ] **消费级显卡 路线完善**\n  补齐 QuickTalk 的一键资产检查、更多消费卡 benchmark，并逐步完善 Wav2Lip \u002F MuseTalk adapter。\n\n- [ ] **高质量私有化部署**\n  面向企业私有化场景，完善外部 OmniRT 推理服务、容量调度、健康检查和生产监控。\n\n- [ ] **Agent 与记忆能力**\n  对接 OpenClaw 或外部 Agent，复用其 memory、工具调用和知识库能力。\n\n- [ ] **生产级平台能力**\n  多会话调度、观测指标、安全合规、授权音色、合成内容标识。\n\n### 已完成进展\n\n- **2026-05-17：QuickTalk 接入**\n  QuickTalk \u002F Wav2Lip 新增更便捷使用方式，可通过 Opentalking 直接拉起推理进行数字人生成。\n\n- **2026-05-15：MuseTalk WebRTC 播放优化**\n  增加 MuseTalk 媒体 backpressure，提升 WebRTC 播放稳定性。\n\n- **2026-05-14：MuseTalk 适配**\n  增加 MuseTalk talking-head 路线，用于轻量全帧数字人验证。\n\n- **2026-05-13：模型 backend 解耦**\n  将 `mock`、`local`、`direct_ws`、`omnirt` 从架构上拆开，支持不同模型按部署形态选择后端。\n\n- **2026-05-08：QuickTalk 本地适配器**\n  增加 QuickTalk model adapter、配置说明和异步初始化能力。\n\n- **2026-04-16：实时数字人基础体验**\n  建立 Web 控制台、LLM 对话、TTS、字幕事件和 WebRTC 音视频播放的主链路。\n\n## 系统架构与项目结构\n\n![OpenTalking 当前代码架构图](docs\u002Fassets\u002Fimages\u002Fopentalking_architecture_zh.png)\n\n```text\nopentalking\u002F\n├── opentalking\u002F                  # 编排层 Python 包（flat layout，根目录直接 import）\n│   ├── core\u002F                     # 接口协议、类型、配置、registry\n│   ├── providers\u002F                # 能力适配器（按\"能力域 \u002F 提供方\"两级）\n│   │   ├── stt\u002Fdashscope\u002F        # 语音识别\n│   │   ├── tts\u002F{edge,dashscope_qwen,cosyvoice_ws,...}\u002F   # 语音合成 + 复刻\n│   │   ├── llm\u002Fopenai_compatible\u002F                        # 大语言模型\n│   │   ├── rtc\u002Faiortc\u002F                                   # WebRTC 推流\n│   │   └── synthesis\u002F{flashtalk,flashhead,omnirt,mock}\u002F  # 远端\u002F协议型合成 provider\n│   ├── models\u002F                   # local adapter 代码（quicktalk \u002F wav2lip \u002F musetalk 等）\n│   ├── avatar\u002F                   # 数字人形象资产管理\n│   ├── voice\u002F                    # 音色资产管理\n│   ├── media\u002F                    # 中性算子工具\n│   ├── pipeline\u002F{session,speak,recording}\u002F   # 业务编排\n│   └── runtime\u002F                  # 进程胶水（task_consumer \u002F bus \u002F timing）\n├── models\u002F                       # 本地权重、模板、缓存和用户资产\n├── apps\u002F\n│   ├── api\u002F                      # FastAPI 服务\n│   ├── unified\u002F                  # 单进程模式（开发友好）\n│   ├── web\u002F                      # React 前端\n│   └── cli\u002F                      # download_models \u002F doctor \u002F ...\n├── configs\u002F                      # YAML 配置（profiles \u002F inference \u002F synthesis）\n├── docker\u002F + docker-compose.yml  # 容器化部署\n├── scripts\u002F                      # start_unified.sh \u002F quickstart \u002F run_omnirt.sh 等\n├── tests\u002F                        # 单元 \u002F 集成测试\n└── docs\u002F                         # 文档\n```\n\n## 文档与社区\n\n- [快速开始](docs\u002Fzh\u002Fuser-guide\u002Fquickstart.md)\n- [模型](docs\u002Fzh\u002Fmodel-deployment\u002Findex.md)（权重下载、国内源、启动、验证）\n- [架构说明](docs\u002Fzh\u002Fdeveloper-guide\u002Farchitecture.md)\n- [配置说明](docs\u002Fzh\u002Fuser-guide\u002Fconfiguration.md)\n- [部署文档](docs\u002Fzh\u002Fuser-guide\u002Fdeployment.md)（Docker Compose、分布式部署）\n- [模型适配](docs\u002Fzh\u002Fdeveloper-guide\u002Fmodel-adapter.md)\n- [贡献指南](CONTRIBUTING.md)（开发环境、CLI 工具、ruff \u002F mypy \u002F pytest）\n\n欢迎加入 QQ 交流群，讨论实时数字人、FlashTalk、OmniRT、模型部署和产品场景。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fassets\u002Fimages\u002Fqq_group_qrcode.png\" alt=\"AI 数字人交流群二维码\" width=\"280\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cb>AI 数字人交流群\u003C\u002Fb> · 群号：\u003Ccode>1103327938\u003C\u002Fcode>\n\u003C\u002Fp>\n\n## 致谢\n\nOpenTalking 参考并受益于实时数字人生态中的优秀项目：\n\n- [SoulX-FlashTalk](https:\u002F\u002Fgithub.com\u002FSoul-AILab\u002FSoulX-FlashTalk) 和 [SoulX-FlashTalk-14B](https:\u002F\u002Fhuggingface.co\u002FSoul-AILab\u002FSoulX-FlashTalk-14B)\n- [LiveTalking](https:\u002F\u002Fgithub.com\u002Flipku\u002FLiveTalking)\n- [OmniRT](https:\u002F\u002Fgithub.com\u002Fdatascale-ai\u002Fomnirt)\n- [Edge TTS](https:\u002F\u002Fgithub.com\u002Frany2\u002Fedge-tts)\n- [aiortc](https:\u002F\u002Fgithub.com\u002Faiortc\u002Faiortc)\n- [Wan Video](https:\u002F\u002Fgithub.com\u002FWan-Video)\n\n## License\n\n[Apache License 2.0](LICENSE)\n","OpenTalking 是一个支持实时对话的工业级开源数字人框架，能够实现私有部署并支持可插拔模型。它集成了LLM、TTS、WebRTC等技术，提供角色音色选择及多模型后端支持，适用于构建具备实时交互能力的数字人产品。项目基于Python开发，使用FastAPI和React构建Web服务界面，便于管理和验证数字人对话链路。该框架适合于需要快速搭建具有高度定制化需求的数字人应用场景，如动漫脱口秀、电商直播带货以及新闻播报等多媒体内容创作领域。",2,"2026-06-11 02:51:07","CREATED_QUERY"]