本教程演示如何使用语音合成标记语言 (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 凭据
通过设置环境变量 GOOGLE_APPLICATION_CREDENTIALS
向应用代码提供身份验证凭据。此变量仅适用于当前的 Shell 会话。如果您希望变量应用于未来的 Shell 会话,请在 shell 启动文件中设置变量,例如在 ~/.bashrc
或 ~/.profile
文件中。
Linux 或 macOS
export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH
"
将 KEY_PATH
替换为包含凭据的 JSON 文件的路径。
例如:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Windows
对于 PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH
"
将 KEY_PATH
替换为包含凭据的 JSON 文件的路径。
例如:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
对于命令提示符:
set GOOGLE_APPLICATION_CREDENTIALS=KEY_PATH
将 KEY_PATH
替换为包含凭据的 JSON 文件的路径。
导入库
本教程使用以下系统和客户端库。
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,然后点击关停以删除项目。