Files
dsh_ai1net_server/docs/外部接入/VoxEMW全云API化接入dsh修订方案_20260909.md
T
admin ce8e6ceed9 chore(工作区): 纳入版本控制基线(回收 411 MB 过程产物)
回收 411 MB(470 M → 58.8 M),全部经回收站,可恢复:
- 待清理/(146.2 M,含 relay 分片 128 M 与 42 项过程目录)
- tmp/(32.4 M,按接续棒命名的过程临时区)
- .workbuddy/tmp/(39.5 M)
- 4 份 workbuddy.db 冗余副本(101 M,09-23 事故的坏副本 / 抢救产物)
- tmp/im16/gw/centrifugo 二进制(63.9 M,可重下)+ 缓存残留

入库范围:常驻规则(CODEBUDDY.md / README.md / state.py)、在途接续入口与
接续包、docs/、交付物/、交接单/、归档/、scripts/、.codebuddy/、
.workbuddy/memory/;共 398 件,其中 >60 KB 的 26 件全为文档。

排除(.gitignore):tmp/、待清理/、运行态日志与缓存、*.db 与 DB 备份整目录、
打包二进制(*.tar.gz / *.tgz)、记忆修复前备份。
2026-09-24 07:51:03 +08:00

19 KiB
Raw Blame History

VoxEMW 全云 API 化:接入 dsh 修订方案(零自托管模型)

  • 日期:2026-09-09(22:50 版)
  • 性质:对《VoxEMW接入dsh调研与落地方案_20260909.md》的方向性修订——用户决策:模型全部连线上 API,不部署任何本地模型
  • 一句话:不再"代理运行 VoxEMW 那套 GPU 服务",而是以 VoxEMW 为产品与体验蓝本,复用其 persona 文案与 assets/mojingnvwu/face_ref.jpg 形象资产,后端全部换成 2026 年已商业化的云端实时 API,由 dsh 插件做编排/代理/隔离。

⚠️ 重要更正:前一版文档 §4 判断"实时写实数字人渲染没有等价公开 API"——该判断已被 2026-09 市场现状推翻:火山引擎「实时互动数字人 API(FlowAct-R1)」、阿里云「数字人实时交互 OpenAPI」、ZEGO「精品照片数字人」均已提供"图片/形象 + 音频流 → 实时视频流"的商业 API。全云 API 路线可行,本文即按此重写。


一、决策影响对照(原方案 → 修订方案)

维度 原方案(代理 VoxEMW GPU 服务) 修订方案(全云 API)
模型部署 4090 主机四模型本地常驻(21.7G/24G) 零本地模型,全部云端 API
GPU 主机/隧道 需要 移除,不需要任何自管 GPU
VoxEMW 代码 运行上游 python 全套 不运行,仅作蓝本(UI 氛围/协议形态/人设)
核心工作 守护 + 反向代理 + 槽位 云端编排层(Realtime WS 对接 + 数字人流对接 + 人设注入)
用户数据隔离 槽位 + persona 映射 + 零持久化 槽位/配额 + profile 维度记账 + 云端 session 独立 + 第三方合规提示
需要决策的新增项 — 供应商组合、数字人形象图、音色路线(见 §七)

二、2026-09 云端供给盘点(VoxEMW 六积木逐块替换)

2.1 替换矩阵

