音频生成
除了生成文本和图像之外,某些模型还允许您生成对提示的语音音频响应,并使用音频输入来提示模型。音频输入可以包含比单独文本更丰富的数据,从而允许模型检测输入中的语气、变化和其他细微差别。
您可以使用这些音频功能来:
- 生成文本正文的语音音频摘要(文本输入、音频输出)
- 对录音执行情绪分析(音频输入、文本输出)
- 与模型进行异步语音到语音交互(音频输入、音频输出)
快速入门
要生成音频或使用音频作为输入,您可以在 REST API 中使用聊天完成端点,如以下示例所示。您可以从您选择的 HTTP 客户端使用 REST API,也可以使用 OpenAI 的官方 SDK 之一作为您的首选编程语言。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { writeFileSync } from "node:fs";
import OpenAI from "openai";
const openai = new OpenAI();
// Generate an audio response to the given prompt
const response = await openai.chat.completions.create({
model: "gpt-4o-audio-preview",
modalities: ["text", "audio"],
audio: { voice: "alloy", format: "wav" },
messages: [
{
role: "user",
content: "Is a golden retriever a good family dog?"
}
]
});
// Inspect returned data
console.log(response.choices[0]);
// Write audio data to a file
writeFileSync(
"dog.wav",
Buffer.from(response.choices[0].message.audio.data, 'base64'),
{ encoding: "utf-8" }
);
多轮次对话
使用模型的音频输出作为多轮次对话的输入需要生成的 ID,该 ID 显示在音频生成的响应数据中。以下是您可能从 中接收的消息的示例 JSON 数据结构:/chat/completions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"index": 0,
"message": {
"role": "assistant",
"content": null,
"refusal": null,
"audio": {
"id": "audio_abc123",
"expires_at": 1729018505,
"data": "<bytes omitted>",
"transcript": "Yes, golden retrievers are known to be ..."
}
},
"finish_reason": "stop"
}
的值 above 提供了一个标识符,您可以在新请求的消息中使用,如以下示例所示。message.audio.id
assistant
/chat/completions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
curl "https://api.openai.com/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4o-audio-preview",
"modalities": ["text", "audio"],
"audio": { "voice": "alloy", "format": "wav" },
"messages": [
{
"role": "user",
"content": "Is a golden retriever a good family dog?"
},
{
"role": "assistant",
"audio": {
"id": "audio_abc123"
}
},
{
"role": "user",
"content": "Why do you say they are loyal?"
}
]
}'
常见问题
gpt-4o-audio-preview 支持哪些模态
gpt-4o-audio-preview
此时需要使用 Audio Output 或 Audio Input。可接受的输入和输出组合为:
- 文本输入→文本 + 音频输出
- 音频输入 → 文本 + 音频输出
- 音频输入→文本输出
- 文本 + 音频输入 → 文本 + 音频输出
- 文本 + 音频输入→文本输出
Chat Completions 中的音频与 Realtime API 有何不同?
底层的 GPT-4o 音频模型完全相同。Realtime API 以较低的延迟运行相同的模型。
我如何根据令牌来考虑模型的音频输入?
我们正在开发更好的工具来揭示这一点,但大约 1 小时的音频输入等于 128k 个令牌,这是此模型目前支持的最大上下文窗口。
如何控制我接收的输出模态?
目前,该模型仅以编程方式允许模态 = 。将来,此参数将提供更多控件。[“text”, “audio”]
工具/函数调用的工作原理是什么?
工具(和函数)调用的工作方式与 Chat Completions 中的其他模型相同 - 了解更多。
后续步骤
现在,您已经知道如何生成音频输出和发送音频输入,您可能希望掌握一些其他技术。
使用专用模型将文本转换为语音。
使用专用模型将带有语音的音频文件转换为文本。
了解如何使用 Realtime API 通过 WebSocket 提示模型。
在 API 参考中查看音频生成的所有选项。