61 lines
3.2 KiB
Markdown
61 lines
3.2 KiB
Markdown
# 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`。
|
||
|
||
服务器需要安装 Docker Engine 和 Docker Compose v2,并放行 TCP `9000` 入站端口。服务端必须能够访问 `https://api.deepseek.com`。
|
||
|
||
## 安全提示
|
||
|
||
根据当前项目要求,DeepSeek API Key 和百度语音应用密钥位于 `server/` 的服务端代码中,不会进入浏览器前端构建产物,但会包含在服务器镜像内。请勿将项目或镜像上传到公开位置;公网部署建议额外使用反向代理鉴权或 IP 白名单,避免 API 被滥用。
|