VoxEMW 积木 等价云 API(已核实存在) 关键参数/证据
① VAD + ② STT 并入"端到端 Realtime 模型"(自带 server VAD + 自动打断),或单独接讯飞/火山/阿里实时 ASR 端到端更省事,见 2.2
③ LLM 大脑 端到端模型自带大脑;或保留 DeepSeek API(分离式时) 魔镜人设走 instructions(session.update),与 VoxEMW 注入 persona 同思路
④ TTS 音色 端到端预置音色(列表切换);要"专属音色/克隆"则分离式接 MiniMax / 阿里 CosyVoice / 火山豆包 见 §六体验差异(音色设计能力是最大降级点)
⑤ 写实数字人 火山「实时互动数字人 API (FlowAct-R1)」:单张人物图 + 16kHz PCM 音频流 → 实时视频流,480P@25fps,首帧 ~2s,声画毫秒同步(docs.volcengine.com)
或 阿里云数字人实时交互 OpenAPI:WebSocket + streamed audio driver,支持 customUserId(天然适合租户标记)(help.aliyun.com)
或 ZEGO 精品照片数字人:1 张照片 200ms、1080P,走 RTC 视频互动(doc-zh.zego.im)
单图输入 → assets/mojingnvwu/face_ref.jpg 可直接复用
⑥ 眼睛 VLM GLM-Realtime(音视频通话模型,WebSocket,支持摄像头帧输入、function calling、server VAD、可打断)
或 阿里 Qwen-Omni-Realtime / qwen3.5-omni-plus-realtime(DashScope,WS 与 WebRTC 双通道,视频帧输入)
摄像头帧走同一条 Realtime WS,天然实现"她看得见你"

2.2 端到端 Realtime vs 分离式(架构大方向二选一)

端到端 Realtime(推荐) 分离式(ASR + LLM + TTS 各选一家)
做法 一个 WebSocket 完成"听→想→说",服务端 VAD/打断全托管 每环节独立 API,自行拼装状态机
延迟/体验 低(0.3~0.5s 级开口),打断顺滑 每跳多一次网络,拼装复杂、易抖
音色自由度 预置音色列表(GLM-Realtime 提供 tongtong/xiaochen/female-tianmei…) 可用 MiniMax/CosyVoice 克隆"魔镜专属嗓音"
视觉(眼睛) GLM-Realtime / Qwen-Omni 直接吃视频帧 需另接 VLM API
计费参考 GLM-Realtime-Flash:音频 0.18 元/分,视频 1.2 元/分;Air:0.3 / 2.1 元/分(docs.bigmodel.cn) 各家按量,总价通常更高

推荐组合(两个候选,M1 前拍板):

  • 组合甲(默认推荐):端到端大脑+声音 = 智谱 GLM-Realtime;出画 = 火山 FlowAct-R1(单图+音频流)。理由:中文生态、GLM-Realtime 带视频+function calling、成本低、火山数字人与豆包端到端语音同族可平滑替换。
  • 组合乙(同厂商偏好):端到端 = 阿里 Qwen-Omni-Realtime(视频帧原生);出画 = 阿里实时数字人 OpenAPI(带 customUserId,租户标记友好)。理由:一家计费/控制台,WebRTC 浏览器直连低延迟。

三、目标架构(修订后)

┌──────────── 用户浏览器(dsh 会话窗口右侧分栏面板,同源 https)───────────┐
│  魔镜面板(轻量前端,蓝本=VoxEMW web/ 的氛围,但重写为云版)             │
│   ├─ 麦克风采集 16kHz PCM → host 代理 → 云 Realtime WS                 │
│   ├─ 摄像头帧(可选"眼睛")→ host 代理 → 同一 Realtime WS               │
│   └─ 云数字人视频流 → <video> 播放(火山 FlowAct-R1 / 阿里)             │
└──────────────────────┬──────────────────────────────────────────────────┘
                       │ 同源(ws/wss + http),Authorization 由服务端注入
