菜单

实时和语音应用

相关源文件

本文档介绍了如何使用 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 实时 API 集成

该系统使用 @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 镜像服务器

镜像服务器使用 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 之间的中间件。

组件配置目的
RealtimeRelayOpenAI 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, wsWebSocket 通信
音频处理与实时 API 集成语音活动检测,音频流
UI 框架react, react-dom, typescript前端应用

来源: examples/voice_solutions/one_way_translation_using_realtime_api/package.json6-39

开发工作流

该应用提供了多个开发和部署脚本

脚本命令目的
startreact-scripts start开发服务器
relaynodemon ./relay-server/index.js带热重载的中继服务器
镜像服务器node mirror-server/mirror-server.mjsSocket.IO 音频分发
buildreact-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

可扩展性与语言支持

添加新语言

该系统通过跨多个组件的配置更新来支持动态语言添加

  1. 镜像服务器事件处理 - 添加新的 mirrorAudio:langcodeaudioFrame:langcode 事件对
  2. 翻译指令 - 在 translation_prompts.js 中配置特定语言的提示
  3. 客户端配置 - 更新 languageConfigs 数组和 languages 对象
  4. Socket 事件注册 - 在说话者和听者接口中实现相应的事件处理程序

来源: examples/voice_solutions/one_way_translation_using_realtime_api/README.md53-114

实时处理能力

该系统演示了关键的实时语音处理模式

  • 语音活动检测 (VAD) - 自动语音检测和处理
  • 手动一键通 - 用户控制的音频输入
  • 多流翻译 - 同时翻译到多种目标语言
  • 实时音频分发 - 实时音频流传输到多个听众
  • 语言切换 - 听众动态语言选择

来源: examples/voice_solutions/one_way_translation_using_realtime_api/README.md121-128