使用OpenAI文本转语音(Text to Speech)详解
使用OpenAI文本转语音(Text to Speech)详解
学习如何将文本转换为逼真的语音音频。
音频API提供了一个基于GPT-4o mini TTS(文本到语音)模型的speech端点。它内置了11种声音,可用于:
- 为书面博客文章配音
- 生成多种语言的语音音频
- 使用流式传输提供实时音频输出
以下是"alloy"声音的示例效果:
根据我们的使用政策,您需要向最终用户明确披露他们听到的TTS语音是AI生成的,而非人类声音。
快速入门
speech端点需要三个关键输入:
在开始使用之前,您可以通过API中转站网站了解更多相关配置和使用技巧。
下面是一个简单的请求示例:
从输入文本生成语音音频
import fs from "fs";
import path from "path";
import OpenAI from "openai";
const openai = new OpenAI({
baseURL: "https://api.aaaaapi.com/v1"
});
const speechFile = path.resolve("./speech.mp3");
const mp3 = await openai.audio.speech.create({
model: "gpt-4o-mini-tts",
voice: "coral",
input: "今天是个很棒的日子,可以去创造一些人们喜爱的东西!",
instructions: "用愉快和积极的语气说话。",
});
const buffer = Buffer.from(await mp3.arrayBuffer());
await fs.promises.writeFile(speechFile, buffer);
from pathlib import Path
from openai import OpenAI
client = OpenAI(
base_url="https://api.aaaaapi.com/v1"
)
speech_file_path = Path(__file__).parent / "speech.mp3"
with client.audio.speech.with_streaming_response.create(
model="gpt-4o-mini-tts",
voice="coral",
input="今天是个很棒的日子,可以去创造一些人们喜爱的东西!",
instructions="用愉快和积极的语气说话。",
) as response:
response.stream_to_file(speech_file_path)
curl https://api.aaaaapi.com/v1/audio/speech \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini-tts",
"input": "今天是个很棒的日子,可以去创造一些人们喜爱的东西!",
"voice": "coral",
"instructions": "用愉快和积极的语气说话。"
}' \
--output speech.mp3
默认情况下,该端点输出语音音频的MP3格式,但您可以将其配置为输出任何支持的格式。
文本转语音模型
对于智能实时应用,使用gpt-4o-mini-tts模型,这是我们最新、最可靠的文本转语音模型。您可以通过提示来控制语音的各个方面,包括:
- 口音
- 情感范围
- 语调
- 印象
- 语速
- 语气
- 低语
我们的其他文本转语音模型是tts-1和tts-1-hd。tts-1模型提供较低的延迟,但质量低于tts-1-hd模型。
声音选项
TTS端点提供11种内置声音,用于控制文本到语音的渲染方式。您可以在OpenAI.fm(我们的交互式演示,用于尝试OpenAI API中最新的文本转语音模型)中聆听和试用这些声音。目前这些声音针对英语进行了优化。
alloyashballadcoralechofablenovaonyxsageshimmer
如果您使用实时API,请注意可用的声音集略有不同——请参阅实时对话指南了解当前的实时声音。
流式实时音频
语音API支持使用分块传输编码进行实时音频流式传输。这意味着可以在生成完整文件并可访问之前播放音频。
将输入文本的语音音频直接流式传输到扬声器
import OpenAI from "openai";
import { playAudio } from "openai/helpers/audio";
const openai = new OpenAI({
baseURL: "https://api.aaaaapi.com/v1"
});
const response = await openai.audio.speech.create({
model: "gpt-4o-mini-tts",
voice: "coral",
input: "今天是个很棒的日子,可以去创造一些人们喜爱的东西!",
instructions: "用愉快和积极的语气说话。",
response_format: "wav",
});
await playAudio(response);
import asyncio
from openai import AsyncOpenAI
from openai.helpers import LocalAudioPlayer
openai = AsyncOpenAI(
base_url="https://api.aaaaapi.com/v1"
)
async def main() -> None:
async with openai.audio.speech.with_streaming_response.create(
model="gpt-4o-mini-tts",
voice="coral",
input="今天是个很棒的日子,可以去创造一些人们喜爱的东西!",
instructions="用愉快和积极的语气说话。",
response_format="pcm",
) as response:
await LocalAudioPlayer().play(response)
if __name__ == "__main__":
asyncio.run(main())
curl https://api.aaaaapi.com/v1/audio/speech \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini-tts",
"input": "今天是个很棒的日子,可以去创造一些人们喜爱的东西!",
"voice": "coral",
"instructions": "用愉快和积极的语气说话。",
"response_format": "wav"
}' | ffplay -i -
为了获得最快的响应时间,我们建议使用wav或pcm作为响应格式。
支持的输出格式
默认响应格式是mp3,但也支持其他格式,如opus和wav。
- MP3:适用于一般用例的默认响应格式。
- Opus:用于互联网流式传输和通信,延迟低。
- AAC:用于数字音频压缩,被YouTube、Android、iOS优先采用。
- FLAC:用于无损音频压缩,受到音频爱好者的青睐,适合存档。
- WAV:未压缩的WAV音频,适用于低延迟应用,可避免解码开销。
- PCM:与WAV类似,但包含24kHz(16位有符号,小端)的原始样本,没有头部。
支持的语言
TTS模型在语言支持方面通常遵循Whisper模型。Whisper支持以下语言,并且表现良好,尽管声音是针对英语优化的:
Afrikaans、阿拉伯语、亚美尼亚语、阿塞拜疆语、白俄罗斯语、波斯尼亚语、保加利亚语、加泰罗尼亚语、中文、克罗地亚语、捷克语、丹麦语、荷兰语、英语、爱沙尼亚语、芬兰语、法语、加利西亚语、德语、希腊语、希伯来语、印地语、匈牙利语、冰岛语、印度尼西亚语、意大利语、日语、卡纳达语、哈萨克语、韩语、拉脱维亚语、立陶宛语、马其顿语、马来语、马拉地语、毛利语、尼泊尔语、挪威语、波斯语、波兰语、葡萄牙语、罗马尼亚语、俄语、塞尔维亚语、斯洛伐克语、斯洛文尼亚语、西班牙语、斯瓦希里语、瑞典语、他加禄语、泰米尔语、泰语、土耳其语、乌克兰语、乌尔都语、越南语和威尔士语。
您可以通过提供所选语言的输入文本,生成这些语言的语音音频。
定制化和所有权
自定义声音
我们不支持自定义声音或创建您自己声音的副本。
谁拥有输出?
与我们API的所有输出一样,创建它们的人拥有输出。您仍然需要告知最终用户,他们听到的是AI生成的音频,而不是真人在与他们交谈。

浙公网安备 33010602011771号