分享好友 最新动态首页 最新动态分类 切换频道
Realtime API:开启语音交互新时代原创
2024-12-26 13:40

OpenAI 推出的 Realtime API 标志着语音交互技术的一次重大突破。它允许开发者构建低延迟、高效率的多模态对话体验,支持文本和音频输入输出,为语音助手、在线教育、游戏等场景带来了新的可能性。

1.会话区域

2.语音设置

3.功能与模型配置

  • message: 表示一条消息,包含文本或音频的输入。
  • function_call: 表示模型希望调用某个工具或函数。
  • function_call_output: 表示函数调用的返回结果。

1.引入模块

2.floatTo16BitPCM 函数

3.base64EncodeAudio 函数

4.解码音频文件并获取通道数据

5.发送音频数据

  1. event_id:可选的客户端生成的 ID,用于标识事件。
  2. type:事件类型,必须为 "conversation.item.create"。
  3. previous_item_id:新项目插入后,前一个项目的 ID。
  4. item:要添加的项目,包含:
  • id:项目唯一 ID。
  • type:项目类型("message"、"function_call"、"function_call_output")。
  • status:项目状态("completed"、"in_progress"、"incomplete")。
  • role:消息发送者的角色("user"、"assistant"、"system")。
  • content:消息内容。
  • call_id、name、arguments、output:用于函数调用相关的详细信息。

我们把关注点放到代码实现上, 如下图所示,这里是Python Server端的代码,__init__.py。 它主要完成了下面三个方面的任务,

  • WebSocket 连接:connect()负责管理与 OpenAI API 的 WebSocket 连接,发送和接收数据。
  • 工具执行:VoiceToolExecutor 负责工具调用的异步执行,确保并发操作的安全性。
  • 实时 API 代理:OpenAIVoiceReactAgent 管理与 OpenAI 实时 API 的交互,执行工具并根据输入流式传输响应。

1.connect()(函数)  

2.VoiceToolExecutor (类)  

  • tools_by_name: 工具名称与 BaseTool 对象的字典。
  • _trigger_future: 管理函数调用触发的 asyncio.Future 对象。
  • _lock: 用于安全处理并发操作的asyncio.Lock。
  •   _trigger_func():等待 future 对象返回工具调用数据。
  •   add_tool_call(tool_call):添加工具调用,确保不会被其他并发调用覆盖。
  •   _create_tool_call_task(tool_call):创建并运行处理工具调用的任务,使用工具的 `ainvoke()` 方法解析 JSON 参数并处理错误。
  •   output_iterator():持续返回任务结果的主循环,管理并发任务并处理错误。

3.OpenAIVoiceReactAgent (类)  

  • model: 使用的 OpenAI 模型。
  • api_key: 以 SecretStr 格式安全存储的 API 密钥。
  • instructions: 可选的模型指令。
  • tools: 可用的工具列表。
  • url: OpenAI API 的 WebSocket URL。
  • aconnect(input_stream, send_output_chunk):连接 OpenAI API 并管理实时的输入输出通讯。它发送工具信息和指令,监听响应,处理工具输出,并流式传输对话内容,使用 amerge 合并多个输入输出流。该方法还处理特定的响应类型并触发必要的工具调用。
  • audio-playback-worklet.js:实现了一个 AudioPlaybackWorklet,负责将接收到的 PCM 数据解码并播放。它包含了handleMessage 方法,将传入的音频数据存入缓冲区;process 方法负责将缓冲区的数据输出到扬声器,按每次的缓冲量来处理数据。
  • audio-processor-worklet.js:实现了 PCMAudioProcessor,将麦克风捕获的 Float32 音频数据转换为 Int16 格式,然后通过 postMessage 发送到主线程,供后续处理。
  • Index.html:通过WebSocket("ws://localhost:3000/ws")与服务器建立连接后,即可实现音频的实时传输和处理。为此,我们创建了一个Player类来初始化音频上下文,并利用AudioWorkletNode(引用audio-playback-worklet.js)播放服务器传来的音频数据。同时,设计Recorder类,用于获取用户麦克风输入,通过audio-processor-worklet.js提供的方法处理音频数据,将其分片编码为base64格式,然后通过WebSocket发送到服务器。在接收到服务器返回的音频流后,客户端会对其进行解码,并传递给播放器,从而实现音频的播放功能。整个流程形成了一个闭环,确保了音频从录入到播放的顺畅进行。
最新文章
4步轻松使用Windows优化大师清理多余的插件
怎样清理电脑中多余没有用的插件,平时不管是使用的是哪一款电子设备,我们都会遇到插件的相关内容,尤其是在使用电脑时更为突出。而如果电脑中安装了很多多余且没什么作用的插件的话,及时进行插件清理,不仅可以释放电脑空间,还可以让电
2024年度热门游戏排行榜前十名 高人气精彩绝伦手游TOP10
1、《蛋仔派对》游戏类型:休闲、卡通游戏描述:作为一款欢乐国民游戏,拥有5亿玩家的选择。2、《和平精英》发布公司:腾讯游戏类型:第一人称射击、多人游戏描述:极限追猎,王牌之战,大逃杀模式,百人同场竞技,生存到最后。3、《王者荣
328cc天下资料|词语释义解释落实
探索328cc天下资料:词语释义与落实行动的重要性随着信息技术的飞速发展,我们面临着海量的信息和数据。“328cc天下资料”作为一个关键词,逐渐引起了人们的广泛关注,本文将围绕这一主题展开探讨,旨在解读其背后的词语含义,并强调落实这
2025中国经济关键词丨强化政策扶持 全方位促进民营经济持续健康蓬勃发展
  央广网北京12月16日消息(记者王迟)民营经济是激发创新活力、扩大社会就业及驱动经济增长的重要力量。  会议提出,出台民营经济促进法。“民营经济在经济格局中地位关键,吸纳就业与创新驱动作用显著。出台民营经济促进法彰显国家对
2024年全国重点大学排名名单
名次学校名称办学层次1北京大学世界一流大学2清华大学世界一流大学3中国科学院大学世界一流大学(特色)4复旦大学世界一流大学5中国人民大学世界一流大学(特色)5浙江大学世界一流大学7上海交通大学世界知名高水平大学(前列)8南京大学世
2024短剧小程序分销cps系统平台搭建
短剧系统是可以看影视作品和听故事,看爽文,刷影视短剧视频,签到,系统有分销功能(可辅助推广),有VIP功能,用户可以开通VIP服务,是一个比较强大的系统。像APP一样,但是是可以在小程序上使用。怎么搭建像追剧这类的小程序呢?1.小程
91科技集团西安公司:金融助力科技创新 助推西安丝路金融中心建设
千年古都焕发新活力 加快丝路金融中心建设古都西安积极融入数字经济发展大势,培育壮大新质生产力,持续推动产业转型升级,取得了不凡的成绩:入选全国“第二批中小企业数字化转型试点城市”名单;截至2024年10月,拥有‌大数据企业400余家
AIGC降痕术:论文AI率降低的智能解决方案
随着AI技术的飞速发展,AI辅助写作已成为学术界的新宠。但随之而来的AIGC痕迹检测问题,却让原创性论文的撰写变得复杂。 为了帮助大家在享受AI带来的便捷同时,确保论文的独创性和学术价值,我给大家介绍一款AIGC
AI绘画神器评测:用AI一键生成超逼真美女写真!
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=030001_yljdaimn 在数字化时代,AI技术已悄然影响着我们的生活,尤其是在艺术创作领域。AI绘画工具如同一位神
相关文章
推荐文章
发表评论
0评