您可以使用 Text-to-Speech 将字词和句子转换为自然人类语音的 base64 编码音频数据。然后,您可以通过对 base64 数据进行解码,将音频数据转换为 MP3 等可播放的音频文件。Text-to-Speech 接受的输入数据包括原始文本或语音合成标记语言 (SSML)。
本文档介绍如何使用 Text-to-Speech 从文本或 SSML 输入创建音频文件。如果您不熟悉语音合成或 SSML 等概念,建议您阅读文章 Text-to-Speech 基础知识。
这些示例要求您已安装并初始化 Google Cloud CLI。如需了解如何设置 gcloud CLI,请参阅向 TTS 进行身份验证。
将文本转换为合成语音音频
以下代码示例演示如何将字符串转换为音频数据。
您可以通过多种方式配置语音合成的输出,包括选择独特的语音或调制输出的音高、音量、语速和采样率。
协议
如需了解完整的详细信息,请参阅 text:synthesize
API 端点。
要从文本合成音频,请向 text:synthesize
端点发出 HTTP POST 请求。在 POST 请求正文的 voice
配置部分指定要合成的语音类型,在 input
部分的 text
字段中指定要合成的文本,并在 audioConfig
部分指定要创建的音频类型。
以下代码段将向 text:synthesize
端点发送合成请求并将结果保存到名为 synthesize-text.txt
的文件中。 将 PROJECT_ID
替换为您的项目 ID。
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: <var>PROJECT_ID</var>" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'input':{ 'text':'Android is a mobile operating system developed by Google, based on the Linux kernel and designed primarily for touchscreen mobile devices such as smartphones and tablets.' }, 'voice':{ 'languageCode':'en-gb', 'name':'en-GB-Standard-A', 'ssmlGender':'FEMALE' }, 'audioConfig':{ 'audioEncoding':'MP3' } }" "https://texttospeech.googleapis.com/v1/text:synthesize" > synthesize-text.txt
Text-to-Speech API 将返回包含在 JSON 输出中的 base64 编码数据格式的合成音频。synthesize-text.txt
文件中的 JSON 输出类似于以下代码片段。
{ "audioContent": "//NExAASCCIIAAhEAGAAEMW4kAYPnwwIKw/BBTpwTvB+IAxIfghUfW.." }
要将 Text-to-Speech API 的合成结果解码为 MP3 音频文件,请从 synthesize-text.txt
文件所在的目录运行以下命令。
cat synthesize-text.txt | grep 'audioContent' | \ sed 's|audioContent| |' | tr -d '\n ":{},' > tmp.txt && \ base64 tmp.txt --decode > synthesize-text-audio.mp3 && \ rm tmp.txt
Go
如需了解如何安装和使用 Text-to-Speech 客户端库,请参阅 Text-to-Speech 客户端库。 如需了解详情,请参阅 Text-to-Speech Go API 参考文档。
如需向 Text-to-Speech 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
其他语言
C#:请按照客户端库页面上的 C# 设置说明操作,然后访问 .NET 的 TText-to-Speech 参考文档。
PHP:请按照客户端库页面上的 PHP 设置说明 操作,然后访问 PHP 的 Text-to-Speech 参考文档。
Ruby:请按照客户端库页面上的 Ruby 设置说明操作,然后访问 Ruby 的 Text-to-Speech 参考文档。
将 SSML 转换为合成语音音频
在您的音频合成请求中使用 SSML 可以生成更像自然人类语音的音频。具体来说,SSML 可以让您更精细地控制音频输出如何表示语音中的暂停或音频中日期、时间、首字母缩写词和缩写词的发音。
如需详细了解 Text-to-Speech API 支持的 SSML 元素,请参阅 SSML 参考。
协议
如需了解完整的详细信息,请参阅 text:synthesize
API 端点。
要从 SSML 合成音频,请向 text:synthesize
端点发出 HTTP POST 请求。在 POST 请求正文的 voice
配置部分指定要合成的语音类型,在 input
部分的 ssml
字段中指定要合成的 SSML,并在 audioConfig
部分指定要创建的音频类型。
以下代码段将向 text:synthesize
端点发送合成请求并将结果保存到名为 synthesize-ssml.txt
的文件中。 将 PROJECT_ID
替换为您的项目 ID。
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: <var>PROJECT_ID</var>" \ -H "Content-Type: application/json; charset=utf-8" --data "{ 'input':{ 'ssml':'<speak>The <say-as interpret-as=\"characters\">SSML</say-as> standard is defined by the <sub alias=\"World Wide Web Consortium\">W3C</sub>.</speak>' }, 'voice':{ 'languageCode':'en-us', 'name':'en-US-Standard-B', 'ssmlGender':'MALE' }, 'audioConfig':{ 'audioEncoding':'MP3' } }" "https://texttospeech.googleapis.com/v1/text:synthesize" > synthesize-ssml.txt
Text-to-Speech API 将返回包含在 JSON 输出中的 base64 编码数据格式的合成音频。synthesize-ssml.txt
文件中的 JSON 输出类似于以下代码片段。
{ "audioContent": "//NExAASCCIIAAhEAGAAEMW4kAYPnwwIKw/BBTpwTvB+IAxIfghUfW.." }
要将 Text-to-Speech API 的合成结果解码为 MP3 音频文件,请从 synthesize-ssml.txt
文件所在的目录运行以下命令。
cat synthesize-ssml.txt | grep 'audioContent' | \ sed 's|audioContent| |' | tr -d '\n ":{},' > tmp.txt && \ base64 tmp.txt --decode > synthesize-ssml-audio.mp3 && \ rm tmp.txt
Go
如需了解如何安装和使用 Text-to-Speech 客户端库,请参阅 Text-to-Speech 客户端库。 如需了解详情,请参阅 Text-to-Speech Go API 参考文档。
如需向 Text-to-Speech 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
其他语言
C#:请按照客户端库页面上的 C# 设置说明操作,然后访问 .NET 的 TText-to-Speech 参考文档。
PHP:请按照客户端库页面上的 PHP 设置说明 操作,然后访问 PHP 的 Text-to-Speech 参考文档。
Ruby:请按照客户端库页面上的 Ruby 设置说明操作,然后访问 Ruby 的 Text-to-Speech 参考文档。