OpenAI 于 2024 年 10 月 1 日宣布 Realtime API 的公测版本,使得开发者能够构建低延迟的多模态体验。这个 API 支持使用六种预设语音进行自然的语音对话,类似于 ChatGPT 的高级语音模式。
此外,Chat Completions API 也增加了音频输入和输出功能,支持文本或音频输入,并可以以文本、音频或两者的形式响应。
Realtime API 通过 WebSocket 连接直接流式传输音频输入和输出,减少了对多个模型的依赖,并能够自动处理中断。OpenAI 还强调了安全和隐私,采用了多层次的安全保护措施,并且在推出前进行了外部红队测试。
Realtime API 的定价包括文本和音频令牌的费用,音频输入和输出分别为100和200 每百万令牌。开发者可以通过 Playground、文档和参考客户端开始构建应用。
未来,OpenAI 计划增加更多的模态支持,提高速率限制,提供官方 SDK 支持,引入提示缓存,并扩展模型支持。
示例代码
import fs from 'fs'; import decodeAudio from 'audio-decode'; // Converts Float32Array of audio data to PCM16 ArrayBuffer function 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 data base64EncodeAudio(float32Array) { const arrayBuffer = floatTo16BitPCM(float32Array); let binary = ''; let bytes = new Uint8Array(arrayBuffer); const chunkSize = 0x8000; // 32KB chunk size for (let i = 0; i < bytes.length; i += chunkSize) { let chunk = bytes.subarray(i, i + chunkSize); binary += String.fromCharCode.apply(null, chunk); } return btoa(binary); } // Fills the audio buffer with the contents of three files, // then asks the model to generate a response. const files = [ './path/to/sample1.wav', './path/to/sample2.wav', './path/to/sample3.wav' ]; for (const filename of files) { const audioFile = fs.readFileSync(filename); const audioBuffer = await decodeAudio(audioFile); const channelData = audioBuffer.getChannelData(0); const base64Chunk = base64EncodeAudio(channelData); ws.send(JSON.stringify({ type: 'input_audio_buffer.append', audio: base64Chunk })); }); ws.send(JSON.stringify({type: 'input_audio_buffer.commit'})); ws.send(JSON.stringify({type: 'response.create'}));参考api文档:https://platform.openai.com/docs/guides/realtime/overview?text-generation-quickstart-example=stream
参考:https://openai.com/index/introducing-the-realtime-api/
网友回复
DLNA与UPnP的区别和不同?
苏超自建抢票app,通过先预约再抽签化解高并发抢票?
python如何让给电脑在局域网中伪装成电视接收手机的投屏图片视频播放?
如何结合python+js如何自己的视频编码与加密播放直播?
python如何在电脑上通过局域网将本地视频或m3u8视频投屏电视播放?
腾讯视频爱奇艺优酷vip电影电视剧视频如何通过python绕过vip收费直接观看?
有没有可免费观看全球电视台直播m3u8地址url的合集?
有没有实现观影自由的免vip影视苹果 CMS V10 API的可用url?
python如何实时检测电脑usb插入检测报警?
如何判断真人操作的鼠标移动直线轨迹与机器操作的轨迹?