arrow_back

轻松实现语音合成!使用 Text-to-Speech 创建合成语音

登录 加入
访问 700 多个实验和课程

轻松实现语音合成!使用 Text-to-Speech 创建合成语音

实验 1 小时 universal_currency_alt 1 个积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

GSP222

Google Cloud 自学实验的徽标

概览

借助 Text-to-Speech API,您可以创建机器生成(又称“合成”)的人类语音音频文件。您可以使用文本或语音合成标记语言 (SSML) 来提供内容,指定“语音”(即具有独特语调和语音的“朗读者”),并配置输出;Text-to-Speech API 就会使用您指定的语音,将您发送的内容转换成音频数据并返回给您。

在此实验中,您将使用 Text-to-Speech API 创建一系列音频文件,然后收听这些音频,并比较它们之间有何差异。

学习内容

在本实验中,您将使用 Text-to-Speech API 完成以下任务:

  • 创建一系列音频文件。
  • 聆听并比较音频文件。
  • 配置音频输出。

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:

    • “打开 Google Cloud 控制台”按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示“登录”页面。

    提示:将这些标签页安排在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在“实验详细信息”窗格中找到“用户名”。

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在“实验详细信息”窗格中找到“密码”。

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标和“搜索”字段

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

  2. 在弹出的窗口中执行以下操作:

    • 继续完成 Cloud Shell 信息窗口中的设置。
    • 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。

如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权

输出:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南

为项目设置区域

在 Cloud Shell 中,输入以下命令,设置要在本实验中运行项目的区域:

gcloud config set compute/region {{{project_0.default_region | Region}}}

任务 1. 启用 Text-to-Speech API

Cloud Text-to-Speech API 页面会显示详细信息、指标等。

启用 API:

  1. 导航菜单 (“导航菜单”图标) 中,依次点击 API 和服务 > 库

  2. 搜索 API 和服务框中输入文字转语音,然后在搜索结果中点击 Cloud Text-to-Speech API

  3. 点击启用以启用 Cloud Text-to-Speech API。

等待几秒钟,以便为项目启用 API。

点击检查我的进度以验证是否完成了以下目标: 启用 Text-to-Speech API

任务 2. 创建虚拟环境

Python 虚拟环境用于将软件包安装与系统隔离开来。

  1. 安装 virtualenv 环境:
sudo apt-get install -y virtualenv
  1. 构建虚拟环境:
python3 -m venv venv
  1. 激活此虚拟环境:
source venv/bin/activate

任务 3. 创建服务账号

使用服务账号对 Text-to-Speech API 调用进行身份验证。

创建服务账号:

  1. 在 Cloud Shell 中运行以下命令:
gcloud iam service-accounts create tts-qwiklab
  1. 生成密钥以使用该服务账号:
gcloud iam service-accounts keys create tts-qwiklab.json --iam-account tts-qwiklab@{{{project_0.project_id | Project ID}}}.iam.gserviceaccount.com
  1. 最后,将 GOOGLE_APPLICATION_CREDENTIALS 环境变量设置为密钥文件的位置:
export GOOGLE_APPLICATION_CREDENTIALS=tts-qwiklab.json

点击检查我的进度以验证是否完成了以下目标: 创建服务账号

任务 4. 获取可用语音列表

Text-to-Speech API 提供了不同的语音和语言,可用于创建音频文件。您可以使用任何可用语音来朗读内容。

注意:Text-to-Speech API 包含多种称为 WaveNet 语音的高级语音,可用于生成听起来更自然的合成语音。这些语音的价格也比其他语音略贵。如需了解详情,请参阅 Cloud Text-to-Speech 价格页面
  1. 使用 Text-to-Speech API 创建合成语音时,在 Cloud Shell 中使用以下 curl 命令可列出可用的语音:
curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ "https://texttospeech.googleapis.com/v1/voices"

Text-to-Speech API 将返回一个 JSON 格式的结果,与以下内容类似:

