本文档介绍了如何使用 OpenAI 的实时 API 实现实时语音应用,重点关注实时音频处理、翻译和流媒体。该材料演示了如何构建能够处理语音输入、实时翻译和跨多个客户端分发音频的对话式 AI 应用。
有关基本的音频处理和语音转文本功能,请参阅音频和语音处理。对于结合文本和音频的多模态应用,请参阅多模态应用。
菜谱中的实时语音应用采用分布式架构,利用 WebSocket 连接、音频流和 OpenAI 实时 API 来实现实时翻译和语音通信。
来源: examples/voice_solutions/one_way_translation_using_realtime_api/README.md1-128 examples/voice_solutions/one_way_translation_using_realtime_api/mirror-server/mirror-server.mjs1-42 examples/voice_solutions/one_way_translation_using_realtime_api/relay-server/index.js1-19
该系统使用 @openai/realtime-api-beta 包与 OpenAI 实时 API 建立 WebSocket 连接,用于实时音频处理和翻译。
来源: examples/voice_solutions/one_way_translation_using_realtime_api/package.json7 examples/voice_solutions/one_way_translation_using_realtime_api/README.md76-89
镜像服务器使用 Socket.IO 事件广播处理跨多个语言流的实时音频分发。
| 事件模式 | 目的 | 处理器 |
|---|---|---|
mirrorAudio:fr | 法语音频输入 | audioFrame:fr 广播 |
mirrorAudio:es | 西班牙语音频输入 | audioFrame:es 广播 |
mirrorAudio:tl | 他加禄语音频输入 | audioFrame:tl 广播 |
mirrorAudio:en | 英语音频输入 | audioFrame:en 广播 |
mirrorAudio:zh | 中文音频输入 | audioFrame:zh 广播 |
来源: examples/voice_solutions/one_way_translation_using_realtime_api/mirror-server/mirror-server.mjs15-33
该应用支持多语言翻译,具有可配置的语言指令和路由。
来源: examples/voice_solutions/one_way_translation_using_realtime_api/README.md68-74 examples/voice_solutions/one_way_translation_using_realtime_api/README.md92-107
该系统实现了用于音频处理和分发的双路径通信模式。
来源: examples/voice_solutions/one_way_translation_using_realtime_api/README.md3 examples/voice_solutions/one_way_translation_using_realtime_api/mirror-server/mirror-server.mjs12-37
中继服务器充当客户端应用和 OpenAI 实时 API 之间的中间件。
| 组件 | 配置 | 目的 |
|---|---|---|
RealtimeRelay | OpenAI API 密钥 | 实时 API 的 WebSocket 代理 |
PORT | 环境变量(默认 8081) | 服务器监听端口 |
OPENAI_API_KEY | 环境变量 | API 身份验证 |
来源: examples/voice_solutions/one_way_translation_using_realtime_api/relay-server/index.js5-18
该应用需要特定的环境变量以集成 OpenAI API
REACT_APP_OPENAI_API_KEY=sk-proj-1234567890
OPENAI_API_KEY=<your_api_key>
来源: examples/voice_solutions/one_way_translation_using_realtime_api/.env.example1 examples/voice_solutions/one_way_translation_using_realtime_api/README.md24
该应用使用 React 和 TypeScript 以及专门的音频处理库
| 依赖类别 | 软件包 | 目的 |
|---|---|---|
| OpenAI集成 | @openai/realtime-api-beta | 实时 API 客户端 |
| 实时通信 | socket.io, socket.io-client, ws | WebSocket 通信 |
| 音频处理 | 与实时 API 集成 | 语音活动检测,音频流 |
| UI 框架 | react, react-dom, typescript | 前端应用 |
来源: examples/voice_solutions/one_way_translation_using_realtime_api/package.json6-39
该应用提供了多个开发和部署脚本
| 脚本 | 命令 | 目的 |
|---|---|---|
start | react-scripts start | 开发服务器 |
relay | nodemon ./relay-server/index.js | 带热重载的中继服务器 |
| 镜像服务器 | node mirror-server/mirror-server.mjs | Socket.IO 音频分发 |
build | react-scripts build | 生产构建 |
来源: examples/voice_solutions/one_way_translation_using_realtime_api/package.json36-42 examples/voice_solutions/one_way_translation_using_realtime_api/README.md47-50
该系统通过跨多个组件的配置更新来支持动态语言添加
mirrorAudio:langcode 和 audioFrame:langcode 事件对translation_prompts.js 中配置特定语言的提示languageConfigs 数组和 languages 对象来源: examples/voice_solutions/one_way_translation_using_realtime_api/README.md53-114
该系统演示了关键的实时语音处理模式
来源: examples/voice_solutions/one_way_translation_using_realtime_api/README.md121-128