OpenAI音頻與語音API全解析:從功能到實戰指南 原創 精華
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-tts、tts-1和tts-1-hd。其中,gpt-4o-mini-tts支持指定語音風格或語氣。
語音轉文字
將語音轉換為文本可使用音頻API的audio/transcriptions端點,兼容模型有gpt-4o-transcribe、gpt-4o-mini-transcribe和whisper-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/transcriptions和audio/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 提供的中轉服務),可快速構建流暢、自然的音頻應用。無論是現有應用擴展還是全新項目開發,這些工具都能顯著降低音頻功能的實現門檻。

