{ "voices": [ { "languageCodes": [ "es-ES" ], "name": "es-ES-Standard-A", "ssmlGender": "FEMALE", "naturalSampleRateHertz": 24000 }, { "languageCodes": [ "ja-JP" ], "name": "ja-JP-Standard-A", "ssmlGender": "FEMALE", "naturalSampleRateHertz": 22050 }, { "languageCodes": [ "pt-BR" ], "name": "pt-BR-Standard-A", "ssmlGender": "FEMALE", "naturalSampleRateHertz": 24000 }, ... ] }

请注意,在 curl 命令的结果中,每种语音包含四个字段:

  • name:您提供的用于请求的语音 ID。
  • ssmlGender:用于朗读文本的语音的性别,如 SSML W3 建议中所定义。
  • naturalSampleRateHertz:语音的采样率。
  • languageCodes:与该语音关联的语言代码列表。

另请注意,有些语言有多种语音可供选择。

  1. 将 API 返回的结果限定为仅包含一种语言代码:
curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ "https://texttospeech.googleapis.com/v1/voices?language_code=en"

任务 5. 根据文本创建合成语音

现在,您已经了解了如何获取用于朗读文本的语音名称,接下来该创建合成语音了!

构建请求

使用 Cloud Shell 编辑器在名为 synthesize-text.json 的文本文件中构建对 Text-to-Speech API 的请求。

  1. 在 Cloud Shell 中,点击打开编辑器,以打开 Cloud Shell 编辑器。

  2. 在操作栏中,依次点击文件 > 新建文件

  3. 选择文件类型或输入文件名字段中,输入 synthesize-text.json

  4. 点击确定

  5. 将以下代码添加到 synthesize-text.json 文件中:

