
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/
网友回复
如何将linux服务器的文件目录映射到windows电脑磁盘?
Docling 与 MarkItDown 两个库有啥不同?
豆包收费后国产其他ai软件也会跟进收费吗?
JPEG 与 HEIF图片格式区别?
centos7版本太旧无法安装python3.11,如何在docker中运行python3.11?
python如何做个RPA按键精灵的程序?
写一个windows的cmd的python代码如何在命令行中捕获获取复制粘贴的图片?
如何将别人爆款的抖音短视频短剧文案提取为seedance2的提示词?
阿里云域名dns云解析10万次日限额如何应对?
windows电脑如何提交上架ipa苹果应用?


