
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/
网友回复
如何破解绕开seedance2.0真人照片生成视频 限制?
python有哪些算法可以将视频中的每个帧图片去除指定区域水印合成新的视频?
iphone的激光雷达数据能否实时传输到three三维空间中?
豆包sora等ai视频生成大模型生成的视频水印如何去除?
python如何实现在电脑上拨号打电话给手机?
具身机器人与人形机器人区别?
nodejs如何将一个完整的js代码文件切割成不同的部分混淆后动态加载进入html运行?
为啥windows.onerror捕获js错误是这样的{"message":"Script error.","source":"","lineno":0,"colno":0,"stack":null,
2026年ai将全面接管编程?
WebMCP是干啥的?