{ 'input':{ 'text':'Cloud Text-to-Speech API allows developers to include natural-sounding, synthetic human speech as playable audio in their applications. Text-to-Speech API 会将文本或语音合成标记语言 (SSML) 输入转换为音频数据,例如 MP3 或 LINEAR16(WAV 文件中使用的编码)。}, 'voice':{ 'languageCode':'en-gb', 'name':'en-GB-Standard-A', 'ssmlGender':'FEMALE' }, 'audioConfig':{ 'audioEncoding':'MP3' } }
  1. 依次点击文件 > 保存,以保存文件。

JSON 格式的请求会提供三个对象:

  • input:提供要转换为合成语音的文本。
  • voice:一个对象,用于指定合成语音要使用的语音。
  • audioConfig:指定 Text-to-Speech API 要返回的音频编码。
  1. 点击打开终端以返回终端。

  2. 调用 Text-to-Speech API:

curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ -d @synthesize-text.json "https://texttospeech.googleapis.com/v1/text:synthesize" \ > synthesize-text.txt

此调用的输出将保存到名为 synthesize-text.txt 的文件中。

  1. 点击打开编辑器,然后打开 synthesize-text.txt 文件。请注意,Text-to-Speech API 会以 base64 编码文本的形式提供音频输出,并且会将其分配给 audioContent 字段,如下所示:
{ "audioContent": "//NExAASGoHwABhGudEACdzqFXfRE4EY3AACkD/zX4ADf/6J/[...]" }

转换回答

为了将回答转换成音频,您需要选择 synthesize-text.txt 中包含的音频数据,并将其解码为音频文件(在本实验中为 MP3 文件)。很多方法都可以实现此目的,本实验提供了一些简单的 Python 代码。

  1. 在操作栏中,依次点击文件 > 新建文件

  2. 选择文件类型或输入文件名字段中,输入 tts_decode.py,然后按 Enter 键。

  3. 点击确定

  4. 将以下内容输入或复制到 tts_decode.py 中:

import argparse from base64 import decodebytes import json """ Usage: python tts_decode.py --input "synthesize-text.txt" \ --output "synthesize-text-audio.mp3" """ def decode_tts_output(input_file, output_file): """ Decode output from Cloud Text-to-Speech. input_file: the response from Cloud Text-to-Speech output_file: the name of the audio file to create """ with open(input_file) as input: response = json.load(input) audio_data = response['audioContent'] with open(output_file, "wb") as new_file: new_file.write(decodebytes(audio_data.encode('utf-8'))) if __name__ == '__main__': parser = argparse.ArgumentParser( description="Decode output from Cloud Text-to-Speech", formatter_class=argparse.RawDescriptionHelpFormatter) parser.add_argument('--input', help='The response from the Text-to-Speech API.', required=True) parser.add_argument('--output', help='The name of the audio file to create', required=True) args = parser.parse_args() decode_tts_output(args.input, args.output)
  1. 保存 tts_decode.py

创建并运行音频文件

如需根据从 Text-to-Speech API 收到的响应创建音频文件,请执行以下操作:

  1. 点击打开终端以返回 Cloud Shell。

  2. 创建音频文件 synthesize-text-audio.mp3

python tts_decode.py --input "synthesize-text.txt" --output "synthesize-text-audio.mp3"
  1. 点击打开编辑器以打开 Cloud Shell 编辑器。

  2. 点击左侧窗格中的 synthesize-text-audio.mp3 以打开该文件。

  3. 播放音频,收听文件。您会听到合成语音朗读您提供的文本!

任务 6. 根据 SSML 创建合成语音

除了使用文本之外,您还可以使用语音合成标记语言 (SSML) 格式向 Text-to-Speech API 提供输入。SSML 定义了一种用于表示合成语音的 XML 格式。使用 SSML 输入,您可以更精确地控制合成语音输出中的停顿、强调、发音、音调、语速和其他语音品质。

构建请求

首先,在名为 synthesize-ssml.json 的文本文件中构建对 Text-to-Speech API 的请求。

  1. 在 Cloud Shell 编辑器中,在操作栏中点击文件 > 新建文件

  2. 选择文件类型或输入文件名字段中,输入 synthesize-ssml.json,然后按 Enter 键。

  3. 点击确定

  4. 将以下内容输入或复制到 synthesize-ssml.json 中:

{ 'input':{ 'ssml':'<speak><s> <emphasis level="moderate">Cloud Text-to-Speech API</emphasis> allows developers to include natural-sounding <break strength="x-weak"/> synthetic human speech as playable audio in their applications.</s> <s>The Text-to-Speech API converts text or <prosody rate="slow">Speech Synthesis Markup Language</prosody> <say-as interpret-as=\"characters\">SSML</say-as> input into audio data like <say-as interpret-as=\"characters\">MP3</say-as> or <sub alias="linear sixteen">LINEAR16</sub> <break strength="weak"/> (the encoding used in <sub alias="wave">WAV</sub> files).</s></speak>' }, 'voice':{ 'languageCode':'en-gb', 'name':'en-GB-Standard-A', 'ssmlGender':'FEMALE' }, 'audioConfig':{ 'audioEncoding':'MP3' } }

请注意,这次要发送的 JSON 载荷的 input 对象中包含的内容有所不同:

  • input 对象没有 text 字段,但是有 ssml 字段。
  • ssml 字段包含 XML 格式的内容,并以 <speak> 元素作为根元素。

XML 输入文件中的每个元素都会影响合成语音的输出。

具体来说,此示例中的元素具有以下效果:

  • <s> 包含一个句子。
  • <emphasis> 表示要强调所括的字词或词组。
  • <break> 会在语音中插入停顿。
  • <prosody> 可根据 ratepitchvolume 属性的值,自定义所括文本的音高、语速或音量。
  • <say-as> 提供了更多关于如何解读和朗读所括文本的指示,例如,对于一连串数字,是读作序数,还是读作基数。
  • <sub> 用于指定所括文本的朗读替换值。
注意:您可以查看 SSML 参考,了解 Cloud Text-to-Speech 支持的 SSML 元素的完整列表。
  1. 点击打开终端以打开 Cloud Shell 终端。

  2. 调用 Text-to-Speech API,并将输出保存到名为 synthesize-ssml.txt 的文件中:

curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ -d @synthesize-ssml.json "https://texttospeech.googleapis.com/v1/text:synthesize" \ > synthesize-ssml.txt

创建并运行音频文件

同样,您需要先对 Text-to-Speech API 的输出进行解码,然后才能听到音频。

  1. 点击打开终端。运行以下命令,使用之前创建的 tts_decode.py 实用程序生成名为 synthesize-ssml-audio.mp3 的音频文件:
python tts_decode.py --input "synthesize-ssml.txt" --output "synthesize-ssml-audio.mp3"
  1. 点击打开编辑器

  2. 点击左侧窗格中的 synthesize-ssml-audio.mp3,然后播放嵌入的音频文件。

请注意,SSML 输出与文本文件输出之间的差异:虽然两个音频文件说的内容相同,但 SSML 输出在朗读时会略有不同,它会为缩写添加停顿和不同的发音。

任务 7. 配置音频输出和设备配置文件

除了 SSML 之外,您还可以为 Text-to-Speech API 创建的合成语音输出提供更多自定义选项。您可以指定其他音频编码、更改音频输出的音调,甚至要求针对特定类型的硬件优化输出。

构建请求

在名为 synthesize-with-settings.json 的文本文件中构建对 Text-to-Speech API 的请求:

  1. 在操作栏中,依次点击文件 > 新建文件

  2. 选择文件类型或输入文件名字段中,输入 synthesize-with-settings.json,然后按 Enter 键。

  3. 点击确定

  4. 将以下内容输入或复制到 synthesize-with-settings.json 中:

{ 'input':{ 'text':'The Text-to-Speech API is ideal for any application that plays audio of human speech to users. It allows you to convert arbitrary strings, words, and sentences into the sound of a person speaking the same things.' }, 'voice':{ 'languageCode':'en-us', 'name':'en-GB-Standard-A', 'ssmlGender':'FEMALE' }, 'audioConfig':{ 'speakingRate': 1.15, 'pitch': -2, 'audioEncoding':'OGG_OPUS', 'effectsProfileId': ['headphone-class-device'] } }
  1. 保存文件。

请注意,audioConfig 对象现在包含几个其他字段:

  • speakingRate 字段用于指定朗读者的语速。值为 1.0 表示正常语速,0.5 表示正常语速的一半,2.0 表示正常语速的两倍。
  • pitch 字段用于指定朗读字词时的音调差异。此处的数值表示在朗读这些字词时,音调要降低(负数)或升高(正数)的半音数。
  • audioEncoding 字段指定要用于数据的音频编码。此字段可接受的值为 LINEAR16MP3OGG_OPUS
  • effectsProfileId 字段用于请求 Text-to-Speech API 针对特定播放设备优化音频输出。该 API 会将预定义的音频配置文件应用于输出,从而提升在指定设备类别上的音频质量。
注意:音频配置文件功能目前是 Beta 版。请参阅指南,详细了解如何在应用中使用此功能。此处介绍的所有其他设置均已正式发布,可在应用中正常使用。
  1. 点击打开终端

  2. 调用 Text-to-Speech API:

curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ -d @synthesize-with-settings.json "https://texttospeech.googleapis.com/v1beta1/text:synthesize" \ > synthesize-with-settings.txt

此调用的输出将保存到名为 synthesize-with-settings.txt 的文件中。

创建并运行音频文件

  1. 运行以下命令,根据从 Text-to-Speech API 收到的输出生成一个名为 synthesize-with-settings-audio.mp3 的音频文件:
python tts_decode.py --input "synthesize-with-settings.txt" --output "synthesize-with-settings-audio.ogg"
  1. 点击打开编辑器以打开 Cloud Shell 编辑器。

  2. 点击左侧窗格中的 synthesize-with-settings-audio.mp3 以打开该文件,然后播放音频。

  3. 播放 synthesize-with-settings-audio.mp3 音频文件以及您在本实验中创建的其他音频文件。请注意,该音频的语速比其他音频文件的语速更快,但音调更低。

恭喜!

您学习了如何使用 Cloud Text-to-Speech API 创建合成语音。您已经了解了以下内容:

  • 列出可通过 Text-to-Speech API 使用的所有合成语音
  • 创建 Text-to-Speech API 请求,并使用 curl 命令调用该 API,同时提供文本和 SSML
  • 配置音频输出设置,包括指定播放音频的设备配置文件

后续步骤/了解详情

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2025 年 9 月 5 日

上次测试实验的时间:2024 年 11 月 4 日

版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。