本教程演示如何使用语音合成标记语言 (SSML) 读出地址的文本文件。您可以使用 SSML 标记来标记文本字符串,以对 Text-to-Speech 合成音频进行个性化。
明文 | 明文的 SSML 渲染 |
---|---|
123 Street Ln |
<speak>123 Street Ln</speak> |
1 Number St |
<speak>1 Number St</speak> |
1 Piazza del Fibonacci |
<speak>1 Piazza del Fibonacci</speak> |
目标
使用 SSML 和 Text-to-Speech 客户端库向 Text-Speech 发送合成语音请求。
费用
如需了解费用信息,请参阅 Text-to-Speech 价格页面。
准备工作
- 确保您在 Google Cloud 控制台中有一个 Text-to-Speech 项目。
- 本教程允许您使用 Java、Node.js 或 Python。如果您计划使用 Java,请下载和安装 Maven。如果您计划使用 Node.js,请下载 npm。
下载代码示例
如需下载代码示例,请克隆要使用的编程语言的 Google Cloud GitHub 示例。
Java
本教程使用 Google Cloud Platform Java 示例代码库的 texttospeech/cloud-client/src/main/java/com/example/texttospeech/
目录中的代码。
如需下载并导航到本教程的代码,请从终端运行以下命令。
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git cd java-docs-samples/texttospeech/cloud-client/src/main/java/com/example/texttospeech/
Node.js
本教程使用 Google Cloud Platform Node.js 示例代码库的 texttospeech
目录中的代码。
如需下载并导航到本教程的代码,请从终端运行以下命令。
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git cd texttospeech/
Python
本教程使用 Google Cloud Platform Python 示例代码库的 texttospeech/snippets
目录中的代码。
如需下载并导航到本教程的代码,请从终端运行以下命令。
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git cd samples/snippets
安装客户端库
本教程使用 Text-to-Speech 客户端库。
Java
本教程使用以下依赖项。
Node.js
从终端运行以下命令。
npm install @google-cloud/text-to-speech
Python
从终端运行以下命令。
pip install --upgrade google-cloud-texttospeech
设置您的 Google Cloud Platform 凭据
Provide authentication credentials to your application code by setting the
environment variable GOOGLE_APPLICATION_CREDENTIALS
. This
variable applies only to your current shell session. If you want the variable
to apply to future shell sessions, set the variable in your shell startup file,
for example in the ~/.bashrc
or ~/.profile
file.
Linux 或 macOS
export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH
"
Replace KEY_PATH
with the path of the JSON file that contains your credentials.
For example:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Windows
For PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH
"
Replace KEY_PATH
with the path of the JSON file that contains your credentials.
For example:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
For command prompt:
set GOOGLE_APPLICATION_CREDENTIALS=KEY_PATH
Replace KEY_PATH
with the path of the JSON file that contains your credentials.
导入库
本教程使用以下系统和客户端库。
Java
如需了解如何安装和使用 Text-to-Speech 客户端库,请参阅 Text-to-Speech 客户端库。如需了解详情,请参阅 Text-to-Speech Java API 参考文档。
如需向 Text-to-Speech 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Text-to-Speech 客户端库,请参阅 Text-to-Speech 客户端库。如需了解详情,请参阅 Text-to-Speech Node.js API 参考文档。
如需向 Text-to-Speech 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Text-to-Speech 客户端库,请参阅 Text-to-Speech 客户端库。如需了解详情,请参阅 Text-to-Speech Python API 参考文档。
如需向 Text-to-Speech 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
使用 Text-to-Speech API
以下函数接受以 SSML 标记的文本字符串以及 MP3 文件的名称。函数使用以 SSML 标记的文本生成合成音频。函数将合成音频保存为指定为参数的 MP3 文件名。
只能通过单个语音读取整个 SSML 输入。您可以在 VoiceSelectionParams
对象中设置语音。
Java
如需了解如何安装和使用 Text-to-Speech 客户端库,请参阅 Text-to-Speech 客户端库。如需了解详情,请参阅 Text-to-Speech Java API 参考文档。
如需向 Text-to-Speech 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Text-to-Speech 客户端库,请参阅 Text-to-Speech 客户端库。如需了解详情,请参阅 Text-to-Speech Node.js API 参考文档。
如需向 Text-to-Speech 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Text-to-Speech 客户端库,请参阅 Text-to-Speech 客户端库。如需了解详情,请参阅 Text-to-Speech Python API 参考文档。
如需向 Text-to-Speech 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
对合成音频进行个性化设置
以下函数接受一个文本文件的名称并将文件的内容转换为以 SSML 标记的文本字符串。
Java
如需了解如何安装和使用 Text-to-Speech 客户端库,请参阅 Text-to-Speech 客户端库。如需了解详情,请参阅 Text-to-Speech Java API 参考文档。
如需向 Text-to-Speech 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Text-to-Speech 客户端库,请参阅 Text-to-Speech 客户端库。如需了解详情,请参阅 Text-to-Speech Node.js API 参考文档。
如需向 Text-to-Speech 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Text-to-Speech 客户端库,请参阅 Text-to-Speech 客户端库。如需了解详情,请参阅 Text-to-Speech Python API 参考文档。
如需向 Text-to-Speech 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
总结
此程序使用以下输入。
123 Street Ln, Small Town, IL 12345 USA 1 Jenny St & Number St, Tutone City, CA 86753 1 Piazza del Fibonacci, 12358 Pisa, Italy
将上述文本传递给 text_to_ssml()
会生成以下标记文本。
<speak>123 Street Ln, Small Town, IL 12345 USA <break time="2s"/>1 Jenny St & Number St, Tutone City, CA 86753 <break time="2s"/>1 Piazza del Fibonacci, 12358 Pisa, Italy <break time="2s"/></speak>
运行代码
要生成合成语音的音频文件,请从命令行运行以下代码。
Java
Linux 或 MacOS
从 java-docs-samples/texttospeech/cloud-client/
目录中,在命令行上执行以下命令。
$ mvn clean package
Windows
从 java-docs-samples/texttospeech/cloud-client/
目录中,在命令行上执行以下命令。
$ mvn clean package
Node.js
Linux 或 MacOS
在 hybridGlossaries.js
文件中,对被 TODO (developer)
注释掉的变量取消备注。
在以下命令中,将 projectId 替换为您的 Google Cloud 项目 ID。从 nodejs-docs-samples/texttospeech
目录中,在命令行上执行以下命令。
$ node ssmlAddresses.js projectId
Windows
在 hybridGlossaries.js
文件中,对被 TODO (developer)
注释掉的变量取消备注。
在以下命令中,将 projectId 替换为您的 Google Cloud 项目 ID。从 nodejs-docs-samples/texttospeech
目录中,在命令行上执行以下命令。
$env: C:/Node.js/node.exe C: ssmlAddresses.js projectId
Python
Linux 或 MacOS
从 python-docs-samples/texttospeech/snippets
目录中,在命令行上执行以下命令。
$ python ssml_addresses.py
Windows
从 python-docs-samples/texttospeech/snippets
目录中,在命令行上执行以下命令。
$env: C:/Python3/python.exe C: ssml_addresses.py
检查输出
此程序会输出合成语音的 example.mp3 音频文件。
Java
导航到 java-docs-samples/texttospeech/cloud-client/resources/
目录。
在 resources
目录中查找 example.mp3 文件。
Node.js
导航到 nodejs-docs-samples/texttospeech/resources/
目录。
在 resources
目录中查找 example.mp3 文件。
Python
导航到 python-docs-samples/texttospeech/snippets/resources
。
在 resources
目录中查找 example.mp3 文件。
聆听以下音频剪辑,以确认 example.mp3 文件的语音正是您所期望的语音。
问题排查
忘记在命令行上设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量会生成以下错误消息:
The Application Default Credentials are not available.
向
text_to_ssml()
传递不存在的文件的名称会生成以下错误消息:IOError: [Errno 2] No such file or directory
向
ssml_to_audio()
传递包含 None 的 ssml_text 参数会生成以下错误消息:InvalidArgument: 400 Invalid input type. Type has to be text or SSML
确保您运行的是来自正确目录的代码。
后续步骤
- 浏览其他 SSML 标记。
- 了解如何将 SSML 与 Translation 和 Vision 搭配使用
清理
为避免您的 Google Cloud Platform 账号因本教程中使用的资源而产生费用,如果您不需要该项目,请使用 Google Cloud 控制台删除该项目。
删除项目
- 在 Google Cloud 控制台中,转到“项目”页面。
- 在项目列表中,选择要删除的项目,然后点击删除。
- 在对话框中输入项目 ID,然后点击关停以删除项目。