亚马逊波莉 是一项将文本转换为逼真语音的服务。 它支持开发一整类可将文本转换为多种语言的语音的应用程序。
该服务可由聊天机器人、有声读物和其他文本转语音应用程序与其他 AWS AI 或机器学习 (ML) 服务结合使用。 例如, 亚马逊Lex 和 Amazon Polly 可以组合起来创建一个聊天机器人,该机器人与用户进行双向对话,并根据用户的命令执行某些任务。 亚马逊转录, 亚马逊翻译和 Amazon Polly 可以结合使用,将语音转录为源语言的文本,将其翻译为其他语言,然后说出来。
在这篇文章中,我们提出了一种有趣的方法,用于在使用 Amazon Polly 朗读文本时突出显示文本。 该解决方案可用于许多文本转语音应用程序,以执行以下操作:
- 为书籍、网站和博客中的音频添加视觉功能
- 当客户试图快速理解所说的文字时,提高理解力
我们的解决方案使客户端(在本例中为浏览器)能够随时了解 Amazon Polly 正在说出什么文本(单词或句子)。 这使得客户端能够在朗读时动态突出显示文本。 这种功能对于为前面提到的用例提供语音视觉辅助非常有用。
除了突出显示文本之外,我们的解决方案还可以扩展以执行其他任务。 例如,浏览器可以在朗读文本时在前端显示图像、播放音乐或执行其他动画。 此功能对于创建动态有声读物、教育内容和更丰富的文本到语音应用程序非常有用。
解决方案概述
该解决方案的核心是使用 Amazon Polly 将文本字符串转换为语音。 文本可以从浏览器输入,也可以通过对我们的解决方案公开的端点的 API 调用来输入。 Amazon Polly 生成的语音作为音频文件(MP3 格式)存储在 亚马逊简单存储服务 (Amazon S3)存储桶。
然而,仅使用音频文件,浏览器无法在任何时刻找到文本的哪些部分正在被说出,因为我们没有关于每个单词何时被说出的详细信息。
Amazon Polly 提供了一种使用语音标记来获取此信息的方法。 语音标记存储在文本文件中,该文件显示说出每个单词或句子的时间(从音频开始以毫秒为单位测量)。
Amazon Polly 在以行分隔的 JSON 流中返回语音标记对象。 语音标记对象包含以下字段:
- 时间 – 从相应音频流开始的时间戳(以毫秒为单位)
- Type – 语音标记的类型(句子、单词、视位或 SSML)
- Start 开始 – 输入文本中对象开头的字节偏移量(不是字符)(不包括视位标记)
- 结束 – 输入文本中对象结尾的字节偏移量(不是字符)(不包括视位标记)
- 值 – 这取决于语音标记的类型:
- SMML – SSML标签
- 视嘴型 – 视位名称
- 字或 句子 – 由开始和结束字段分隔的输入文本的子字符串
例如,如果您使用句子“Mary had a Little Lamb”,则可以为您提供以下语音标记文件 SpeechMarkTypes
API调用中=[“word”,“sentence”]获取语音标记:
单词“had”(位于第 3 行末尾)在音频流开始后 373 毫秒开始,从输入文本的字节 5 开始,到字节 8 结束。
架构概述
我们的解决方案的架构如下图所示。
我们的解决方案网站作为静态文件(JavaScript、HTML)存储在 Amazon S3 上,托管在 亚马逊的CloudFront的 (1) 并提供给最终用户的浏览器 (2)。
当用户通过简单的 HTML 表单在浏览器中输入文本时,该文本将由浏览器中的 JavaScript 进行处理。 这通过以下方式调用 API (3) Amazon API网关, 调用 AWS Lambda 函数(4)。 Lambda 函数调用 Amazon Polly (5) 来生成语音(音频)和语音标记 (JSON) 文件。 对 Amazon Polly 进行两次调用以获取音频和语音标记文件。 这些调用是使用 JavaScript 异步函数进行的。 这些调用的输出是音频和语音标记文件,这些文件存储在 Amazon S3 (6a) 中。 为了避免多个用户覆盖 S3 存储桶中彼此的文件,文件存储在带有时间戳的文件夹中。 这最大限度地减少了两个用户在 Amazon S3 中覆盖彼此文件的可能性。 对于生产版本,我们可以采用更强大的方法根据用户 ID 或时间戳以及其他独特特征来隔离用户的文件。
Lambda 函数为语音和语音标记文件创建预签名 URL,并以数组 (7、8、9) 的形式将它们返回到浏览器。
当浏览器将文本文件发送到 API 端点 (3) 时,它会在一次同步调用 (9) 中返回音频文件和语音标记文件的两个预签名 URL。 这由箭头旁边的钥匙符号指示。
浏览器中的 JavaScript 函数从 URL 句柄中获取语音标记文件和音频 (10)。 它设置音频播放器来播放音频。 (HTML 音频标签用于此目的)。
当用户单击播放按钮时,它会解析在先前步骤中检索到的语音标记,以使用超时创建一系列定时事件。 这些事件会调用回调函数,这是另一个用于在浏览器中突出显示语音文本的 JavaScript 函数。 同时,JavaScript 函数从其 URL 句柄传输音频文件。
结果是,事件在适当的时间运行,以突出显示在播放音频时说出的文本。 JavaScript 超时的使用为我们提供了音频与突出显示文本的同步。
先决条件
要运行此解决方案,您需要 AWS账户 与 AWS身份和访问管理 有权使用 Amazon CloudFront、Amazon API Gateway、Amazon Polly、Amazon S3、AWS Lambda 和 AWS Step Functions 的 (IAM) 用户。
使用Lambda生成语音和语音标记
以下代码调用 Amazon Polly synthesize_speech
函数两次来获取音频和语音标记文件。 它们作为异步函数运行,并使用 Promise 进行协调以同时返回结果。
在JavaScript方面,文本突出显示是通过highlighter(start, finish, word)完成的,定时事件由 setTimers()
:
替代方法
您可以考虑以下几种替代方法,而不是以前的方法:
- 在 Step Functions 状态机内创建语音标记和音频文件。 状态机可以调用并行分支条件来调用两个不同的 Lambda 函数:一个用于生成语音,另一个用于生成语音标记。 其代码可以在 使用步骤函数 Github 存储库中的子文件夹。
- 异步调用 Amazon Polly 以生成音频和语音标记。 如果文本内容较大或者用户不需要实时响应,可以使用这种方法。 有关创建长音频文件的更多详细信息,请参阅 创建长音频文件.
- 让 Amazon Polly 使用以下命令直接创建预签名 URL
generate_presigned_url
在 Boto3 中调用 Amazon Polly 客户端。 如果您采用这种方法,Amazon Polly 每次都会生成新的音频和语音标记。 在我们当前的方法中,我们将这些文件存储在 Amazon S3 中。 尽管在我们的代码版本中无法从浏览器访问这些存储的文件,但您可以修改代码以通过从 Amazon S3 获取以前生成的音频文件来播放这些文件(而不是使用 Amazon Polly 再次重新生成文本的音频)。 我们还有更多 使用 Python 访问 Amazon Polly 的代码示例 在 AWS 代码库中。
创建解决方案
整个解决方案可从我们的 Github回购。 要在您的帐户中创建此解决方案,请按照 README.md 文件中的说明进行操作。 该解决方案包括一个 AWS CloudFormation 模板来配置您的资源。
净化
要清理此演示中创建的资源,请执行以下步骤:
- 删除创建用于存储 CloudFormation 模板(存储桶 A)、源代码(存储桶 B)和网站(
pth-cf-text-highlighter-website-[Suffix]
). - 删除 CloudFormation 堆栈
pth-cf
. - 删除包含语音文件的 S3 存储桶 (
pth-speech-[Suffix]
)。 该存储桶由 CloudFormation 模板创建,用于存储 Amazon Polly 生成的音频和语音标记文件。
总结
在这篇文章中,我们展示了一个解决方案示例,该解决方案可以在使用 Amazon Polly 朗读时突出显示文本。 它是使用 Amazon Polly 语音标记功能开发的,该功能为我们提供音频文件中每个单词或句子开始位置的标记。
该解决方案可作为 CloudFormation 模板使用。 它可以按原样部署到任何执行文本到语音转换的 Web 应用程序。 这对于在书籍、具有口型同步功能(使用视位语音标记)、网站和博客中的音频中添加视觉功能以及帮助有听力障碍的人非常有用。
除了突出显示文本之外,它还可以扩展以执行其他任务。 例如,浏览器可以在朗读文本的同时在前端显示图像、播放音乐以及执行其他动画。 此功能对于创建动态有声读物、教育内容和更丰富的文本到语音应用程序非常有用。
我们欢迎您尝试此解决方案,并通过以下链接了解有关相关 AWS 服务的更多信息。 您可以根据您的特定需求扩展功能。
关于作者
瓦拉德·瓦拉达拉扬 是 AWS 数字原生企业 (DNB) 客户的值得信赖的顾问和现场首席技术官。 他帮助他们使用 AWS 产品和服务大规模设计和构建创新解决方案。 Varad 感兴趣的领域是 IT 战略咨询、架构和产品管理。 工作之余,Varad 喜欢创意写作、与家人和朋友一起看电影以及旅行。
- :具有
- :是
- :不是
- $UP
- 1
- 10
- 100
- 11
- 12
- 17
- 19
- 22
- 23
- 33
- 7
- 8
- 9
- a
- 对,能力--
- 关于
- ACCESS
- 无障碍
- 访问
- 账号管理
- 添加
- 额外
- 顾问
- 后
- 再次
- AI
- 援助
- 单
- 替代品
- 尽管
- Amazon
- Amazon API网关
- 亚马逊波莉
- 亚马逊网络服务
- an
- 和
- 动画
- 另一个
- 任何
- API
- 应用领域
- 应用领域
- 的途径
- 方法
- 适当
- 架构
- 保健
- 地区
- 排列
- AS
- At
- 音频
- 可使用
- 头像
- 避免
- 等待
- AWS
- AWS Lambda
- AWS步骤功能
- 背部
- 基于
- BE
- 因为
- 开始
- 作为
- 除了
- 博客
- 书籍
- 都
- 分支机构
- 浏览器
- 建立
- 企业
- 按键
- by
- 呼叫
- 呼叫
- CAN
- 能力
- 能力
- 例
- 一定
- 可能性
- 特点
- 字符
- 聊天机器人
- 聊天机器人
- 程
- 客户
- 码
- 结合
- 流程条件
- 结合
- 考虑
- 安慰
- 咨询
- 包含
- 内容
- 继续
- 谈话
- 转化
- 兑换
- 协调
- 核心
- 相应
- 创建信息图
- 创建
- 创建
- 创造
- 创意奖学金
- 首席技术官
- 电流
- 合作伙伴
- 演示
- 根据
- 部署
- 详情
- 发达
- 研发支持
- 不同
- 数字
- 直接
- DNB
- do
- 文件
- 不会
- 完成
- 别
- 动态
- 动态
- 每
- 此前
- 教育的
- 使
- 结束
- 端点
- 结束
- 订婚
- 进入
- 整个
- 错误
- 事件
- 所有的
- 例子
- 例子
- 裸露
- 延长
- 家庭
- 专栏
- 少数
- 部分
- 字段
- 文件
- 档
- 找到最适合您的地方
- 完
- 遵循
- 以下
- 针对
- 申请
- 格式
- 发现
- 朋友
- 止
- 前
- 前端
- 功能
- 功能
- 功能
- 网关
- 生成
- 产生
- 产生
- GitHub上
- 给
- 给
- Go
- 民政事务总署
- 处理
- 手柄
- 有
- he
- 听力
- 帮助
- 近期亮点
- 突出
- 突出
- 托管
- HTML
- HTTP
- HTTPS
- i
- ID
- 身分
- if
- 图片
- in
- 包括
- 包含
- 表示
- 信息
- 创新
- 输入
- 内
- 即食类
- 代替
- 说明
- 兴趣
- 有趣
- 成
- 所调用
- IT
- 它的
- JavaScript的
- JSON
- 键
- 知道
- 语言
- 语言
- 大
- 学习用品
- 学习
- 长度
- 让
- 自学资料库
- Line
- 链接
- 小
- 长
- 机
- 机器学习
- 制成
- 颠覆性技术
- 许多
- 标记
- 提到
- ML
- 修改
- 更多
- 电影
- 多
- 音乐
- 本地人
- 需求
- 需要
- 全新
- 新
- 下页
- 对象
- 对象
- 获得
- of
- 抵消
- on
- 一
- or
- 其他名称
- 我们的
- 输出
- 产量
- 学校以外
- 并行
- 部分
- 员工
- 演出
- 施行
- 允许
- 地方
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 播放
- 播放
- 播放机
- 帖子
- 当下
- 呈现
- 以前
- 先前
- 处理
- 产品
- 产品管理
- 生产
- 核心产品
- 承诺
- 承诺
- 提供
- 优
- 规定
- 目的
- 急速
- 实时的
- 释放
- 相应
- 资源
- 响应
- 导致
- 回报
- 回报
- 健壮
- 运行
- s
- 同
- 鳞片
- 发送
- 句子
- 系列
- 服务
- 特色服务
- 集
- 套数
- 显示
- 显示
- 作品
- 侧
- 简易
- 同时
- 方案,
- 解决方案
- 来源
- 源代码
- 说话
- 具体的
- 言语
- 说
- 堆
- 开始
- 启动
- 州/领地
- 步
- 步骤
- 存储
- 商店
- 存储
- 策略
- 流
- 流
- 串
- 这样
- 符号
- 同步
- 行李牌
- 任务
- 模板
- 文字转语音
- 这
- 国家
- 其
- 他们
- 博曼
- Free Introduction
- 通过
- 次
- 时控
- 时
- 时间戳
- 至
- 翻译
- 旅游
- 信任
- 尝试
- 原来
- 二
- 类型
- 理解
- 独特
- 网址
- us
- 使用
- 用过的
- 用户
- 用户
- 使用
- 运用
- 折扣值
- 价值观
- 版本
- 是
- 观看
- 方法..
- we
- 卷筒纸
- Web应用程序
- Web服务
- 您的网站
- 网站
- 欢迎进入
- 什么是
- ,尤其是
- 这
- 而
- WHO
- 全
- Word
- 工作
- 将
- 写作
- 完全
- 您一站式解决方案
- 和风网