返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

OpenAI Realtime 低延迟,多模态,实时语音交互

[复制链接]
链载Ai 显示全部楼层 发表于 昨天 11:35 |阅读模式 打印 上一主题 下一主题

OpenAI公布了五项重大创新,其中“实时 API”(Realtime API)的新功能,使得开发者能够创建具有低延迟、AI 生成的语音响应功能的应用程序。尽管这一功能不完全等同于 ChatGPT 的高级语音模式,但其能力已经非常接近,旨在帮助开发者为用户提供近乎实时的语音到语音互动体验。除此之外,OpenAI 还发布了其他一系列新功能,旨在进一步提升开发者的 AI 应用构建体验。

包括实时语音API、提示词缓存、模型蒸馏、视觉微调、新Playground。

这些创新将改变开发者与AI互动的方式,并有助于降低AI模型的使用成本,推动多模式的语音、视觉等应用的普及。

ingFang SC", system-ui, -apple-system, "system-ui", "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);">Realtime API 的革新

传统上,处理语音交互需要经过多个步骤(ASR-LLM-TTS),导致响应延迟。在文本交互中,这种延迟可能尚可接受,但在电话客服中则难以容忍。Realtime API 的引入直接解决了这一问题。
OpenAI 的 Realtime API 可以直接处理语音输入和输出,消除了传统语音交互流程中的中间步骤。传统流程通常需要先将语音转换为文本,再将文本转换为语音,这会导致较大的延迟。而 Realtime API 简化了这一过程,实现了语音到语音的直接转换,大幅减少了延迟,提供了流畅的实时交互体验。
在 DevDay 大会上,OpenAI 展示了一个实时语音电话系统,用户可以通过语音指令订购等商品。系统实时捕获用户的语音指令,理解需求,并立即通过语音反馈确认订购信息。这种自然、高效的交互展示了实时语音技术的潜力。
在客户服务领域,这意味着实时语音交互不仅能够提升用户体验,还能使服务更加个性化和及时化。企业可以利用 Realtime API 打造更智能的语音助手和 IVR 系统,特别是在需要快速响应和低延迟互动的场景中,为客户提供即时支持。

ingFang SC", system-ui, -apple-system, "system-ui", "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);">实时语音 AI 的应用场景


    ingFang SC", system-ui, -apple-system, "system-ui", "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);">
  1. 智能 IVR:结合语音识别和自然语言处理(NLP),智能 IVR 可以识别用户请求,提供多级菜单选择和自动身份验证,减少对人工客服的依赖,提升服务效率。
  2. 智能路由:通过情感分析和用户历史数据,识别客户情绪和意图,将客户转接给合适的客服代表或曾经服务过的客服人员。
    故障排查:使用语音机器人解决简单问题,无法解决时自动转接人工客服并提供上下文信息,人工客服进行后续问题的解决。
    语音通知与提醒:自动拨号向客户推送重要通知,提供预约提醒、语音关怀、语音促销和未接电话重拨,确保用户不遗漏重要信息。
    销售外呼:基于用户数据生成个性化话术,确定潜在客户优先级,通过语音机器人与客户互动收集反馈,自动记录通话并生成线索报告,提升销售效率

ingFang SC", system-ui, -apple-system, "system-ui", "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);">影响与前景

这种无缝、多渠道的体验对客户服务的影响是巨大的。它降低了客户沟通成本,使服务更加人性化,同时让客服人员能够专注于需要人工干预的问题,从而提高服务质量。


个人体验

项目本地部署

OpenAI 在 github 上面发布了最新的 realtime-api开源项目。该项目是 React 应用程序,用于使用 Realtime API 进行检查、构建和调试。

https://github.com/openai/openai-realtime-console.git

ingFang SC", system-ui, -apple-system, "system-ui", "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;">

Realtime API 能够构建低延迟、多模式的对话体验。它目前支持将文本和音频作为输入和输出,以及函数调用。

API 的一些显著优势包括:

  1. 本机语音转语音:没有文本中介意味着低延迟、细致入微的输出。

  2. 自然、可操纵的声音:这些模特具有自然的语调变化,可以大笑、耳语并遵循语气方向。

  3. 同步多模态输出:文本有助于审核,比实时更快的音频确保稳定播放。


项目运行需要 node 环境,还有 openai 的 API KEY,并且需要有余额。

#拉取仓库代码gitclonehttps://github.com/openai/openai-realtime-console.git
cdopenai-realtime-console#安装依赖包npmi
#启动服务npmstart

启动后需要先填入 OpenAI API Key。

进入后就能够看到主界面。

点击右下角的 "connect" 后就会询问开启麦克风。

连接成功后即可进行语音实时聊天。


官方定价

从目前的定价来看,是贵的很,文字1M输入是5刀、输出是20刀,而语音1M输入是100刀、输出是200刀。玩不起


官方Realtime API使用示例

Realtime API 是一种基于事件的有状态 API,通过 WebSocket 进行通信。下面是一个使用 Node.js 中流行的 ws 库建立套接字连接、从客户端发送消息以及从服务器接收响应的简单示例。

import WebSocket from "ws";
const url = "wss://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview-2024-10-01";const ws = new WebSocket(url, {headers: {"Authorization": "Bearer " + process.env.OPENAI_API_KEY,"OpenAI-Beta": "realtime=v1",},});
ws.on("open", function open() {console.log("Connected to server.");ws.send(JSON.stringify({type: "response.create",response: {modalities: ["text"],instructions: "lease assist the user.",}}));});
ws.on("message", function incoming(message) {console.log(JSON.parse(message.toString()));});


  • 发送文本

constevent={type:'conversation.item.create',item:{type:'message',role:'user',content:[{type:'input_text',text:'Hello!'}]}};ws.send(JSON.stringify(event));ws.send(JSON.stringify({type:'response.create'}));


  • 发送音频

import fs from 'fs';import decodeAudio from 'audio-decode';
// Converts Float32Array of audio data to PCM16 ArrayBufferfunction floatTo16BitPCM(float32Array) {const buffer = new ArrayBuffer(float32Array.length * 2);const view = new DataView(buffer);let offset = 0;for (let i = 0; i < float32Array.length; i++, offset += 2) {let s = Math.max(-1, Math.min(1, float32Array[i]));view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7fff, true);}return buffer;}
// Converts a Float32Array to base64-encoded PCM16 database64EncodeAudio(float32Array) {const arrayBuffer = floatTo16BitPCM(float32Array);let binary = '';let bytes = new Uint8Array(arrayBuffer);const chunkSize = 0x8000; // 32KB chunk sizefor (let i = 0; i < bytes.length; i += chunkSize) {let chunk = bytes.subarray(i, i + chunkSize);binary += String.fromCharCode.apply(null, chunk);}return btoa(binary);}
// Using the "audio-decode" library to get raw audio bytesconst myAudio = fs.readFileSync('./path/to/audio.wav');const audioBuffer = await decodeAudio(myAudio);const channelData = audioBuffer.getChannelData(0); // only accepts monoconst base64AudioData = base64EncodeAudio(channelData);
const event = {type: 'conversation.item.create',item: {type: 'message',role: 'user',content: [{type: 'input_audio',audio: base64AudioData}]}};ws.send(JSON.stringify(event));ws.send(JSON.stringify({type: 'response.create'}));


更多示例可以阅览官方的说明文档。

https://platform.openai.com/docs/guides/realtime


TO B:Azure-Open AI


Azure-OPen AI- audio-real-time 接口已经上线,大家可以通过Azure 国际站申请测试使用,非常方便

https://learn.microsoft.com/zh-cn/azure/ai-services/openai/how-to/audio-real-time

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