您是否厌倦了学习冗长的文章或书籍,但需要分析或享受它们?谷歌为你提供了一个答案!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 美元
谷歌云文字转语音 (TTS) 语音定价

📝📝 注意:对于 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 指定语音合成的输入文本。它包含将合成为语音的文本输入。

请务必注意,必须提供 textssml 字段。同时提供两者或两者都不提供将导致 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 标头。
MP3MP3 音频速度为 32kbps。
OGG_OPUS包裹在 Ogg 容器中的 Opus 编码音频。在使用大致相同的比特率时,编码质量高于 MP3。
MULAW8 位样本,使用 G.711 PCMU/mu 律压缩 14 位音频样本。作为 MULAW 返回的音频内容还包含一个 WAV 标头。
ALAW8 位样本,使用 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 请求:

方法接口
GEThttps://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 请求:

方法接口
POSThttps://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,您需要按照以下步骤操作:

  1. 在谷歌云平台 (GCP) 控制台上创建一个项目。
  2. 为项目启用文本转语音 API(确保已启用计费)。
  3. 设置身份验证并获取必要的 API 凭据,例如 API 密钥或服务帐户密钥。
  4. 安装必要的客户端库或使用 RESTful API 调用与 Google 文本转语音服务进行交互。

谷歌云免费试用多长时间?

谷歌云提供 90 天的免费试用期。此试用期允许用户在特定使用限制内探索各种 Google Cloud 服务,包括文本转语音 API,而不会产生费用。

Google Cloud 文字转语音支持多少种语言?

Google Cloud 文字转语音支持多种语言,以迎合不同的全球受众群体。该 API 支持 30 多种语言的 180 多种语音。这些语言包括常用选项,例如英语、印地语、西班牙语、法语、德语、意大利语、日语、韩语、中文等。

我可以在 YouTube 上使用 Google 文字转语音吗?

是的,您可以使用 Google Cloud 文字转语音 (TTS) API 为您的 YouTube 视频创建画外音或旁白。但是,在使用 TTS 或任何其他生成内容的方法时,严格遵守 YouTube 的政策和准则至关重要。

参考