openai/openai-realtime-meeting-assistant

GitHub: openai/openai-realtime-meeting-assistant

OpenAI 官方的实时会议助手示例,演示如何通过语音自然语言驱动 WebRTC 多人房间中的共享看板。

Stars: 247 | Forks: 39

# 实时会议助手演示 [![MIT License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) ![Go](https://img.shields.io/badge/Built_with-Go-blue) ![WebRTC](https://img.shields.io/badge/Uses-WebRTC-blueviolet) ![OpenAI API](https://img.shields.io/badge/Powered_by-OpenAI_API-orange) 本演示展示了如何使用 [OpenAI Realtime API](https://platform.openai.com/docs/guides/realtime) 在站会期间通过语音与看板进行交互。多个用户可以加入同一个 WebRTC 房间,并使用自然语音更新共享看板。 它作为一个 Go 应用程序实现,使用了 Pion WebRTC、Gorilla WebSocket、Opus 音频编码/解码以及 [Realtime + WebRTC 集成](https://developers.openai.com/api/docs/guides/realtime-webrtc/)。服务器混合参与者的音频,将其发送到 OpenAI Realtime peer,并使用 [function calling](https://developers.openai.com/api/docs/guides/realtime-conversations/) 来触发看板更新。 ![screenshot](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/bc8a2e2dcd182340.png) ## 如何使用 ### 运行应用程序 1. **设置 OpenAI API:** - 如果您是 OpenAI API 的新手,请[注册一个帐户](https://platform.openai.com/signup)。 - 按照[快速入门](https://platform.openai.com/docs/quickstart)获取您的 API 密钥。 2. **克隆存储库:** git clone https://github.com/openai/openai-realtime-meeting-assistant.git 3. **设置您的 API 密钥:** 在您启动服务器的 shell 中导出 `OPENAI_API_KEY`: export OPENAI_API_KEY= 服务器直接读取环境变量。不会自动加载 `.env` 文件。 4. **安装依赖项:** 您需要 Go 1.24 或更高版本,以及可通过 `pkg-config` 使用的 Opus 库。 brew install opus pkg-config 5. **运行应用程序:** go run . 应用程序将在 [http://localhost:3000](http://localhost:3000) 上可用。 要使用其他端口: go run . -addr :8080 ### 开始会话 当服务器启动时,如果配置了 `OPENAI_API_KEY`,它将创建 OpenAI Realtime peer。如果缺少密钥或 Realtime 连接失败,浏览器房间仍会加载,但看板助手将不会监听或更新卡片。 1. 打开 [http://localhost:3000](http://localhost:3000)。 2. 点击 **Join room**。 3. 允许摄像头和麦克风访问。 4. 自然地谈论看板上的工作。混合后的房间音频将发送给 Realtime 助手,看板的更改将广播给房间中的每个人。 5. 在另一个浏览器选项卡或其他设备上打开相同的 URL,作为另一个参与者加入。 6. 点击 **Leave** 将该浏览器从房间断开连接,并停止其本地媒体轨道。 ## 演示流程 **请使用耳机或将扬声器音量调低以避免回声。背景音频可能会被会议混音器拾取,并被视为看板更新。** 演示以 Backlog 列中的一些与 WebRTC 相关的看板卡片开始。尝试说: 1. "我开始处理 ICE 重启相关的工单了。" 2. "DTLS 清理工作被一个传输关闭问题阻塞了。" 3. "我们发布了 RTP HEVC 打包器。" 4. "创建一个工单,为 simulcast 转发添加订阅控制。" 5. "给 simulcast 卡片添加带宽标签。" 6. "删除数据包重传缓冲区工单。" 看板应该会就地更新。卡片移动会有动画效果,完成的工作会触发五彩纸屑效果,备注更新可能会显示简短的评论预览。 ### 配置的交互 助手被配置为语音控制的看板操作员。它可以: - 根据明确的请求或具体的站会更新创建工单。 - 在 **Backlog**、**In Progress**、**Blocked** 和 **Done** 之间移动现有工单。 - 添加标签而不替换现有标签。 - 当后续有更多上下文时,更新工单标题或备注。 - 根据请求删除工单。 - 当不需要看板操作时,忽略无意义的词、交接或总结语。 有关模型使用的指令和工具的更多详细信息,请参阅 `kanban.go`。 ## 自定义 您可以更新: - `kanban.go` 中 `initialKanbanBoardCards` 里的初始卡片。 - `kanban.go` 中 `sessionInstructions` 里的 Realtime 指令。 - `kanban.go` 中 `kanbanTools` 里暴露给模型的工具。 - 通过设置 `OPENAI_REALTIME_MODEL` 来更改默认的 Realtime 模型;否则应用程序将使用 `gpt-realtime-2`。 - `index.html` 中的浏览器 UI。 - 通过 `main.go` 中的 `-addr` 标志指定 HTTP 绑定地址。 ## 许可证 本项目基于 MIT 许可证授权。详情请参阅 LICENSE 文件。
标签:AI助手, EVTX分析, Go, OpenAI, Ruby工具, WebRTC, 会议管理, 内存规避, 实时音频, 日志审计, 看板