# DSH 语音 AI 女友(Voice AI Girlfriend) > "你好呀,我是小雅。从今往后,DeepSeek Harness 不只是你的编程搭子——它开口说话了。" > 📌 **流式数字人(DUIX 口播视频)已包含在本主线**:回复实时生成数字人口播视频(≤10s 分段流水线、TTS+画面同步播放、数字人开关、视频保留 200 条)。 > 🎥 **成品展示**(抖音): > - [口播视频效果 ①](https://www.douyin.com/user/self?from_tab_name=main&modal_id=7676326565919149339) > - [口播视频效果 ②](https://www.douyin.com/user/self?from_tab_name=main&modal_id=7678063553395412259) 这是一位住在你电脑里的 AI 女友:点一下麦克风,她听你说话、跟你拌嘴、把回答一字一句念给你听;你出门了,她追到你的 QQ 上继续聊;旁边那个窗口里的姑娘也不是摆设——她闲着会发呆,说话时会开口。 她有点小脾气,但你大概也会喜欢上这些: - ⚡ **嘴快**:你说完话,她 0.5 秒内开口 —— FunASR 中文识别只要 150ms、TTS 几乎秒开,反应比你还快 - 🎧 **耳朵挑**:-35dB 噪声门 + silero VAD 双重把关 —— 风扇、键盘、电视声统统进不来,只有你说话她才理 - 📱 **粘人**:她的回复自动推到你的 **QQ**(文本 + 语音 + 图片)—— 你不在电脑前,她也能找到你 - 👧 **会动**:右侧数字人窗口,空闲时发呆、说话时开口 —— 一个会呼吸的 AI,不是冷冰冰的对话框 - 🎬 **会演**:回复不只是声音——**流式数字人**(DUIX)把你的回复实时生成口播视频:长回复切成 ≤10 秒小段,边生成画面边合成下一段语音,一段接一段连续播放,TTS 与口型同步开口 - 🔇 **懂打断**:你插嘴她就闭嘴听你说;想让她把话说完,点一下开关就切回排队模式 - 🔊 **声音是你的**:TTS 声音克隆(OmniVoice,600+ 语言),音色由你给的参考音频决定,或直接用参数设计音色——她可以长成你喜欢的样子 - 🎛️ **随你调配**:数字人开关(开=视频+声音同步 / 关=接近即时的纯语音朗读)、QQ 推送开关、女友窗开关、插话/排队模式,全部工具行一键切换 ``` ┌────────────────────────────────────────────┐ │ 浏览器(DSH Web GUI :3092) │ │ ┌──────────┐ ┌─────────────────────────┐ │ │ │ 对话面板 │ │ 女友窗(bg/task 视频) │ │ │ │ 麦克风+⚡ │ │ 数字人视频(同步播放) │ │ │ └──────────┘ └─────────────────────────┘ │ │ 麦克风采集 ──▶ STT ──▶ 代理回复 ──▶ TTS ──▶ 播放 │ │ ▲回复文本 回复文本▼ │ └─────┼──────────────────────┬──────────────┘ │ 插件 QQ 桥 (WS) │ HTTP (CORS) ┌─────▼──────────────────────▼──────────────┐ │ voice_bridge (:8765) │ │ /api/stt FunASR 中文 ASR │ │ /api/tts OmniVoice 克隆(WSL2·FlashInfer 加速)│ │ /api/dh/* DUIX 数字人(分段流水线/播放/开关)│ │ /api/qq/* QQ 桥(收发 + 语音推送) │ │ /api/vad silero 打断 / media 素材 │ └────┬──────────────┬───────────────────────┘ │ OneBot HTTP+WS │ HTTP(提交音频→轮询视频) ┌────▼──────────┐ ┌──▼──────────────────────┐ │ NapCatQQ │ │ DUIX 数字人 (:8383) │ │ 小号在线 │ │ 音频 → 口型同步视频 │ │ → 文本+语音 │ │ → 女友窗同步播放 │ └───────────────┘ └──────────────────────────┘ ``` ## 一键全栈启动(推荐 · 2026-09-14 新增) 重启电脑后只需要做两件事:**自己先打开 Docker Desktop**,然后**双击 `bridge/start-full-stack.cmd`**(也可拷到桌面建快捷方式)。脚本会按正确顺序把整条链路拉起来,最后打印一张自检表;浏览器会用带 token 的链接自动打开。 | 步骤 | 做什么 | 幂等性 | |---|---|---| | 1/6 | 检查 Docker 引擎与 DUIX 容器;容器没起就 `docker start` 并等 `:9000` 应答 | 已在运行则跳过 | | 2/6 | 调用 `start-omnivoice-wsl.ps1`:起 WSL2 OmniVoice(`:9877`)+ 同步 bridge-config 的 IP + 拉起桥接(`:8765`) | 已在运行则跳过 | | 3/6 | 桥接保险:没起来就启动;缺 `DEEPSEEK_API_KEY` 时自动重启修复(余额徽章不再 503) | 幂等 | | 4/6 | 启动 DSH Web(默认最新 `0.2.1-rc.2` / profile `web-v021`,`:3092`)并打开带 token 的链接 | 该端口已在服务则绝不打断现有会话 | | 5/6 | 数字人状态:开关 / 容器 / 段进度 / `submits`、`segment_submits` 计数 | 只读 | | 6/6 | 汇总自检表:每条链路 OK / FAIL | 只读 | 参数:`-NoDsh`(只起语音栈)、`-V013`(改用 dsh 0.1.3 / profile `web-v013` / `:3080`)、`-Rc8`(旧版 rc.8 / profile `web`)、`-Port <端口>`、`-Harness <路径>`、`-Profile <名字>`、`-NoBrowser`、`-WithQQ`(额外拉起 NapCat)、`-SkipDockerCheck`。 ```powershell powershell -NoProfile -ExecutionPolicy Bypass -File bridge\start-full-stack.ps1 -NoBrowser ``` ## 版本适配与维护节奏(2026-10-25) | 组件 | 适配版本 | |---|---| | **DSH(主用)** | `dsh 0.2.1-rc.2` / profile `web-v021`(`:3092`) | | **DSH(兼容)** | `dsh 0.1.3-alpha.1` / profile `web-v013`(`:3080`) | | **DSH(旧版)** | `rc.8` / profile `web`(用插件 `v0.3.0`) | | 插件 | `@beiyege-01/dsh-voice-ai-girlfriend` **v0.4.0**(独立包仓库同步;`node build.mjs` 构建) | | 桥接 | `bridge/voice_bridge.py`(FastAPI/uvicorn `:8765`,Python 3.14 venv) | | TTS 引擎 | OmniVoice(WSL2 + FlashInfer,`:9877`) | | 数字人 | DUIX `guiji2025/duix.avatar-5090:trt10.9`(宿主 `:9000`,冷启动 1-3 分钟) | | Docker | Docker Desktop 29.x(DUIX 容器随「数字人开关」`docker start/stop`) | **v0.4.0(DSH 0.2.1 适配)**:2026-10-25 在 `dsh 0.2.1-rc.2`(profile `web-v021`,`:3092`)实测通过——插件加载、工具行/女友窗渲染、`useChat` 的 `assistant-step` 读取、回复触发 `/api/tts` 与 `/api/dh/speak`、**数字人端到端出片(1/1 段,女友窗视频实际播放)**、余额 pill 全部正常。0.2.x 的 Web 插件系统(`__ModuleLoader__` 闭包、`