跳至主要内容

如何使用 OpenAI 文本转语音(TTS)API

OpenAI 的 TTS API 是一个端点,允许用户与其将文本转换为自然语音的 TTS 人工智能模型交互。
· 12分钟 阅读

使用 AI 探索

想象一下,您花了数小时写好一篇内容。

您对最终成果很满意,于是将其发布给大众。

公开一段时间后,您发现自己错失了大量受众,因为许多人觉得没有时间坐下来认真阅读您的作品。

您考虑亲自为内容配音,但时间不允许。您也动过雇人配音的念头,但拿到的报价远超预算,寻找一位嗓音“合适”的人也要耗费不少精力。

按照 21 世纪的常规,您转向技术寻求解决方案。这时,您了解到了 OpenAI 的文本转语音(TTS)API。

在接下来的教程中,我们将介绍 OpenAI 的 TTS API,包括其主要特性、如何上手、个性化定制,以及真实世界的应用场景。

什么是 OpenAI 的 TTS API?

文本转语音(TTS)是一种辅助技术,用于将文本格式的自然语言转换为语音。具体而言,文本转语音系统会读取计算机(或任何其他数字设备)上的文字,并将其朗读出来。

OpenAI 的 TTS API 是一个端点,使用户能够与其将文本转换为自然语音的 TTS 人工智能模型交互。该模型有两个变体:

  • TTS-1:最新的 AI 模型,针对实时文本转语音用例进行了优化。
  • TTS-1-HD:最新的 AI 模型,针对音质进行了优化。

该端点内置六种声音,并且根据 OpenAI TTS 文档,可用于:

  • 为书面博客文章配音
  • 生成多种语言的语音音频
  • 通过流式传输提供实时音频输出

不过,需要注意的是,OpenAI 的使用政策要求用户向终端用户清晰披露其所听到的 TTS 声音是由 AI 生成,而非人声。

开始使用 TTS API

下面看看如何开始使用 OpenAI 文本转语音 API,包括前置条件和需要遵循的步骤:

前置条件

  • 一个已充值的 OpenAI 账户——请参见下文“了解 API 限额与定价”。 
  • Python 3.7+
  • IDE

步骤 1:生成 API 密钥

登录您的 OpenAI 账户后,您会进入首页。从这里,点击页面左上角的 OpenAI 标志以展开侧边栏。

选择“API Keys”。

Creating an OpenAI API Key

选择“Create new secret key”并为您的 API 密钥命名——我们将其命名为“tts-example”。

创建 API 密钥时,会生成一个密钥。请务必将其保存在安全的位置。

现在您已经拿到密钥,可以开始了!

步骤 2:创建虚拟环境

虚拟环境用于为特定项目创建一个容器或隔离环境,以安装与 Python 相关的依赖项。这样可以针对不同项目使用不同版本的 Python 及其包。

更深入地介绍虚拟环境超出了本文范围。请参阅Python 中的虚拟环境教程了解如何创建。

步骤 3:编写代码

语音端点有三个关键输入:

在 OpenAI 的文本转语音文档中提供了示例请求,因此我们无需重复造轮子。

示例请求如下:

from pathlib import Path
from openai import OpenAI

client = OpenAI()

speech_file_path = Path(__file__).parent / "speech.mp3"
response = client.audio.speech.create(
  model="tts-1",
  voice="alloy",
  input="Today is a wonderful day to build something people love!"
)

response.stream_to_file(speech_file_path)

按目前的写法,这段代码无法运行。

原因在于我们还没有把第 1 步生成的 API 密钥传给 OpenAI 客户端……

步骤 4:传入 API 密钥

最简单的办法是在 OpenAI() 对象中添加一个 api_key 参数,将密钥传入。

例如:

client = OpenAI(api_key="secret key goes here") 

不过,在 Python 中这样做并不是最佳实践。

我们将改用 dotenv,从 .env 文件中读取密钥。

步骤 4.1:安装 dotenv

首先,您需要在虚拟环境中安装 dotenv。在虚拟环境中运行以下命令:

pip install python-dotenv

步骤 4.2:读取环境变量

安装好 dotenv 后,我们可以创建一个包含键值对的 .env 文件,并将这些值设置为环境变量。

这样,即便代码公开分享,我们也能隐藏密钥。

首先创建一个 .env 文件,并写入以下内容:

SECRET_KEY = "insert your secret key token here" 

现在,我们可以在 main.py 文件中通过 dotenv 读取环境变量。

代码如下所示。

import os
from pathlib import Path
from openai import OpenAI
from dotenv import load_dotenv

load_dotenv() 
SECRET_KEY = os.getenv("SECRET_KEY")

client = OpenAI(api_key=SECRET_KEY)