┌──────────────────────▼── dsh 服务器(47.77.182.89 / dsh 域)────────────┐
│  dsh-plugin-voxemw-cloud                                               │
│   ├─ lib/host.js:/voxemw/api/* + /voxemw/ws/* 反向代理到云厂商         │
│   │     · 云 API Key 保管于此,**绝不下发浏览器**                      │
│   │     · 注入 dsh 登录态 → 按 profile 换取一次性云端会话 token        │
│   ├─ lib/slot.js:会话槽位仲裁 + 配额(按 profile 限每日用量)          │
│   ├─ lib/billing.js:profile × 分钟数 × 费用的用量记账(审计)          │
│   └─ lib/client.js:会话分栏 + 魔镜面板 UI(沿用 mcn split 技术)       │
└─────────────────────────────────────────────────────────────────────────┘
                       │ HTTPS/WSS(云厂商公网 API)
                       ▼
   智谱 GLM-Realtime / 阿里 Omni-Realtime(大脑+耳朵+嗓子+眼睛)
   火山 FlowAct-R1 / 阿里实时数字人(出画,输入 face_ref.jpg 形象)

要点:

  1. 云 API Key 全部收口在 dsh 服务端,浏览器永远只连 dsh 同源地址 → 无 CORS、无密钥泄露、天然 secure context。
  2. 数字人形象输入 = 复用 VoxEMW 仓库 assets/mojingnvwu/face_ref.jpg(280K 单张正面像,符合 FlowAct-R1"清晰正面半身图"要求)。
  3. 魔镜人设 = 复用 personas/mojingnvwu.md 正文,经 session.update.instructions 注入(与 VoxEMW 注入 s2s 同一思路);音色从云端预置列表近似选(见 §六)。
  4. VoxEMW 上游 python 不再被运行;前端也需重写轻量云版(原 web/ 深度耦合 orchestrator 协议/本地假设,不能直接指向云)。

四、dsh 插件形态(包结构修订)

命名统一(2026-09-09 实现时裁定):插件名定为 dsh-plugin-voxemw-cloud(v0.1.0),替代早期方案的 dsh-plugin-voxemw 提法,旧称不再使用。 M1 交付边界:客户端 bundle 只能在运行中的 dsh 实例加载验证(红线:client 改动必须重启实例 + 打包缓存),本机开发仅做语法/逻辑冒烟测试;实例级验证步骤见 README。云端厂商链路需账号开通后接线,realtime/avatar 先以"协议适配层 + 纯函数"落地(可测),UI 侧仿 social-workbench 提供"未配置云端"引导态。

dsh-plugin-voxemw-cloud/
├─ package.json / cordis.patch.yml     # 三段式骨架,注册 __mcnEntries,feature-tier
├─ lib/
│  ├─ index.js      # 路由注册:控制面 /voxemw/api/* + 面板页 /voxemw/app + /voxemw/health
│  ├─ slot.js       # 槽位 + 配额(云会话按分钟计费 → 必配每日上限)
│  ├─ billing.js    # profile 维度用量/费用记账(审计表)
│  ├─ cloudcfg.js   # 厂商/Key/模型/音色/形象 配置(服务端保管,密钥不下发)
│  ├─ realtime.js   # Realtime 协议适配层:session.update(人设/音色) 构建等纯函数
│  ├─ avatar.js     # 数字人协议适配层:会话初始化请求构建等纯函数
│  └─ client.js     # bundle:工作台入口 + 面板(沿用 mcn 分栏宿主,iframe 同源)
├─ web/app.html     # 魔镜面板轻量前端(单文件,同源加载,含麦克风回环自测)
└─ README.md

五、用户数据隔离(修订)

数据 存放/流向 隔离措施
用户语音/摄像头帧 浏览器 → dsh 代理 → 云厂商 每次会话新建独立云端 session;代理不留音频副本(纯透传);关闭面板即销毁
对话/转写 云端会话内存(GLM 音频通话上下文 ~8K/20 轮) 会话结束即释放;需留存时按 profile 落用户目录,绝不跨用户复用
人设/热词 dsh 服务端按 profile 存映射 注入仅限本人会话
计费/用量 billing 表(profile 维度) 每用户只见自己的记账
云 API Key dsh 服务端环境变量 浏览器不可见;轮换/最小权限(RAM/子账号 key)

新增合规注意(P1):语音/画面会经第三方云厂商处理——产品上需对用户明示;自用/内网不受影响。厂商选型时优先国内合规厂商(智谱/阿里/火山均支持企业实名)。

沿用上一版 §6.2 的槽位层:端到端模型与数字人流都按会话/分钟计费且厂商有并发限制(如 GLM Realtime 免费/低等级并发 5 路),slot 互斥 + 每日配额仍然是刚需。


六、体验差异(诚实对照,避免上线后落差)

体验点 原版(本地 4090) 云 API 版 影响
开口延迟 说完 ~3s(本地 s2s 链路) 端到端云 Realtime 通常相当或更低(server VAD 判停即响应) ✅ 不降级
出画首帧 SoulX 常活待机,几乎即时 火山 FlowAct-R1 首帧 ~2s;ZEGO 200ms 但走 RTC ⚠️ 需预热/占位动画掩盖,或选 ZEGO
音色"设计感" VoxCPM2 描述词凭空造嗓 + 种子钉定 端到端只有预置音色;专属嗓音需分离式克隆(需参考音频) ⚠️ 最大降级点,见决策 3
魔镜形象 SoulX 写实渲染 云端数字人(face_ref.jpg 驱动或平台形象) 观感不同但可接受
长会话稳定性 本地单时钟唇形同步 厂商提示"过长视频有崩坏概率,建议会话长度策略"(火山) 需设单会话时长上限并自动续段
运营成本 GPU 租用(AutoDL 时按小时) 按分钟计费(参考:音频 0.180.3 元/分 + 视频 1.22.1 元/分,纯语音组合更省) 低频个人使用成本低;高频需配额

七、需要你拍板的 3 个决策(M1 前置)

  1. 供应商组合:组合甲(智谱 GLM-Realtime + 火山 FlowAct-R1,默认推荐)还是组合乙(全阿里)?还是只要纯语音(先不做出画,最省事)?
  2. 数字人形象:直接用 VoxEMW 自带 assets/mojingnvwu/face_ref.jpg,还是换一张更符合"魔镜女巫"设定的形象图(含版权确认)?
  3. 音色路线:先用云端预置女声(接近即可,最快)→ 之后若需"魔镜专属嗓音"再接分离式 TTS 克隆(需你提供一段 3~10s 参考音频,或用描述词在支持语音设计的 TTS 上逼近原 seed 效果)?

八、实施路线(修订)

M1 — 云端链路跑通 + 面板可见(半天~1 天)

  1. 注册厂商账号、开通 API(按决策 1);服务端保管 key。
  2. 独立验证页:麦克风 → Realtime WS 对话成功;音频流喂数字人 API → 视频出画。
  3. 接入 dsh:host 代理 + 会话分栏面板内嵌云版前端。
  • ✅ 验收:dsh 会话旁打开魔镜,可语音对话 + 数字人出画;关闭面板会话无损。

M2 — 隔离/配额/记账/人设 4. slot + 每日配额;profile 维度 billing;人设注入;face_ref.jpg 形象固化;占用/排队 UI。

  • ✅ 验收:双账号并发互斥、各自人设/记账不可见;用量超限自动拒 claim。

M3 — 体验与合规 5. 音色定制(决策 3 后半);长会话自动续段/上限;窄栏 UI 打磨;日志分级;第三方数据处理提示。


九、访问形态、服务器负载与并发容量(2026-09-09 增补,回应"是否还是插件/压力多大/支持多少人")

9.1 它仍是 dsh 插件,访问入口不变

全云 API 化没有改变"插件"形态——改变的是插件内部"不装模型、只做编排/代理"。访问链路分两个角色:

角色 是什么 访问方式
使用方(dsh 用户) 登录 dsh 后,在会话窗口分栏点「魔镜女巫」入口 插件 client bundle 注入 __mcnEntries,点击展开右侧面板 → 浏览器采集音视频、渲染数字人,全程不感知云厂商存在
dsh 平台自身 dsh 服务端运行 dsh-plugin-voxemw-cloud(host 半区) 持有各家云凭证;控制面调用厂商 API 换取会话;把短时效凭证交给浏览器;按 profile 做槽位/配额/记账;也可向 dsh agent 暴露 MCP 工具("启动/切换人设/查占用")

所以"dsh 如何访问"的答案 = 浏览器访问 dsh 同源入口,dsh 插件进程访问云厂商,中间没有其他系统。

9.2 两条数据面架构(决定服务器压力,M1 前必须拍板)

路径 服务器压力 适用
A. 媒体面直连(推荐) 浏览器 ↔ 云厂商 RTC/WS 直连音视频;dsh 服务器只做控制面(登录态校验 → 向厂商换短时效会话凭证 → 下发浏览器 → 记账) 极小:每个活跃会话仅几十 KB/s 级信令/文本,无媒体转发 云厂商支持浏览器直连 + 临时凭证。已核实线索:Qwen-Omni-Realtime 明确支持 WebRTC 浏览器低延迟;ZEGO/火山走 RTC 房间模型天然直连;GLM-Realtime 为 WS+API Key,直连会暴露 key,需厂商临时凭证或走 B
B. 服务端中转(WS 全代理) 浏览器 → dsh 插件代理 → 云厂商 媒体全部过服务器:带宽=瓶颈(见 9.3 量化) 厂商只有 WS+长期 Key(如 GLM-Realtime 默认);或无浏览器 SDK

建议:M1 验证时逐厂商问清"浏览器直连 + 临时凭证(ephemeral token/RTC room 凭证)"支持度,优先 A;A 不可用的环节退回 B 并控制并发。

9.3 服务器负载量化(估算,供规划)

单会话媒体流量(最坏=厂商给原始 PCM,若走 RTC/Opus 会小 4~8 倍):

流 方向 码率估算 说明
上行语音 用户→云 16kHz PCM16 ≈ 256 kbps(Opus 则 ~24–32 kbps) 说话时才满速
下行语音 云→用户 GLM 输出 pcm24 ≈ 384 kbps —
数字人视频 云→用户 480P@25fps 估 0.8–1.5 Mbps(厂商未公开,按同类流媒体估) 仅出画档
  • 架构 A(直连):以上流量全部不经 dsh 服务器 → dsh 服务器负载≈0,只剩登录校验/凭证下发/账单(每会话可忽略)。dsh 服务器不是瓶颈。
  • 架构 B(中转):每路活跃全功能会话 ≈ 上行 256k + 下行 1.7M ≈ ~2 Mbps(不出画纯语音约 0.6 Mbps)。按带宽估并发:10 Mbps 出口 ≈ 5 路全功能(或 ~16 路纯语音);1 Gbps ≈ 500+ 路(理论,另受云配额/CPU 转发限制)。即:若要中转且大规模,带宽决定上限。

9.4 支持多少人同时访问(分层容量模型)

"同时访问"要拆成三层,瓶颈各不相同:

层 含义 瓶颈 规模预估(推荐架构 A)
① 同时在线 登录 dsh、面板能打开(不对话) dsh 服务器 + 云账号配额外的静态资源 数百~上千不成问题,服务器压力≈0
② 同时语音对话 占用一条云端 Realtime 会话 云厂商并发配额(例:GLM-Realtime 低等级在途并发 5 路起,可付费升级) 通常买 5~50 路;受成本约束
③ 同时数字人出画 占用一路云数字人渲染 云数字人按路/分钟计费的并发上限 单账号通常个位数~十路级,需与厂商确认

结论:

  • 瓶颈不在 dsh 服务器(只要走媒体面直连 A);瓶颈在云厂商并发配额和按分钟费用。
  • 推荐按"槽位数 = 你买的云端路数"来卖/分配:例如买 5 路 → 同时最多 5 人占用魔镜,第 6 人排队(slot + 配额机制正是为此设计)。这也是为什么 §四 slot/billing 是刚需。
  • 若坚持服务端全中转(B),则按 9.3 公式用你 dsh 服务器实际出口带宽反推上限。

⚠️ 各厂商具体并发配额/直连凭证机制随套餐变化,M1 开通账号后实测(一次开 N 路压测),本表为规划级估算。


附录:信息来源