主导航

遗留 API

音频与语音

了解音频模态、流式传输、延迟和语音概念。

音频模型可以理解语音输入、生成语音输出,或在同一次交互中同时完成这两项任务。本指南解释了 OpenAI 音频文档中使用的词汇。当您准备好选择实现路径时,请从实时与音频概览开始。

音频模态

音频应用结合了以下一种或多种模态

模态含义常见使用场景
音频输入模型接收来自用户或应用的音频。语音智能体、转录、翻译。
音频输出模型或 API 返回语音音频。语音智能体、文本转语音、语音回复。
文本转录语音转换为文本。字幕、通话分析、搜索、记录。
文本提示词文本控制模型的说话内容或行为。语音生成、脚本化语音流、提示词。

常用语音任务

语音转文本将语音转换为文本。可用于字幕、笔记、转录、分析、搜索和辅助功能。转录可以是针对文件的基于请求的转录,也可以是针对实时音频的流式转录。

文本转语音将文本转换为语音音频。可用于旁白、助手、辅助功能和生成的语音回复。语音生成可以在模型产生音频时以流式方式传回音频。

语音转语音允许模型在单个低延迟会话中进行倾听、推理和说话。当助手需要做出回应、调用工具或维护会话状态时,可将其用于对话式语音智能体。

语音翻译倾听一种语言的语音,并返回另一种语言的翻译语音或转录输出。当翻译需要随着音频到达而持续开始时,请使用专用的实时翻译会话。

流式传输与延迟

流式传输意味着客户端和服务在交互仍在进行时交换部分输入或输出。当用户期望即时反馈(如实时字幕、通话、语音智能体和翻译)时,流式传输非常有用。

较低的延迟需要实时连接、更精细的音频处理以及能够发出部分事件的会话模型。基于请求的 API 对于文件上传和非交互式工作更简单,但它们不支持同样的实时交互模式。

基于请求的 API 与实时会话

OpenAI 支持两种广泛的音频架构

架构使用场景示例
基于请求的音频 API您有一个文件、一个文本输入或一个有界请求。语音转文本文本转语音
实时会话音频是实时的,且应用需要低延迟事件。语音智能体翻译转录
多模态聊天完成 (Chat Completions)您正在使用音频扩展现有的聊天流。音频输入或输出.

有关构建路径的指南,请参阅实时与音频概览

将音频添加到现有应用

诸如 gpt-realtime-2gpt-audio-1.5 之类的模型是原生多模态的,这意味着它们可以理解并生成音频和文本作为输入和输出。

对于浏览器端的实时语音转语音交互,请从 JavaScript SDK 中的实时会话开始

启动实时语音会话
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import { RealtimeAgent, RealtimeSession } from "@openai/agents/realtime";

const agent = new RealtimeAgent({
  name: "Assistant",
  instructions: "You are a helpful voice assistant.",
});

const session = new RealtimeSession(agent, {
  model: "gpt-realtime-2",
});

await session.connect({
  apiKey: "ek_...(ephemeral key from your server)",
});

此示例使用 JavaScript,因为浏览器语音智能体通过客户端的 WebRTC 进行连接。对于 Python 语音工作流,请使用语音智能体指南,其中涵盖了链式语音流水线。

如果您已经有一个基于 Chat Completions 端点 的文本大语言模型应用,您可能想要添加音频功能。例如,如果您的聊天应用支持文本输入,您可以添加音频输入和输出:在 modalities 数组中包含 audio,并使用音频模型,例如 gpt-audio-1.5

Responses API 文档目前描述的是带有文本输出的文本和图像输入。对于这种音频聊天模式,请使用具有音频能力的模型的 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
25
26
27
28
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-audio-1.5",
  modalities: ["text", "audio"],
  audio: { voice: "alloy", format: "wav" },
  messages: [
    {
      role: "user",
      content: "Is a golden retriever a good family dog?"
    }
  ],
  store: true,
});

// 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" }
);
© . This website operates independently and is not affiliated with or endorsed by OpenAI, Inc. All brand names, logos, and trademarks are the property of their respective owners.