speech_file_path = Path(__file__).parent / "speech.mp3"
response = client.audio.speech.create(
  model="tts-1",
  voice="alloy",
  input="Today is a wonderful day to build something people love!"
)

response.stream_to_file(speech_file_path)

现在代码可以运行了。

代码的默认行为是输出一份朗读音频的 MP3 文件。如果您希望其他文件格式,可以将输出配置为任意受支持的格式。

自定义声音与输出

世界上有形形色色的声音和口音。

虽然很难一一涵盖,但 OpenAI 的 TTS 试图通过在 API 中集成六种独特的内置声音,来反映我们所处世界的多样性:

  • Alloy
  • Echo
  • Fable
  • Onyx
  • Nova
  • Shimmer

这些声音可传达不同的个性,您也可以按个人偏好选择。只需在客户端对象中通过 voice 参数设置您希望使用的 voice 即可。

response = client.audio.speech.create(
  model="tts-1",
  voice="alloy", # Update this to change voice
  input="Today is a wonderful day to build something people love!"
)

查看 OpenAI 的文本转语音 API 文档,了解可用的声音。

您也可以更改输出格式。

API 的默认响应是将文本转换为 MP3 文件。不过,OpenAI 还提供了多种其他格式,以满足您的需求与偏好,例如:

  • 高级音频编码(AAC)。AAC 广泛用于数字音频压缩,以压缩效率著称。因此,它是 YouTube、Android 和 iOS 等软件与应用的首选格式。如果需要在质量与文件大小之间取得平衡,或预计用户会在多种设备上收听,AAC 是一个不错的选择。
  • 自由无损音频编码(FLAC)。谈到无损音频压缩,FLAC 是首选——这意味着它可以在不损失质量的情况下减小文件体积。音频发烧友通常偏爱 FLAC,它非常适合归档,或在带宽足以承载更大文件时使用。
  • Opus。如果您希望在不同比特率下兼具低延迟与良好压缩,适用于互联网流媒体与通信,可选择 Opus 格式。
  • MP3。即便不是技术达人也知道 MP3。它是兼容性最强、支持最广的音频文件格式,几乎适用于所有设备与软件。作为默认格式,它非常适合通用场景。

要点提示:您选择的输出格式会影响音频质量、文件大小,以及与不同设备和应用的兼容性。

在语言支持方面,文本转语音模型沿用了用于语音转文本的 Whisper 模型;这些声音针对英语进行了优化,但也支持多种其他语言。

OpenAI 文本转语音 API 的真实用例

现在我们已经了解了如何设置 TTS API,接下来看看一些可实践的用法示例。

为书面博客文章或书籍配音

假设您写了一本书或一篇博客,希望通过转换成音频扩大受众。如果采用传统方式,您需要寻找配音员(或自己配音),这可能是个漫长的过程。

使用 OpenAI TTS API 可以显著缩短流程;您只需将文本文档传给 API,它就会将其转换为语音。

用多种语言生成语音音频

语言教师无需再教授大班课程,而是可以使用 OpenAI 的文本转语音 API,为学生用不同语言与方言制作个性化课程。尽管这些声音针对英语进行了优化,但该 API 仍可用于生成多种语言的音频内容。

通过流式传输实现实时音频输出

OpenAI TTS API 可用于创建比传统 TTS 系统更逼真、更富表现力的 AI 声音。电子游戏开发者可以利用此能力,将其应用于角色之上,使玩家体验更具沉浸感。

另一个用例是打造更具吸引力的虚拟助手和聊天机器人。

了解 API 限额与定价

对于付费账户,OpenAI TTS API 的速率限制从每分钟 50 次请求(RPM)起步,最大输入长度为 4096 个字符——在默认语速下约相当于 5 分钟音频。

关于 TTS 模型,定价如下:

  • 标准 TTS 模型:每 1,000 个字符 0.015 美元。
  • TTS HD 模型:每 1,000 个字符 0.030 美元。

如果您想以较低成本将 TTS API 集成到小型项目中,标准 TTS 模型可能更合适。TTS HD 模型价格略高,但提供高清音频;当音质至关重要时,这是理想选择——了解更多OpenAI 音频模型的定价。

总结

OpenAI 的文本转语音 API 是一个将文本生成高质量语音音频的端点。它内置六种声音,用户可根据用例在 TTS-1 与 TTS-1-HD 两个模型中选择;TTS-1 针对实时文本转语音优化,TTS-1-HD 则针对音质优化。

在本文中,我们介绍了:

  • 什么是 OpenAI 的 TTS API?
  • 如何使用
  • 如何自定义声音与输出
  • 真实世界的应用场景
  • API 限额与定价

继续学习的精选资源:

Kurtis Pykes

作者

Kurtis Pykes

主题