Co-authored-by: multica-agent <github@multica.ai> ## HEL-877 交付摘要(R5 后台施工,未部署未合并) - 新独立模块 src/cybergril/voice/:专属 livekit worker(agent_name=cybergril-voice-agent,复用 .12 FunASR/CosyVoice/silero 底座,不 fork 不另搭平台,无第二人格/记忆,不直连 LLM);llm_chat_api 适配器与文字前端 real.ts 同协议走 POST /api/chat(epoch 409 有界重同步、SSE 分片、turn_id 幂等、打断即断流);/api/voice/session 建房+专属派发+短时限 token 全服务端(密钥不进浏览器;缺配置/无档案/TTS 停机诚实拒绝;capabilities.voice 不伪造);receipt 仅在 SDK 真实播放完成后确认(打断/失败/φ 轮/旧 epoch 全 fail-closed)。 - 部署草案:/opt/voice-agent-cybergril 目录、worker 健康端口 8082、HTTP 8360 + HTTPS 8361 同进程双入口(deploy/voice/serve_dual_8360_8361.py,共用同一状态/锁)、启动顺序含 TTS GPU≥6GB 前置与回滚;本卡未执行任何启停。契约(开关/字幕/失败/打断/挂断 + CG-011 主动开口接缝)见 docs/runbook-hel877-voice.md §3。 - 自测(零真实请求):281 pytest 全过(含语音 25 例:socket 级打断断流、SSE 边界、重放零调用、文字/语音同门互打断、回执全负例、token 房间隔离);scripts/verify_hel877_voice_chain.py 8/8;.12 agent venv(livekit-agents 1.8.8)真 SDK 检查 8/8(stdin-only 零写入零网络);双端口同进程本地冒烟通过;ruff 干净;需求检查双目标通过(含 handoff-HEL-877.json)。 - 施工中总工 HEL-874(e978e87)推上同分支,本卡已完整并入,不覆盖并行成果。未验证如实列明:端到端语音(TTS 停机/GPU 3.9GB<5.6GB)、真 LiveKit server 的 dispatch/delete、移动端实机——待接线/审核卡真机验收,未经真实验收不称 R5 完成。
28 lines
1.4 KiB
YAML
28 lines
1.4 KiB
YAML
# CyberGril 语音会话端点脱敏配置示例(HEL-877,R5 后台施工)
|
||
#
|
||
# 复制为 config/voice.yaml(或用 CYBERGRIL_VOICE_CONFIG 指定路径)后由总管
|
||
# 按部署值填写;api_key/api_secret 只写服务器本地文件,不进仓库、不进浏览器、
|
||
# 不进任何日志。环境变量 CYBERGRIL_VOICE_* 可覆盖同名字段。
|
||
#
|
||
# 没有这份文件 = 本实例未配置语音:POST /api/voice/session 如实 503 拒绝,
|
||
# /api/health 的 capabilities.voice 保持 false,不伪造已接通。
|
||
|
||
# LiveKit SFU(.12 已有 docker voice-livekit;浏览器接入地址)
|
||
livekit_url: ws://192.168.200.12:7880
|
||
# 服务端 Twirp 调用地址(本机回环即可)
|
||
livekit_internal: http://127.0.0.1:7880
|
||
# LiveKit API 凭据(与 .12 /opt/voice-agent/.env 中 LIVEKIT_KEYS 同源;此处只放占位符)
|
||
api_key: <LIVEKIT_API_KEY_PLACEHOLDER>
|
||
api_secret: <LIVEKIT_API_SECRET_PLACEHOLDER>
|
||
|
||
# 专属 worker 的 agent_name:与通用 cascade-voice-agent 区分派发,互不争抢
|
||
agent_name: cybergril-voice-agent
|
||
|
||
# CosyVoice TTS 健康探测(TTS 不在就诚实拒绝开通话,不假装能说话)
|
||
tts_health_url: http://127.0.0.1:9880/health
|
||
|
||
# 浏览器接入 token 有效期(秒):只够加入房间,短时限
|
||
token_ttl_seconds: 300
|
||
# 会话登记有效期(秒):房间早空/挂断后登记自然过期
|
||
session_ttl_seconds: 7200
|