Pipecat 传输层实验:传输层通,帧路由未通
新增实验代码 - services/bot_server.py:Pipecat SmallWebRTC 服务端, 把 ConversationEngine 包成一个 FrameProcessor(检验 A 方案的核心假设) - client/test_client.py:自写 aiortc 客户端——Pipecat 的客户端 SDK 覆盖浏览器/移动端/C++/ESP32,没有适配"Linux x86 盒子接 USB 阵列"这种形态 实验结果 - ✅ 传输层跑通:信令(47–280ms 往返)、ICE 连通、data channel、 双向媒体轨(客户端音轨送达服务端,服务端音轨客户端收到) - ❌ 帧路由未通:自定义处理器的 process_frame 调用次数为 0, 连自己注入的 StartFrame 都没进去,引擎从未运行 - 现象:连接全对、音轨协商成功、助手永远不说话,日志里一条错误都没有 对架构决策的影响 A 方案(Pipecat 只做传输、逻辑归自有引擎)的核心假设不是开箱即用的。 B 方案按框架原生 service 重构,绕开了这个接缝。 根因未定位:接线错误(接缝浅,A 可行)vs 模型不兼容(接缝深,应转 B)。 顺带挖出 8 个 Pipecat 集成坑,每个都表现为"什么都没发生",已记入 README: 客户端需发 data channel ping、offer 无媒体则不收集 ICE 候选、 run() 要 WorkerParams、TaskManager 需在事件循环内建、 后台任务异常被静默吞掉等。 其他 - bot_server.py 保留 [诊断] 前缀日志,供下一轮排查,定位后应清理 - 客户端默认地址改用 tailscale 域名(局域网已于当日重新编址, 从 192.168.0.x 变为 172.16.1.x) - 新增依赖 aiortc(含 av 17.x,注意 18.x 与 aiortc 1.15 不兼容)
This commit is contained in:
@@ -51,6 +51,8 @@ DoA 读取和网络桥接,不跑任何推理。
|
||||
|
||||
```
|
||||
~/ai-companion/ 助手主体
|
||||
├── client/test_client.py 自写 aiortc 客户端(实验用)
|
||||
├── services/bot_server.py Pipecat SmallWebRTC 服务端(实验,端口 7860)
|
||||
├── app/ 24 个 py 文件
|
||||
│ ├── config.py 配置,支持环境变量覆盖
|
||||
│ ├── prompts.py 单条 system 每轮重建
|
||||
@@ -98,7 +100,11 @@ TTS 的线程扩展方向又和 STT 相反(越多越快)。
|
||||
cd ~/tts-qwen && setsid nohup .venv/bin/python tts_server.py --port 18040 \
|
||||
> logs/tts_service.log 2>&1 < /dev/null &
|
||||
|
||||
# 2. 确认就绪
|
||||
# 2. (可选)Pipecat 传输层服务端 —— 实验状态,帧路由未通
|
||||
cd ~/ai-companion && setsid nohup .venv/bin/python services/bot_server.py \
|
||||
--host 0.0.0.0 --port 7860 > logs/bot_server.log 2>&1 < /dev/null &
|
||||
|
||||
# 3. 确认就绪
|
||||
curl -s http://127.0.0.1:18040/health
|
||||
|
||||
# 3. 跑测试
|
||||
@@ -154,6 +160,19 @@ rsync -az --delete --exclude '__pycache__' --exclude '*.pyc' \
|
||||
(vLLM 0.28 拉上来的);源码编译要从 GitHub 拉依赖,而这台机器下
|
||||
GitHub release 会断连。
|
||||
|
||||
## 当前卡点:Pipecat 帧路由未通
|
||||
|
||||
2026-09-15 的传输层实验:**传输层跑通(信令/ICE/data channel/双向媒体轨),
|
||||
但帧送不进自定义处理器**——`process_frame` 调用次数为 0,引擎从未运行。
|
||||
|
||||
现象:连接全对、音轨协商成功、助手永远不说话,**日志里一条错误都没有**。
|
||||
|
||||
这直接影响 A/B 架构方案(A:Pipecat 只做传输;B:按框架 service 模型重构)。
|
||||
根因未定位。完整记录见 Obsidian 笔记库里的 `P0-Pipecat传输层实验报告.md`。
|
||||
|
||||
**注意** `services/bot_server.py` 里目前还带着 `[诊断]` 前缀的日志,
|
||||
是留给下一轮排查用的,定位后应清理。
|
||||
|
||||
## 未做的事
|
||||
|
||||
- **没有常驻服务**:TTS 服务和助手都没有 systemd 开机自启(方案 §10 要求 P2 后做)
|
||||
|
||||
Reference in New Issue
Block a user