概览
一般来说,语音合成并非易事。您不能假设当应用程序读取一个句子的每个字母时,输出都是有意义的。文字转语音应用程序面临的一些常见挑战包括:
- 书写方式相同但发音不同的单词:I live in Las Vegas 与 This presentation broadcasts live from Las Vegas 相比。
- 文本规范化:消除缩写、首字母缩略词和单位的歧义:例如 St.,可以展开为 Street 或 Saint。
- 在具有复杂映射的语言中将文本转换为音素,例如在英语中,tough、through 和 though。在本例中,不同单词的相似部分可以根据单词和上下文有不同发音。
- 外来词 (déjà vu)、专有名词 (François Hollande) 和俚语(ASAP、LOL)。
Amazon Polly 提供的语音合成功能克服了这些挑战,使您能够专注于构建使用文字转语音的应用程序,而不是解决口译挑战。
Amazon Polly 可将文本转换为逼真的语音。借助 Amazon Polly,您可以构建支持自然聊天的应用程序,从而打造全新类别的具有语音功能的产品。Amazon Polly 是一种 Amazon AI 服务,它使用高级深度学习技术来合成很像人声的语音。它可以提供几十种逼真的声音并支持 20 多种语言,因此您可以选择最合适的声音,并构建适用于许多不同国家/地区的具有语音功能的应用程序。
此外,Amazon Polly 的响应时间一贯很快,而这正是支持实时的交互式对话所必需的。您可以缓存并保存 Polly 的音频文件,以便离线重放或重新分发。(换句话说,您转换和保存的内容就是您的。使用语音不会产生额外的文字转语音费用。)Polly 使用起来也非常简单。您只需将要转换为语音的文本发送到 Amazon Polly API。Amazon Polly 会立即将音频流返回给您的应用程序,以便您的应用程序可以直接播放该音频流,或将其存储为 MP3 等标准音频文件格式。
在本实验中,您将创建一个基本的无服务器应用程序,该应用程序使用 Amazon Polly 将文本转换为语音。该应用程序有一个简单的用户界面,可以接受多种不同语言的文本,然后将其转换为可以从 Web 浏览器播放的音频文件。本实验使用的是博客文章,但您可以使用任何类型的文本。例如,您可以在做饭时使用该应用程序阅读食谱,或者在驾驶或骑自行车时阅读新闻文章或书籍。
应用程序架构
您将构建一个无服务器应用程序,这意味着您不需要使用服务器,无需预置、修补和扩展。AWS 云会自动完成这些任务,让您能够专注于您的应用程序。
该应用程序提供两种方法:一种用于发送有关应转换为 MP3 文件的新文章的信息,另一种用于检索有关文章的信息(包括指向存储在 Amazon S3 存储桶中的 MP3 文件的链接)。这两种方法都通过 Amazon API Gateway 作为 RESTful Web 服务进行公开。
当应用程序发送有关新文章的信息时:
1 信息由 Amazon API Gateway 公开的 RESTful Web 服务接收。此 Web 服务由托管在 Amazon Simple Storage Service (Amazon S3) 上的静态网页调用。
2 Amazon API Gateway 触发一个 AWS Lambda 函数 New Post,该函数负责初始化生成 MP3 文件的过程。
3 Lambda 函数将有关文章的信息插入 Amazon DynamoDB 表,有关所有文章的信息都存储在该表中。
4 要异步运行整个过程,您可以使用 Amazon Simple Notification Service (Amazon SNS) 来分离接收有关新文章的信息和启动音频转换的过程。
5 另一个 Lambda 函数 Convert to Audio 订阅您的 SNS 主题,并在出现新消息时触发(这意味着新文章应转换为音频文件)。
6 Convert to Audio Lambda 函数使用 Amazon Polly 将文本转换为指定语言(与文本语言相同)的音频文件。
7 新的 MP3 文件保存在专用的 S3 存储桶中。
8 有关文章的信息在 DynamoDB 表中更新。存储在 S3 存储桶中的音频文件的 URL 与先前存储的数据一起保存。
当应用程序检索有关文章的信息时:
1 RESTful Web 服务使用 Amazon API Gateway 进行部署。Amazon API Gateway 公开检索有关文章的信息的方法。这些方法包含文章的文本以及指向存储 MP3 文件的 S3 存储桶的链接。该 Web 服务由托管在 Amazon S3 上的静态网页调用。
2 Amazon API Gateway 调用 Get Post Lambda 函数,该函数将部署用于检索文章数据的逻辑。
3 Get Post Lambda 函数从 DynamoDB 表中检索有关文章的信息(包括对 Amazon S3 的引用),并返回该信息。
涵盖的主题
本实验结束时,您将能够:
- 创建 Amazon DynamoDB 来存储数据
- 创建 Amazon API Gateway RESTful API
- 创建由 API Gateway 触发的 AWS Lambda 函数
- 将 AWS Lambda 函数与 Amazon Simple Notification Service (SNS) 连接
- 使用 Amazon Polly 合成多种语言和声音的语音
图标键
本实验中使用了不同图标,以提醒大家注意各种类型的说明和备注。下面的列表解释了每个图标的用途:
- 您必须运行的命令
- 您可以用来验证命令或已编辑文件输出的示例输出
- 一项提示、技巧或重要指导
- 特别相关或较为重要的信息(不查看该信息并不会损坏设备或数据,但可能导致需要重复某些步骤)
- 警告:提醒这是一项不可逆转且可能造成命令或进程失败的操作(包括提醒配置在完成后将无法更改)。