音频生成

了解如何从文本或音频提示生成音频。

除了生成文本图像之外,某些模型还允许您生成对提示的语音音频响应,并使用音频输入来提示模型。音频输入可以包含比单独文本更丰富的数据,从而允许模型检测输入中的语气、变化和其他细微差别。

您可以使用这些音频功能来:

  • 生成文本正文的语音音频摘要(文本输入、音频输出)
  • 对录音执行情绪分析(音频输入、文本输出)
  • 与模型进行异步语音到语音交互(音频输入、音频输出)

OpenAI 为简单语音转文本文本转语音提供了其他模型 - 当您的任务需要这些转换(而不是模型中的动态内容)时,TTS 和 STT 模型将提高性能和成本效益。

快速入门

要生成音频或使用音频作为输入,您可以在 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.idassistant/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 中的其他模型相同 - 了解更多

后续步骤

现在,您已经知道如何生成音频输出和发送音频输入,您可能希望掌握一些其他技术。

文字转语音

使用专用模型将文本转换为语音。

语音到文本

使用专用模型将带有语音的音频文件转换为文本。

实时 API

了解如何使用 Realtime API 通过 WebSocket 提示模型。

完整的 API 参考

在 API 参考中查看音频生成的所有选项。