Google Cloud Text to Speech API:AI 语音合成的未来
您是否厌倦了学习冗长的文章或书籍,但需要分析或享受它们?谷歌为你提供了一个答案!Google 云文本转语音功能可将文本转换为听起来自然的语音。在 Google 云语音的帮助下,您可以收听自己喜欢的文章,书籍或网站内容材料,而不会给眼睛带来任何压力。在这篇博客中,让我们详细了解 Google Cloud 文字转语音及其 API。
什么是谷歌文字转语音?
Google 云文本转语音是一项基于云的文字转语音 (TTS) 服务,允许开发人员将听起来自然的语音集成到他们的项目中。它是谷歌云人工智能平台的一部分,该平台提供一系列机器掌握和人工智能产品。
借助 Google Cloud 文字转语音功能,开发者可以将书面文字转换为各种语言和语音的自然语音。该服务使用先进的深度学习技术来生成与人类语音无法区分的语音。
Google 云文本转语音提供了广泛的自定义选项,以及调节后续音频的速度、音高和音量的功能。它还提供多种语音替代方案,包括具有独特语言和口音的男性和女性声音。
该服务易于集成到应用程序中,API 可用于多种编程语言,包括 Java,Python 和 Node.js。它还提供与其他 Google Cloud 服务的集成,例如 Google Cloud Storage 和 Google Cloud Functions。
谷歌云语音如何工作?
我们刚刚看到了谷歌文本到语音转换是什么,但你可能想知道它是如何工作的。请允许我就这个问题作一些说明。谷歌文本到语音转换利用了一种先进的人工智能语音合成技术,称为 WaveNet,该技术由 DeepMind 开发。现在,你可能想知道 DeepMind 是否是一家开发 WaveNet 的独立公司。嗯,它曾经是,直到谷歌在 2014 年收购 DeepMind。
要了解 Google Cloud Text-to-Speech 的正确工作,我们必须首先了解 WaveNet 的运作方式。但在深入研究 WaveNet 本身之前,让我们先探讨一下它为什么被开发以及它旨在解决的问题。
为什么选择 WaveNet?
最早的虚拟助手之一,苹果的 Siri(2011 年 10 月发布),采用了文本到语音转换技术,但它依赖于一种称为串联合成的技术。在这种方法中,单个音素(区分单词的最小语音单元)被存储,然后组合成单词和句子。
让我们用一个例子来说明这一点。想象一下,你说,“嘿 Siri,早上好!”,在连接合成中,每个音素的语音形式将被存储,然后连接以构建完整的句子。输出将是这样的序列:
<voice "Hey"> + <voice "Siri"> + <voice ","> + <voice "good"> + <voice "morning"> + <voice "!">
WaveNet 是如何工作的?
虽然串联合成是开创性的,但它缺乏人类语言的自然流畅性。这就是 WaveNet 走上不同道路的地方。WaveNet 不是将预先录制的元素拼凑在一起,而是从头开始生成原始音频波形。
WaveNet 的骨干是它的神经网络,它已经使用大量的语音样本进行了广泛的训练。在整个训练过程中,网络提取语音的基本结构,包括音调的排序和真实语音波形的表示。
借助 WaveNet,Google 为 TTS 技术设定了新标准,让您比以往任何时候都更容易将自然语音集成到您的项目中。
谷歌云文字转语音的主要功能
Google 云文本转语音 (TTS) API 提供了广泛的功能,使我们能够为我们的应用程序创建丰富且听起来自然的语音。让我们深入了解主要功能,并探索 Google TTS 如何增强我们的语音合成体验:
- 自定义语音(测试版):使用自己的录音训练独特的个性化语音合成模型。
- 语音和语言选择:从 40 种语言的 220 多种语音中进行选择,以创建本地化且引人入胜的体验。
- Google WaveNet Voices:访问 90 多种 WaveNet 语音,为您的应用程序带来类似人类的性能和真实性。
- 文本和 SSML 支持:使用 SSML 标记自定义语音输出以进行精细控制,包括暂停、数字和发音说明。
- 音调:个性化声音的音调以匹配角色特征或有效地传达情感。
- 语速调整:将语速调整为快四倍或慢四倍,以与所需的上下文保持一致。
- 音量增益控制:放大或降低语音输出的音量,以便在各种播放环境中清晰易懂。
- 集成的 REST 和 gRPC API:使用 REST 或 gRPC 请求与应用程序或设备无缝集成。
- 音频格式灵活性:将文本转换为 MP3、线性 16、OGG Opus 和其他格式,以实现兼容性和轻松集成。
- 音频配置文件:针对特定播放场景优化语音输出,增强质量和用户体验。
谷歌云文本转语音 (TTS) 定价 现在,让我们谈谈大家最喜欢的话题:定价!我们知道成本在决策中起着至关重要的作用,因此让我们分解一下 Google Cloud 文本转语音 API 的定价结构。请记住,查看 Google Cloud TTS 的官方文档以获取最新的定价信息非常重要。
Google 文本转语音 API 服务的定价围绕您每月发送到该服务以合成为音频的字符数展开。它简单明了。
但是,在您开始使用该服务之前,Google Cloud Platform 会确保您启用结算功能。启用计费后,如果您的使用量超过每月允许的免费字符数,将自动向您收费。
因此,请密切关注您的使用情况以避免任何意外。Google Cloud 提供的工具可帮助您监控 API 使用情况并跟踪字符总数。
谷歌 TTS API 服务定价明细
现在,让我们根据不同的语音类型进入定价的细节:
语音类型 | 免费使用限制 | 超出免费限制后的价格 |
---|---|---|
神经 2 语音 | 0 到 100 万字节 | 每字节 0.000016 美元 |
演播室(预览版)语音 | 0 到 100K 字节 | 每字节 0.00016 美元 |
标准语音 | 0 到 400 万个字符 | 每个字符 0.000004 美元 |
波网语音 | 0 到 100 万个字符 | 每个字符 0.000016 美元 |
📝📝 注意:对于 WaveNet 和标准语音,字符数将等于或小于文本表示的字节数。这包括字母数字字符、标点符号和空格。某些字符集对一个字符使用多个字节。例如,UTF-8 中的日语 (ja-JP) 字符通常需要每个字符多个字节。在这种情况下,您只需为一个字符付费,而不是多个字节。
此外,如果您将其他 Google Cloud Platform 资源与文本转语音功能结合使用,例如 Google App Engine 实例,则还需要为使用这些服务付费。
要全面了解您的潜在成本,您可以使用 Google Cloud 平台定价计算器,该计算器会考虑各种服务的当前费率。
请记住始终查看官方定价文档,以获取最准确和最新的信息。了解定价结构有助于您有效地规划和管理预算,同时充分利用功能强大的 Google Cloud 文字转语音 API。因此,请继续,释放语音合成的魔力,而不会带来任何财务意外!
Google Cloud Text to Speech (TTS) API 的项目设置
现在我们已经对 Google Cloud 文本转语音 API 有了基本的了解,让我们深入了解项目设置过程。
为 Google Cloud 文字转语音 (TTS) API 设置项目的步骤:
- 登录谷歌云控制台。
- 选择或创建项目。
- 启用文本转语音 API。
- 确保为文本转语音启用计费。
- 确保您的项目至少有一个服务帐户。
- 下载服务帐户凭据密钥。
- 将服务帐户链接到文本转语音 API(可选,如果已链接)。
- 设置身份验证环境变量。 让我们按照以下步骤顺利启动和运行一切。
登录 Google Cloud Console
首先,请使用您的 Google 帐户凭据登录 Google Cloud Console。如果您没有帐户,可以免费创建一个。
步骤 2:选择或创建项目
登录后,导航到项目选择器页面。您可以选择现有项目或创建新项目。
如果您决定创建新项目,系统会提示您将结算帐号关联到该项目。如果您使用的是预先存在的项目,请确保已启用计费。
📝📝 注意:您必须启用计费才能使用文本转语音 API,但是,除非您超出免费配额,否则不会向您收费。有关更多详细信息,请参阅定价页面。
步骤 3:启用文本到语音转换 API
若要开始使用文本到语音转换 API,我们需要为项目启用它。
在云控制台中:
转到页面顶部的搜索产品和资源栏
搜索“语音”
从结果列表中选择云文本转语音 API。 此时,您有两种选择:
您可以通过选择“尝试此 API”选项来试用 API,而无需将其链接到您的项目,或者
您可以通过单击“启用”按钮为您的项目启用它。
步骤 4:将服务帐户链接到文本转语音 API
若要使用文本转语音 API,需要将一个或多个服务帐户链接到该 API。服务帐户提供必要的身份验证凭据。在文本转语音 API 页面的左侧,单击“凭据”链接。
如果您没有任何与项目关联的服务帐户,请按照提供的说明创建一个新帐户。
填写所需的详细信息,例如服务帐户名称和描述,然后单击“创建并继续”。我们建议将其中一个基本 IAM 角色分配给服务账户。
如果您已有服务帐户及其 JSON 密钥,则可以继续执行步骤 6:设置身份验证环境变量。
步骤 5:为服务帐号创建 JSON 密钥
向文本转语音 API 发出请求时,需要与服务帐户关联的 JSON 密钥进行身份验证。
要为服务帐号创建 JSON 密钥,请执行以下操作:
单击要使用的服务帐户, 选择“密钥”选项卡。 单击“添加密钥”按钮。 选择“创建新密钥”。 建议选择密钥的 JSON 格式。
创建密钥后,将自动下载该密钥。请确保将 JSON 文件存储在安全的位置,并记下文件路径。您需要通过在身份验证过程中设置 GOOGLE_APPLICATION_CREDENTIALS
环境变量来引用此文件。
设置身份验证环境变量
若要对应用程序代码进行身份验证,需要设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量。此变量指定服务帐号的 JSON 密钥的路径。
在 Linux 或 macOS 上,您可以使用以下命令为当前 shell 会话设置变量:
export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"
例:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
注意:将“KEY_PATH”替换为 JSON 文件的实际路径。
在 Windows 上,该过程取决于您的 shell。对于 PowerShell,请使用以下命令:
$env:GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"
例:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
对于命令提示符,请使用:
set GOOGLE_APPLICATION_CREDENTIALS=KEY_PATH
例:
set GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
同样,请记住将“KEY_PATH”替换为 JSON 文件的实际路径。
就是这样!您现在已成功为 Google Cloud 文本转语音 API 设置项目。你已准备好探索语音合成的迷人世界,并利用此 API 的强大功能来增强您的应用程序。
禁用 GCP 文本转语音 API
如果需要禁用文本转语音 API,可以通过以下方式执行此操作:
- 导航到 Google Cloud Platform (GCP) 信息中心。
- 单击“API ”框中的“转到 API 概述”链接。
- 找到文本转语音 API。
- 选择页面顶部的“禁用 API”按钮。
现在我们已经有了基础,让我们更深入地了解这些功能,并探索如何充分利用 Google Cloud 文本转语音 API!
如何与 Google Cloud Text-to-Speech API 交互?
有几种方法可以与 Google Cloud 文本转语音 API 进行交互:
- REST API:您可以使用 HTTP 请求(POST 或 GET)与 API 通信。使用所需参数和身份验证凭据向特定终结点发送请求。
- 客户端库:Google 为 Python,Java,Node.js,Ruby,C#和 Go 等流行语言提供客户端库。这些库提供了方便的方法和对象来与 API 交互,处理低级细节,例如 HTTP 请求和身份验证。
- 命令行界面 (CLI):Google Cloud SDK 包含一个 CLI,可让您使用命令行工具执行 API 任务。您可以从命令行合成语音、管理语音以及执行其他 API 操作。
- 云客户端库:Google Cloud 提供云客户端库,提供多种编程语言版本。这些库通过处理身份验证、请求序列化和错误处理,提供了一种与多个服务(包括文本转语音 API)交互的一致方式。
每种方法都有其优点和缺点,因此请选择适合您的偏好和项目要求的方法。无论您喜欢 REST API 调用、客户端库、CLI 还是云客户端库,您都可以选择将 Google Cloud 文本转语音 API 无缝集成到您的应用程序中。
Google Cloud TTS API 中的对象类型
在深入研究端点之前,让我们看一下将在 Google Cloud 文本转语音 API 中使用的一些对象类型:
SynthesisInput
对象 SynthesisInput
指定语音合成的输入文本。它包含将合成为语音的文本输入。
请务必注意,必须提供 text
或 ssml
字段。同时提供两者或两者都不提供将导致 INVALID_ARGUMENT
错误。输入大小限制为 5000 字节,因此在处理较大的文本输入时请记住这一点。
合成输入 JSON 表示
让我们在 JSON 表示中探索 SynthesisInput
对象的结构:
{
"text": string,
"ssml": string
}
SynthesisInput
对象具有以下字段:
字段 | 类型 | 描述 |
---|---|---|
text | 字符串 | 要合成的 SSML 文档。SSML 文档必须有效且格式正确才能成功合成。 |
ssml | 字符串 | 要合成的 SSML 文档。SSML 文档必须有效且格式正确才能成功合成。 |
当您想要从纯文本合成语音时,将使用 text
字段。只需提供要转换为语音的原始文本。
当您想要利用语音合成标记语言 (SSML)
的强大功能时,将使用 ssml
字段。SSML 允许您添加各种语音功能,例如停顿、重音和音高变化,以增强合成语音的表现力。确保提供的 SSML 文档有效且格式正确,以避免任何 INVALID_ARGUMENT
错误。
使用 SynthesisInput
对象时,可以在纯文本或 SSML 之间进行选择以满足您的特定要求。
让我们看一个使用 text
字段的示例:
{
"text": "Hello, world! How are you today?"
}
下面是使用 ssml
字段的示例:
{
"ssml": "<speak>Hello, <emphasis level=\"strong\">world!</emphasis> How are <prosody rate=\"fast\">you</prosody> today?</speak>"
}
请记住, SynthesisInput
对象是 API 请求的关键部分,允许您为语音合成提供所需的文本或 SSML 输入。明智地使用此输入来创建引人入胜且逼真的合成语音,以满足应用程序的需求。
VoiceSelectionParams
VoiceSelectionParams
对象允许您指定要用于合成请求的语音。
它提供语言、姓名、性别首选项和自定义语音配置等详细信息。
{
"languageCode": string,
"name": string,
"ssmlGender": enum (SsmlVoiceGender),
"customVoice": {
object (CustomVoiceParams)
}
}
让我们分解 VoiceSelectionParams
对象的字段:
| 字段 | 类型 | 描述 | | -------------- | ------ | --------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | | languageCode
| 字符串 | 必填。以 BCP-47 语言标记表示的语音的语言(可能还有区域),例如 en-US 。 | 注意:TTS 服务可能会根据可用性选择语言代码或区域略有不同的语音。不应包含脚本标记。 | | name
| 字符串 | 语音的名称。如果未设置,服务将根据其他参数(如 languageCode 和性别)选择语音。 | | ssmlGender
| 枚举 | ( SsmlVoiceGender ) 声音的首选性别。如果未设置,服务将根据其他参数(如 languageCode 和名称)选择语音。 | | customVoice
| 对象 | ( CustomVoiceParams ) 自定义语音的配置。如果设置为 CustomVoiceParams.model ,服务将选择与指定配置匹配的自定义语音。 |
CustomVoiceParams
CustomVoiceParams
对象描述要合成的自定义语音的详细信息。
{
"model": string,
"reportedUsage": enum (ReportedUsage)
}
CustomVoiceParams
对象的字段如下所示:
字段 | 类型 | 描述 |
---|---|---|
model | 字符串 | 必填。将合成语音的 AutoML 模型的名称。 |
reportedUsage | 枚举 ( ReportedUsage ) | 自选。要报告的合成音频的使用情况。 |
ReportedUsage
ReportedUsage
枚举指定合成音频的使用类别。诚实准确地报告您的使用情况非常重要,因为它会影响计费和服务合同的遵守情况。
枚举 | 描述 |
---|---|
REPORTED_USAGE_UNSPECIFIED | 报告使用情况未指定的请求将被拒绝。 |
REALTIME | 用于合成音频不可下载且只能使用一次的场景。例如,IVR(交互式语音应答)系统中的实时请求。 |
OFFLINE | 用于合成音频可下载且可重复使用的方案。例如,合成的音频在客户服务系统中重复下载、存储和播放。 |
通过使用 VoiceSelectionParams
对象及其字段,您可以自定义语音合成请求的语音,确保生成的音频满足您的特定要求。
AudioConfig
此对象提供要合成的音频数据的描述。Google Cloud 文本转语音 API 中的 AudioConfig
对象允许您指定各种参数来控制将要合成的音频数据。
它提供了自定义语速、音高、音量增益、采样率和效果配置文件的选项。
{
"audioEncoding": enum (AudioEncoding),
"speakingRate": number,
"pitch": number,
"volumeGainDb": number,
"sampleRateHertz": integer,
"effectsProfileId": [
string
]
}
让我们详细探索每个字段。
1. audioEncoding
audioEncoding
字段是必填字段,用于确定音频字节流的格式。以下是 API 中支持的音频编码:
枚举 | 描述 |
---|---|
AUDIO_ENCODING_UNSPECIFIED 未指定。将返回结果 google.rpc.Code.INVALID_ARGUMENT 。 | |
LINEAR16 | 未压缩的 16 位有符号小端采样(线性 PCM)。作为 LINEAR16 返回的音频内容还包含一个 WAV 标头。 |
MP3 | MP3 音频速度为 32kbps。 |
OGG_OPUS | 包裹在 Ogg 容器中的 Opus 编码音频。在使用大致相同的比特率时,编码质量高于 MP3。 |
MULAW | 8 位样本,使用 G.711 PCMU/mu 律压缩 14 位音频样本。作为 MULAW 返回的音频内容还包含一个 WAV 标头。 |
ALAW | 8 位样本,使用 G.711 PCMU/A 定律压缩 14 位音频样本。作为 ALAW 返回的音频内容还包含一个 WAV 标头。 |
必须根据您的特定要求选择合适的音频编码,并考虑音频质量和兼容性等因素。
2. speakingRate
speakingRate
字段是可选的,允许您控制合成语音的语速或速度。值范围介于 0.25 和 4.0 之间,其中 1.0 表示所选语音支持的正常本机速度。
将该值设置为 2.0 会使速度加倍,而 0.5 会使速度减半。默认情况下,如果未设置或设置为 0.0,则默认为本机 1.0 速度。请注意,超出 0.25 到 4.0 范围的值将导致错误。
3. pitch
pitch
字段(也是可选的)可用于调整合成音频的语音音高。范围为 -20.0 到 20.0,其中 20 表示将音高从原始音增加 20 个半音,-20 表示将音高减少 20 个半音。此参数提供了根据所需效果修改音高的灵活性。
4. volumeGainDb
volumeGainDb
字段(同样是可选的)允许您控制合成语音的音量增益。它表示以分贝 (dB) 为单位的增益,范围为 -96.0 到 16.0。值 0.0 (dB) 以正常的本机信号幅度播放音频。
将其设置为 -6.0 (dB) 将以大约一半的振幅播放音频,而 +6.0 (dB) 以大约两倍的振幅播放音频。通常建议不要超过 +10.0 (dB),因为通常不会超过该点的响度有效增加。
5. sampleRateHertz
sampleRateHertz
字段是可选的,用于指定音频的合成采样率(以赫兹 (Hz) 为单位)。如果指定的采样率与语音的自然采样率不同,则合成器将通过将音频转换为所需的采样率来响应请求。
但是,此转换可能会导致音频质量降低。如果所选编码不支持指定的采样率,则请求将失败,返回 google.rpc.Code.INVALID_ARGUMENT 。
6. effectsProfileId
effectsProfileId
字段是可选的,允许您选择要应用于合成语音的音频效果配置文件。通过提供各自的标识符,可以相互应用多个效果配置文件。您可以参考音频配置文件文档来查找当前支持的配置文件 ID 并探索可用的效果。
请务必注意,并非所有效果配置文件都与每种声音或语言兼容。因此,应在应用特定配置文件之前验证兼容性。
SsmlVoiceGender
使用 SSML(语音合成标记语言)语音元素时, SsmlVoiceGender
参数在指定语音性别方面起着至关重要的作用。此参数允许您定制合成语音以匹配所需的性别表达。让我们探索一下 SsmlVoiceGender
枚举的可用选项:
枚举 | 描述 |
---|---|
SSML_VOICE_GENDER_UNSPECIFIED | 此值指示未指定语音的性别。在 VoiceSelectionParams 中使用时,表示客户端对所选语音的性别没有偏好。在 Voice 的 ListVoicesResponse 字段中,它可能表明声音不属于任何其他性别类别,或者声音的性别未知。 |
MALE | 此选项表示男性声音。选择此性别将导致合成语音具有男性特征。 |
FEMALE | 此选项表示女性声音。通过选择这种性别,合成语音将具有女性属性。 |
NEUTRAL | 不分性别的声音。尚不支持此语音。 |
使用 Google Cloud 文本转语音 API 时,您可以选择适当的性别,使合成语音与项目的特定要求保持一致。无论你的目标是指挥性的男声、舒缓的女声还是中性选项(如果支持), SsmlVoiceGender
参数都使您能够塑造听觉体验以满足应用程序的需求。
Google Cloud Text to Speech REST API
现在,让我们了解文本到语音转换 REST API 中的不同接口:
检索支持的云语音列表
若要检索文本转语音 API 支持的语音列表,我们将向以下终结点发出 GET 请求:
方法 | 接口 |
---|---|
GET | https://texttospeech.googleapis.com/v1/voices?key=[YOUR_API_KEY] |
该 API 使用 gRPC 转码语法,这允许我们使用 HTTP/JSON 与它进行通信。现在,让我们分解一下 API 请求的详细信息:
查询参数:>
- languageCode (可选):通过在查询参数中指定语言代码,您可以根据特定语言筛选语音列表。例如, languageCode=en-US 将返回支持英语(美国)的语音。随意尝试不同的语言代码,为您的应用程序找到完美的语音。
请求正文:
此 API 请求的请求正文应为空。
使用 Python 制作语音列表 API 调用
以下是如何使用 Python 对 Google Cloud 文本转语音 API 的 voices.list 端点进行 HTTP 调用的示例:
import requests
# Define the API endpoint URL
url = "https://texttospeech.googleapis.com/v1/voices?key=[YOUR_API_KEY]"
# Optional: Set the language code query parameter if needed
language_code = "en-US"
params = {"languageCode": language_code} if language_code else {}
# Make the GET request
response = requests.get(url, params=params)
# Check if the request was successful (status code 200)
if response.status_code == 200:
# Print the response content (JSON data)
print(response.json())
else:
# If the request failed, print the status code and error message
print(f"Request failed with status code {response.status_code}: {response.text}")
响应正文:
成功请求后,响应正文将包含结构化的数据,如下所示:
{
"voices": [
{
"languageCodes": [
"ar-XA"
],
"name": "ar-XA-Wavenet-A",
"ssmlGender": "FEMALE",
"naturalSampleRateHertz": 24000
},
{
"languageCodes": [
"ar-XA"
],
"name": "ar-XA-Wavenet-B",
"ssmlGender": "MALE",
"naturalSampleRateHertz": 24000
},
...
]
}
在上面的示例输出中,我们可以看到两个支持阿拉伯语 ( ar-XA ) 的声音。第一个声音,命名为 1,有女性性别(2),而第二个声音, ar-XA-Wavenet-B ,有一个男性性别(4)。两种声音共享 24000 Hz 的自然采样率。
voices
字段包含一个语音对象数组,每个对象表示文本到语音转换 API 支持的唯一语音。
了解语音对象
语音对象提供有关文本转语音服务支持的每个语音的基本详细信息。让我们仔细看看结构及其字段:
{
"languageCodes": [
string
],
"name": string,
"ssmlGender": enum (SsmlVoiceGender),
"naturalSampleRateHertz": integer
}
谷歌云语音
Google Cloud 文字转语音提供了多种语音供您选择,包括各种语言的男性和女性语音。这样可以轻松找到适合您项目需求的声音。
让我们探索一下 Google Cloud 文字转语音转换中可用的一些语音。
英语的谷歌云语音
Google Cloud 文本转语音功能为英语提供了多种语音。一些流行的英语声音包括:
en-US-Wavenet-A
– 此声音是听起来像年轻人的女性声音。它具有自然的语调,适用于广泛的应用。en-US-Wavenet-B
– 此声音是听起来像中年人的男性声音。它具有流畅,清晰的音调,适用于演示和叙述。en-GB-Wavenet-A
– 此声音是女性声音,听起来像来自英国的年轻人。它具有英国口音,适用于需要英国语音的应用。en-AU-Wavenet-A
– 这个声音是一个女性声音,听起来像来自澳大利亚的年轻人。它具有澳大利亚口音,适用于需要澳大利亚语音的应用。
面向非英语语言的谷歌云语音 Google Cloud 文本转语音功能还为非英语语言提供了多种语音。一些流行的非英语声音包括:
fr-FR-Wavenet-A
– 这个声音是一个女性声音,听起来像来自法国的年轻人。它具有自然的语调,适用于广泛的应用。 de-DE-Wavenet-A
– 这个声音是一个女性的声音,听起来像一个来自德国的年轻人。它具有清晰,清脆的音调,适用于演示和叙述。 es-ES-Wavenet-A
– 这个声音是一个女性声音,听起来像来自西班牙的年轻人。它具有流畅的旋律音调,适用于需要西班牙语声音的应用。 ja-JP-Wavenet-A
– 这个声音是一个女性声音,听起来像来自日本的年轻人。它具有自然的语调,适用于广泛的应用。
将文本合成为语音
使用 Google Cloud 文本转语音 API 时,可用的关键方法之一是 text.synthesize 方法。此方法允许您同步合成语音,这意味着您在处理完所有文本输入后会收到结果。
HTTP 请求:
要使用 REST API 合成语音,您需要向以下端点发送 POST 请求:
方法 | 接口 |
---|---|
POST | https://texttospeech.googleapis.com/v1/text:synthesize |
{
"input": {
object (SynthesisInput)
},
"voice": {
object (VoiceSelectionParams)
},
"audioConfig": {
object (AudioConfig)
}
}
例:
{
"input": {
"text": "Hello, This is hack the developer speaking!"
},
"voice": {
"languageCode": "en-US",
"name": "en-US-Wavenet-A",
"ssmlGender": "MALE"
},
"audioConfig": {
"audioEncoding": "MP3",
"pitch": 0,
"speakingRate": 0,
"sampleRateHertz": 0,
"volumeGainDb": 0
}
}
请求正文包含三个字段:
- input: SynthesisInput (必填)
- vioce: VoiceSelectionParams (必填)
- audioConfig 置: AudioConfig (必填)
响应结构
成功请求后,响应正文将包含合成的音频数据。让我们看一下响应的结构:
{
"audioContent": string
}
audioContent
字段包含请求中指定的编码音频数据字节。根据所选的编码(如 MP3 或 OGG_OPUS ),音频数据可能会包装在容器中。对于 LINEAR16 个音频,包括一个 WAV 标头。
📝 📝 注意:
audioContent
字段显示为 base64 编码的字符串。
在 Python 中进行文本合成 API 调用
为了演示如何使用 Python 对文本合成端点进行 API 调用,我们可以利用 requests
库:
import requests
url = "https://texttospeech.googleapis.com/v1/text:synthesize"
headers = {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Accept": "application/json",
"Content-Type": "application/json"
}
payload = {
"audioConfig": {
"audioEncoding": "MP3",
"pitch": 0,
"speakingRate": 0,
"sampleRateHertz": 0,
"volumeGainDb": 0
},
"input": {
"text": "Hello, This is hack the developer speaking!"
},
"voice": {
"languageCode": "en-US",
"name": "en-US-Wavenet-A",
"ssmlGender": "MALE"
}
}
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
audio_data = response.json()["audioContent"]
print(audio_data)
else:
print("Error:", response.status_code, response.text)
📝📝 注意:不要忘记将
YOUR_ACCESS_TOKEN
替换为从身份验证过程中获取的实际访问令牌。
输出:
{
"audioContent": "//NExAARMGFcA...."
}
了解如何使用 Pyttsx3 库在 Python 应用程序中使用文本到语音转换。
总结
总之,Google Cloud 文本转语音 API 提供了一个强大的平台,用于从文本输入合成语音。通过利用其特性和功能,您可以使用自然的声音增强您的应用程序,并使您的内容栩栩如生。
在本篇博客中,我们探讨了 Google Cloud 文本转语音 API 的关键方面,包括其 REST API 和 text.synthesize 方法。我们讨论了如何发出请求,提供了进行 API 调用的代码示例,并解释了必要的参数和响应结构。
请记住,Google Cloud 文本转语音 API 提供了多种语言、语音和自定义选项,可让您创建引人入胜的动态应用。无论您是在构建交互式语音响应系统、聊天机器人还是任何其他支持语音的应用程序,此 API 都使您能够提供卓越的用户体验。
因此,您可以使用 Google Cloud 文本转语音 API 深入了解语音合成的世界,让您的应用以逼真的语音和无缝集成进行大量语音。祝您编码愉快!
常见问题 (FAQ)
谷歌文本转语音 API 是免费的吗?
不,Google 文本转语音 API 不是免费提供的。它是作为 Google 云平台的一部分提供的服务,并且存在与其使用相关的费用。使用 API 时,将根据从文本转换为语音的字符数向您收费。
如何获取谷歌文本转语音 API?
要访问 Google 文字转语音 API,您需要按照以下步骤操作:
- 在谷歌云平台 (GCP) 控制台上创建一个项目。
- 为项目启用文本转语音 API(确保已启用计费)。
- 设置身份验证并获取必要的 API 凭据,例如 API 密钥或服务帐户密钥。
- 安装必要的客户端库或使用 RESTful API 调用与 Google 文本转语音服务进行交互。
谷歌云免费试用多长时间?
谷歌云提供 90 天的免费试用期。此试用期允许用户在特定使用限制内探索各种 Google Cloud 服务,包括文本转语音 API,而不会产生费用。
Google Cloud 文字转语音支持多少种语言?
Google Cloud 文字转语音支持多种语言,以迎合不同的全球受众群体。该 API 支持 30 多种语言的 180 多种语音。这些语言包括常用选项,例如英语、印地语、西班牙语、法语、德语、意大利语、日语、韩语、中文等。
我可以在 YouTube 上使用 Google 文字转语音吗?
是的,您可以使用 Google Cloud 文字转语音 (TTS) API 为您的 YouTube 视频创建画外音或旁白。但是,在使用 TTS 或任何其他生成内容的方法时,严格遵守 YouTube 的政策和准则至关重要。