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/
网友回复
python如何调用openai的api实现知识讲解类动画讲解视频的合成?
html如何直接调用openai的api实现海报可视化设计及文本描述生成可编辑海报?
f12前端调试如何找出按钮点击事件触发的那段代码进行调试?
abcjs如何将曲谱播放后导出mid和wav格式音频下载?
python如何将曲子文本生成音乐mp3或wav、mid文件
python中mp3、wav音乐如何转成mid格式?
js在HTML中如何将曲谱生成音乐在线播放并下载本地?
python如何实现在windows上通过键盘来模拟鼠标操作?
python如何给win10电脑增加文件或文件夹右键自定义菜单?
python如何将音乐mp3文件解析获取曲调数据?