OpenAI音频与语音API全解析:从功能到实战指南 原创 精华

发布于 2025-7-28 18:51
浏览
0收藏

OpenAI音频与语音API全解析:从功能到实战指南

在人工智能快速发展的今天,音频与语音交互已成为许多应用的核心能力。OpenAI API提供了丰富的音频处理功能,无论是构建语音代理、实现语音转文字还是文字转语音,都能找到对应的解决方案。本文将详细介绍OpenAI音频API的核心功能、使用场景及实战代码,帮助开发者快速上手。

音频功能概览

OpenAI API的音频能力覆盖了从音频输入处理到音频输出生成的全流程,主要包含三大核心方向:

  • 构建语音代理:打造交互式语音驱动应用,实现自然的语音对话交互
  • 语音转文字:实时、准确地将语音内容转换为文本
  • 文字转语音:将文本实时转换为自然流畅的语音

音频使用场景详解

大语言模型(LLMs)可以通过处理音频输入、生成音频输出或两者结合的方式来处理音频内容。OpenAI提供了多个API端点,助力开发者构建音频应用或语音代理。

语音代理

语音代理能够理解音频内容以处理任务,并以自然语言回应。构建语音代理主要有两种方式:一是使用语音到语音模型和实时API(Realtime API);二是将语音转文字模型、文本语言模型(处理请求)和文字转语音模型串联起来。

语音到语音的方式延迟更低、更自然,而串联方式则是将文本型代理扩展为语音代理的可靠方案。如果已在使用Agents SDK,可通过串联方式为现有代理添加语音能力。

流式音频处理

通过实时API(Realtime API)可实现音频的实时处理,适用于构建语音代理和其他低延迟应用(包括转录场景)。先进的语音模型支持自动语音识别(提升准确性)、低延迟交互和多语言支持,可实现音频的实时流入流出。

文字转语音

若需将文本转换为语音,可使用音频API中的audio/speech端点。兼容的模型包括gpt-4o-mini-ttstts-1tts-1-hd。其中,gpt-4o-mini-tts支持指定语音风格或语气。

语音转文字

将语音转换为文本可使用音频API的audio/transcriptions端点,兼容模型有gpt-4o-transcribegpt-4o-mini-transcribewhisper-1。通过流式处理,可持续输入音频并获取连续的文本输出。

如何选择合适的API?

OpenAI提供了多个用于转录或生成音频的API,不同API的特性如下:

API 支持的模态 流式支持
实时API(Realtime API) 音频和文本输入输出 音频流入流出
聊天补全API(Chat Completions API) 音频和文本输入输出 音频流出
转录API(Transcription API) 音频输入 音频流出
语音API(Speech API) 文本输入和音频输出 音频流出

通用API vs 专用API

核心区别在于通用API和专用API:实时API和聊天补全API可利用最新模型的原生音频理解与生成能力,并结合函数调用等其他功能,适用于广泛场景,且可自主选择模型。

而转录API、翻译API和语音API则是专用的,仅适用于特定模型和单一用途。

模型对话 vs 脚本控制

选择API的另一角度是需求的控制程度:若需设计对话交互(模型通过语音思考并回应),根据是否需要低延迟,可选择实时API或聊天补全API。这种方式下,模型会直接生成音频回应,内容不可预知,但对话更自然。

若需要更高的可控性和可预测性,可采用“语音转文字→LLM→文字转语音”的模式,明确知道模型会说什么并控制回应内容(但会增加延迟)。这正是音频API的用途:将LLM与audio/transcriptionsaudio/speech端点结合,处理用户语音输入、生成文本回应,再转换为语音反馈给用户。

推荐方案

  • 若需要实时交互实时转录,使用实时API。
  • 若无需实时性,但需构建语音代理或需要函数调用等功能的音频应用,使用聊天补全API。
  • 对于单一用途的场景,使用转录API、翻译API或语音API。

在现有应用中集成音频功能

GPT-4o或GPT-4o mini等模型是原生多模态的,可理解和生成多种模态的输入输出。如果已有基于聊天补全端点的文本型LLM应用,可轻松添加音频功能——只需在modalities数组中包含audio,并使用音频模型(如gpt-4o-audio-preview)即可。

注意:响应API(Responses API)暂不支持音频。

模型生成音频回应

