DeepSeek 数字人助手
这是一个“语音提问 → 百度短语音识别极速版 → DeepSeek 回答 → 数字人口播”的 Vue 项目。数字人在待机时默认断开,避免持续占用云渲染交互资源;DeepSeek 返回答案后会自动连接并播报。
项目结构
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。
本地开发
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 或更高版本。首次拉取代码后执行:
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。
- 将整个项目目录上传到服务器
/home/shuziren/。 - 在服务器上进入该目录:
cd /home/shuziren - 执行:
sh deploy.sh - 直接访问服务:
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 被滥用。