3.7 KiB
Executable File
手术室耗材 — 语音确认(部署平台)
这里是语音确认浏览器端的唯一静态载体:与监控 API 分宿,复制本目录即可独立分发(index.html + voice_app.js,Tailwind 使用 CDN)。
- 功能:播放 TTS、并行录音、
POST .../resolve上传 WAV;WebSocket 收voice_assignment/voice_pending等。协议见docs/客户端手术通信接口说明.md。 - 界面:默认 术间模式 仅突出状态与用人话表述的结果;接口地址、原始 JSON 与详细日志在 「高级设置」 内。首次打开带查询参数
?debug=1时会自动展开高级区(并记住展开状态)。 - 禁止使用
file://打开(麦克风与跨域异常);必须通过下文 HTTP(S) 方式访问。
推荐:在本目录直接用 start_http 起服务
仅需目标机装有 Python 3:
| 系统 | 操作 |
|---|---|
| macOS / Linux | 首次:chmod +x start_http.sh,然后 ./start_http.sh(端口可传第一参数,默认 8080) |
| Windows | 运行 start_http.bat,端口可传第一参数(默认 8080) |
环境变量 VOCH_HTTP_BIND:默认 0.0.0.0,用于同一局域网内的语音终端访问;若只允许本机调试,可设为 127.0.0.1(请配合防火墙与访问控制)。
浏览器打开控制台打印的局域网 URL,将 Base URL 指向监控 API(示例 http://192.168.1.100:38080)。如果语音页 URL 是 http://192.168.1.100:8080/,页面首次加载会默认推导 API 为 http://192.168.1.100:38080,并据此连接 ws://192.168.1.100:38080/client/voice-terminals/ws?...。
仓库根目录的封装脚本(仅此仓库内)
在仓库根目录为开发便利提供的入口,行为与上文一致:
./start_voice_confirmation_web.sh --plain [端口] # → 等价执行本目录 start_http.sh
./start_voice_confirmation_web.sh --single [端口] # → 生成 dist/ 后等价执行 dist/start_http.sh
./start_voice_confirmation_web.sh [端口] # livereload(需 uv sync --group dev)
Windows:start_voice_confirmation_web.bat。一键联调 ./start_all.sh 在 PLAIN_STATIC=1 时会后台调用本目录的 start_http.sh(监听 VOICE_HOST:VOICE_PORT,默认 0.0.0.0:8080)。
热重载也可直接:
uv run --group dev python scripts/dev_static_livereload.py --root voice-confirmation-web --host 0.0.0.0 -p 8080
(--root 须为本目录的路径或名称(在仓库根执行时即用 voice-confirmation-web)。)
单 HTML 分发(dist/)
在仓库根执行:
python3 scripts/bundle_voice_confirmation_single_html.py
生成 dist/index.html(内联脚本),并拷贝 start_http.* 到 dist/。对外只发包 dist/ 即可;该目录默认被 .gitignore 忽略,需在本地或 CI 中执行上述命令生成。
生产 / 大规模
- 将本目录整体或
dist/交给 Nginx / Caddy / 对象存储 + CDN;非localhost时通常需要 HTTPS 才能稳定使用麦克风,API 使用 https 与 wss。 - API 发布:监控 API 默认由仓库根目录的
./deploy.sh在宿主机监听0.0.0.0:38080,浏览器 Base URL 填http://<监控服务局域网IP>:38080。 - CORS:独立部署的语音页跨域访问 API 时,后端需设置
DEMO_CORS_ENABLED=true;正式部署建议在.env里将DEMO_CORS_ORIGINS收窄为具体来源,例如http://<语音页局域网IP>:8080。
与 scripts/demo_client 的关系
Demo 页(默认 :38081)负责流程联调;不含语音确认 UI。语音闭环只在本目录或 dist/ 页面完成。