以下示例展示如何让模型针对提示生成类人音频回应(已调整API基础地址为稳定的中转服务地址):

import { writeFileSync } from "node:fs";
import OpenAI from "openai";

const openai = new OpenAI({
  baseURL: "https://api.aaaaapi.com" // 使用稳定的API中转服务
});

// 生成对指定提示的音频回应
const response = await openai.chat.completions.create({
  model: "gpt-4o-audio-preview",
  modalities: ["text", "audio"],
  audio: { voice: "alloy", format: "wav" },
  messages: [
    {
      role: "user",
      content: "金毛寻回犬适合作为家庭宠物吗?"
    }
  ],
  store: true,
});

// 查看返回数据
console.log(response.choices[0]);

// 将音频数据写入文件
writeFileSync(
  "dog.wav",
  Buffer.from(response.choices[0].message.audio.data, 'base64'),
  { encoding: "utf-8" }
);
import base64
from openai import OpenAI

client = OpenAI(
  base_url="https://api.aaaaapi.com"  # 使用稳定的API中转服务
)

completion = client.chat.completions.create(
    model="gpt-4o-audio-preview",
    modalities=["text", "audio"],
    audio={"voice": "alloy", "format": "wav"},
    messages=[
        {
            "role": "user",
            "content": "金毛寻回犬适合作为家庭宠物吗?"
        }
    ]
)

print(completion.choices[0])

wav_bytes = base64.b64decode(completion.choices[0].message.audio.data)
with open("dog.wav", "wb") as f:
    f.write(wav_bytes)
curl "https://api.aaaaapi.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": "金毛寻回犬适合作为家庭宠物吗?"
        }
      ]
    }'

模型接收音频输入

以下示例展示如何将音频作为输入提示模型(已调整API基础地址):

import OpenAI from "openai";
const openai = new OpenAI({
  baseURL: "https://api.aaaaapi.com" // 依托可靠的中转服务确保稳定性
});

// 获取音频文件并转换为base64字符串
const url = "https://cdn.openai.com/API/docs/audio/alloy.wav";
const audioResponse = await fetch(url);
const buffer = await audioResponse.arrayBuffer();
const base64str = Buffer.from(buffer).toString("base64");

const response = await openai.chat.completions.create({
  model: "gpt-4o-audio-preview",
  modalities: ["text", "audio"],
  audio: { voice: "alloy", format: "wav" },
  messages: [
    {
      role: "user",
      content: [
        { type: "text", text: "这段录音里是什么内容?" },
        { type: "input_audio", input_audio: { data: base64str, format: "wav" }}
      ]
    }
  ],
  store: true,
});

console.log(response.choices[0]);
import base64
import requests
from openai import OpenAI

client = OpenAI(
  base_url="https://api.aaaaapi.com"  # 选择稳定的API接入方式
)

# 获取音频文件并转换为base64编码字符串
url = "https://cdn.openai.com/API/docs/audio/alloy.wav"
response = requests.get(url)
response.raise_for_status()
wav_data = response.content
encoded_string = base64.b64encode(wav_data).decode('utf-8')

completion = client.chat.completions.create(
    model="gpt-4o-audio-preview",
    modalities=["text", "audio"],
    audio={"voice": "alloy", "format": "wav"},
    messages=[
        {
            "role": "user",
            "content": [
                { 
                    "type": "text",
                    "text": "这段录音里是什么内容?"
                },
                {
                    "type": "input_audio",
                    "input_audio": {
                        "data": encoded_string,
                        "format": "wav"
                    }
                }
            ]
        },
    ]
)

print(completion.choices[0].message)
curl "https://api.aaaaapi.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": [
            { "type": "text", "text": "这段录音里是什么内容?" },
            { 
              "type": "input_audio", 
              "input_audio": { 
                "data": "<base64编码的音频数据>", 
                "format": "wav" 
              }
            }
          ]
        }
      ]
    }'

总结

OpenAI的音频API为开发者提供了强大的语音交互能力,从语音代理到实时转录、文字语音互转,覆盖了多样化的应用场景。在实际开发中,选择合适的API(或结合使用)并依托稳定的接入方式(如通过https://link.ywhttp.com/foA8Wb 提供的中转服务),可快速构建流畅、自然的音频应用。无论是现有应用扩展还是全新项目开发,这些工具都能显著降低音频功能的实现门槛。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
回复
相关推荐