本教程演示如何使用语音合成标记语言 (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 Console 中有一个 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
本教程使用 googleapis 代码库的 nodejs-text-to-speech/samples
目录中的代码。
如需下载并导航到本教程的代码,请从终端运行以下命令。
git clone https://github.com/googleapis/nodejs-text-to-speech.git cd nodejs-text-to-speech/samples/
Python
本教程使用 Python Text-to-Speech 库的 samples/snippets
目录中的代码。
如需下载并导航到本教程的代码,请从终端运行以下命令。
git clone https://github.com/googleapis/python-texttospeech.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
向应用代码提供身份验证凭据。
将 [PATH] 替换为包含您的服务帐号密钥的 JSON 文件的路径。此变量仅适用于当前的 Shell 会话,因此,如果您打开新的会话,请重新设置该变量。
Linux 或 macOS
export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
例如:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"
Windows
使用 PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
例如:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\my-key.json"
使用命令提示符:
set GOOGLE_APPLICATION_CREDENTIALS=[PATH]
导入库
本教程使用以下系统和客户端库。
Java
Node.js
Python
使用 Text-to-Speech API
以下函数接受以 SSML 标记的文本字符串以及 MP3 文件的名称。函数使用以 SSML 标记的文本生成合成音频。函数将合成音频保存为指定为参数的 MP3 文件名。
只能通过单个语音读取整个 SSML 输入。您可以在 VoiceSelectionParams
对象中设置语音。
Java
Node.js
Python
对合成音频进行个性化
以下函数接受一个文本文件的名称并将文件的内容转换为以 SSML 标记的文本字符串。
Java
Node.js
Python
综合应用
此程序使用以下输入。
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-text-to-speech/samples
目录中,在命令行上执行以下命令。
$ node ssmlAddresses.js projectId
Windows
在 hybridGlossaries.js
文件中,对被 TODO (developer)
注释掉的变量取消备注。
在以下命令中,将 projectId 替换为您的 Google Cloud 项目 ID。从 nodejs-text-to-speech/samples
目录中,在命令行上执行以下命令。
$env: C:/Node.js/node.exe C: ssmlAddresses.js projectId
Python
Linux 或 MacOS
从 python-texttospeech/samples/snippets
目录中,在命令行上执行以下命令。
$ python ssml_addresses.py
Windows
从 python-texttospeech/samples/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-text-tospeech/samples/resources/
目录。
在 resources
目录中查找 example.mp3 文件。
Python
导航到 python-texttospeech/samples/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 标记。
- 了解如何向 Android 应用提供语音翻译功能
- 了解如何将 SSML 与 Translation 和 Vision 搭配使用
清理
为避免您的 Google Cloud Platform 帐号因本教程中使用的资源而产生费用,如果您不需要该项目,请使用 Google Cloud Console 删除该项目。
删除项目
- 在 Cloud Console 中,转到“项目”页面。
- 在项目列表中,选择要删除的项目,然后点击删除。
- 在对话框中输入项目 ID,然后点击关停以删除项目。