shuziren/README.md
2026-10-20 17:21:57 +08:00

69 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# DeepSeek 数字人助手
这是一个“语音提问 → 百度短语音识别极速版 → DeepSeek 回答 → 数字人口播”的 Vue 项目。数字人在待机时默认断开,避免持续占用云渲染交互资源;DeepSeek 返回答案后会自动连接并播报。
## 项目结构
```text
src/ Vue 前端源码
src/assets/media/ 会随前端一起构建的运行时媒体
server/ 百度语音识别、DeepSeek 和日志服务
resources/reference/ 不参与构建的原始、参考素材
public/ 原样复制到发布目录的公共文件
dist/ 前端构建产物(不提交 Git)
dist-server/ 服务端构建产物(不提交 Git)
logs/ 本地问答日志(不提交 Git)
```
所有视频统一存放在 `src/assets/media/`,当前运行时使用 `standby.mp4`,旧版未连接视频为 `disconnected.mp4`。音色样本和采访音频放在 `resources/reference/`,用途详见 `resources/README.md`。
## 本地开发
```bash
corepack enable
corepack yarn install --frozen-lockfile
corepack yarn dev
```
打开 `http://127.0.0.1:5173/` 后,浏览器会请求麦克风权限。允许后即可直接说话,无需点击提问按钮。页面在检测到用户停止说话2秒后,将16kHz单声道PCM录音提交给服务端,再由服务端调用百度短语音识别极速版;这套流程不依赖浏览器内置的 `SpeechRecognition` 服务。数字人播报结束后会继续监听下一句。DeepSeek 30 秒未返回会取消请求并自动销毁数字人 iframe。
成功问答会按日期保存到 `logs/conversation-YYYY-MM-DD.log`,其中包含 UTC 时间、用户语音转写文字与数字人回答。生产部署时该目录会映射到服务器的 `/home/shuziren/logs/`。
## 本地构建与生产运行
要求 Node.js 18 或更高版本。首次拉取代码后执行:
```bash
corepack enable
corepack yarn install --frozen-lockfile
corepack yarn build
corepack yarn start
```
`build` 会同时生成 `dist/` 和 `dist-server/`。生产服务默认监听 `9000` 端口。
## 发布到 Linux 服务器
项目包含独立 Node 生产服务,会同时提供网页、`/api/baidu/asr`、`/api/deepseek/chat` 和 `/healthz`,监听 `9000` 端口;不需要额外安装 Nginx 或 Node。
1. 将整个项目目录上传到服务器 `/home/shuziren/`。
2. 在服务器上进入该目录:`cd /home/shuziren`
3. 执行:`sh deploy.sh`
4. 直接访问服务:`http://服务器IP:9000/`;通过 Nginx HTTPS 子路径访问:`https://www.v8.中国/shuziren/`
`deploy.sh` 会构建并启动 Docker 容器 `shuziren`,并等待健康检查通过。停止服务使用 `docker compose down`;查看日志使用 `docker compose logs -f`。
如果 Nginx 直接从 `/data/nginx/www/shuziren/` 提供静态页面,而不是把整个站点反向代理到 9000 端口,请使用:
```bash
STATIC_DIRECTORY=/data/nginx/www/shuziren sh deploy.sh
```
发布脚本会强制重建容器,并将容器中的最新 `dist` 同步到该 Nginx 静态目录,避免继续显示旧视频。
服务器需要安装 Docker Engine 和 Docker Compose v2,并放行 TCP `9000` 入站端口。服务端必须能够访问 `https://api.deepseek.com`。
## 安全提示
根据当前项目要求,DeepSeek API Key 和百度语音应用密钥位于 `server/` 的服务端代码中,不会进入浏览器前端构建产物,但会包含在服务器镜像内。请勿将项目或镜像上传到公开位置;公网部署建议额外使用反向代理鉴权或 IP 白名单,避免 API 被滥用。