文本到语音(TTS)是一种辅助技术,用于将以文本格式提供的自然语言转换为语音。具体来说,文本到语音系统会取用计算机(或其他数字设备)上写的文字,并将文本大声朗读出来。
OpenAI 的 TTS API 是一个端点,使用户能够与其文本到自然听起来的口语的 TTS AI 模型进行交互。该模型有两种变体:
TTS-1:最新的 AI 模型,为实时文本到语音使用案例优化。?
TTS-1-HD:最新的 AI 模型,为质量优化。?
该端点预置了六种声音,并且根据 OpenAI TTS 文档,可用于:
·朗读书面博客文章?
·以多种语言制作口语音频?
·使用流媒体进行实时音频输出?
然而,需要注意的是,OpenAI 的使用政策要求用户向最终用户明确披露他们听到的 TTS 声音是由 AI 生成的,而不是人类的声音。
一个有额度的OpenAI 账户
Python 3.7+?
集成开发环境(IDE)
登录您的 OpenAI 账户后,您将被引导到主屏幕。从这里,导航到页面左上角的 OpenAI 徽标以切换侧边栏。
选择“API 密钥”。
选择“创建新的密钥”并为您的 API 密钥命名 - 我们将我们的命名为“tts-example”。
创建 API 密钥时,将生成一个密钥。确保将密钥保存在安全的地方。
现在您已经拥有了密钥,就可以开始了!
虚拟环境用于创建一个容器或隔离环境,在这里为特定项目安装与 Python 相关的依赖项。可以使用 Python 的多个不同版本及其各种包。
更深入了解虚拟环境超出了本文的范围。查看 Python 中的虚拟环境教程,以了解更多关于创建虚拟环境的信息。
相关链接:https://www.datacamp.com/tutorial/virtual-environment-in-python
语音端点接受三个关键输入:
模型名称
应转换为音频的文本
用于音频生成的声音。?
在 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)
目前情况下,代码不会运行。
之所以不运行,是因为我们还没有将在第一步中生成的 API 密钥传递给我们的 OpenAI 客户端...
解决这个问题的最简单方法是添加一个 api_key 参数,我们可以通过这个参数将我们的密钥传递给 OpenAI() 对象。
例如:
client = OpenAI(api_key="secret key goes here")
在 Python 中这样做是不好的做法。
相反,我们将使用 dotenv 从 .env 文件中读取密钥。
您首先需要做的是在您的虚拟环境中安装 dotenv。在您的虚拟环境中运行以下命令:
pip install python-dotenv
现在 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 参数来设置您希望使用的声音。
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 TTS API 的速率限制从付费账户的每分钟 50 次请求(RPM)开始,最大输入大小为 4096 个字符 - 相当于默认速度下约 5 分钟的音频。
关于 TTS 模型的定价如下:
标准 TTS 模型:每 1000 个字符 0.015 美元。
TTS HD 模型:每 1000 个字符 0.030 美元。
如果您正在寻找一种成本效益高的方式将 TTS API 集成到小型项目中,您可能更适合选择标准 TTS 模型。TTS HD 模型稍微贵一些,但提供高清音频,当您的音频质量至关重要时,这是理想的选择 - 了解更多关于 OpenAI 音频模型定价的信息。
相关链接:https://openai.com/pricing
https://openai.com/product