开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

Amazon Transcribe Streaming 现在支持 WebSocket

  • 2019-09-25
  • 本文字数:2335 字

    阅读完需:约 8 分钟

Amazon Transcribe Streaming 现在支持 WebSocket

我喜欢 Amazon Transcribe 这样的服务。它们是像魔术一样,足以激发我的想象力的未来科技。我们的语音识别功能可以自动、准确、实时识别各种语言和口音,非常神奇。这样的使用案例非常多,而且几乎所有使用案例都很有趣。目前可用的 Amazon Transcribe Streaming API 可以通过 HTTP/2 流使用。今天,我们将添加 WebSocket 作为另一种集成选项,助您在构建内容时实现实时语音功能。


在本博文中,我们将在浏览器中仅使用客户端 JavaScript 实时转录语音。但在构建之前,我们需要先打好基础。我们将回顾所需的 Amazon Transcribe、WebSocket 和 Amazon Transcribe Streaming API 相关信息,以便概要说明本演示。有关更多详细信息,请查看 Amazon Transcribe 文档。


如果您想了解实际应用,可以直接观看演示,但是我建议您先快速浏览一下这篇博文。

什么是 Amazon Transcribe?

Amazon Transcribe 应用机器学习模型将音频中的语音转录为文本。Amazon Transcribe 最强大的功能之一是能够实时转录音频。目前,此功能可通过 HTTP/2 流使用。今天,我们宣布推出使用 WebSocket 连接到 Amazon Transcribe 的功能。


对于实时转录,Amazon Transcribe 目前支持英式英语 (en-GB)、美式英语 (en-US)、法语 (fr-FR)、加拿大法语 (fr-CA) 和美式西班牙语 (es-US)。

什么是 WebSocket?

WebSocket 是在 TCP 基础上构建的协议,与 HTTP 类似。虽然 HTTP 非常适合短期请求,但一直以来却不适用于处理需要持久实时通信的场景。HTTP 连接通常在消息结尾关闭,而 WebSocket 连接保持打开状态。这意味着可以双向发送消息,而无需通过握手和协商连接来增加带宽或延迟。WebSocket 连接为全双工通信,这意味着服务器和客户端可以同时传输数据。这种连接还是专门为跨域使用设计的,因此不需要像使用 HTTP 那样执行繁琐的跨域资源共享 (CORS) 任务。


HTTP/2 流解决了 HTTP 在实时通信中遇到的许多问题,推出的第一个 Amazon Transcribe Streaming API 使用的就是 HTTP/2。WebSocket 支持向更大范围的受众开放 Amazon Transcribe Streaming,以便具备 WebSocket 集成或知识的客户更轻松地进行集成。

Amazon Transcribe Streaming API 工作原理

授权


首先,我们要授予 IAM 用户使用 Amazon Transcribe Streaming WebSocket 的权限。在 AWS 管理控制台中,将以下策略附加到用户:


{    "Version": "2012-10-17",    "Statement": [        {            "Sid": "transcribestreaming",            "Effect": "Allow",            "Action": "transcribe:StartStreamTranscriptionWebSocket",            "Resource": "*"        }    ]}
复制代码

身份验证

Transcribe 使用 AWS 签名版本 4 对请求进行身份验证。对于 WebSocket 连接,请使用预签名 URL,其中包含所有必需信息,并在 URL 中作为查询参数传递。这为我们提供了经过身份验证的终端节点,可用于建立 WebSocket。

必需参数

所有必需参数都包含在预签名 URL 中,是查询字符串的一部分。它们是:


  • language-code:语言代码。en-US、en-GB、fr-FR、fr-CA、es-US 中的一个。

  • sample-rate:音频的采样率,以 Hz 为单位。对于 en-US 和 es-US,采样率最高为 16000,对于其他语言,最高为 8000。

  • media-encoding:目前仅支持 pcm。

  • vocabulary-name:Amazon Transcribe 允许您为希望在数据中看到的不常见或独特的字词定义自定义词汇。要使用自定义词汇,请在此处进行引用。

音频数据要求

开始发送数据之前,我们需要了解一些事项。首先,Transcribe 需要音频编码为 PCM 数据。数字音频文件的采样率与捕获音频的质量有关。采样率为每秒检查模拟信号以生成数字信号的次数 (Hz)。对于高质量数据,建议采用 16000Hz 或更高的采样率。对于低质量音频(例如电话通话),请使用采样率 8000Hz。目前,美式英语 (en-US) 和美式西班牙语 (es-US) 最高支持 48000Hz 的采样率。其他语言最高支持 16000Hz 的采样率。


在我们的演示中,文件 lib/audioUtils.js 包含 downsampleBuffer() 函数(降低浏览器的传入音频字节的采样率)和 pcmEncode() 函数(获取原始音频字节并将其转换为 PCM)。

请求格式

我们以适当的采样率将音频编码为 PCM 数据后,需要将其封装在信封中以便通过 WebSocket 连接发送。每个消息由三个标头组成,后跟消息正文中经过 PCM 编码的音频字节。然后,将整个消息编码为二进制事件流消息并发送。如果您以前使用过 HTTP/2 API,我认为有一个不同之处让使用 WebSocket 变得更简单一些,那就是您不需要对发送的每个音频数据块进行加密签名。

响应格式

我们收到的消息采用相同的常规格式:二进制编码的事件流消息,包含三个标题和一个正文。但是消息正文包含一个 Transcript 对象,而不是音频字节。确定音频中的自然停止点之前,返回部分响应。有关如何设置此响应格式的详细信息,请参阅文档并查看 main.js 中的 handleEventStreamMessage() 函数。

观看演示!

现在我们已经了解一些背景,下面我们尝试执行演示。我已使用 AWS Amplify 控制台进行了部署 – 可以看一看,或按按钮部署您自己的副本。输入您之前为 IAM 用户授予的访问 ID 和密钥,点击“开始转录”按钮,开始对着麦克风讲话。


GitHub 上提供了完整的项目。最重要的文件是 lib/main.js。该文件定义了所有必需的依赖项,在 index.html 中将按钮和表单字段连接起来,访问麦克风流,并将数据通过 WebSocket 推送到 Transcribe。代码已添加了详尽注释,应该很容易理解,但如果您有问题,欢迎随时在 GitHub 存储库上提交问题,我很乐意为您提供帮助。我要特别感谢 Transcribe 团队的软件开发工程师 Karan Grover,感谢他提供了此演示所需的基础代码。


本文转载自博客 AWS。


原文链接:


https://amazonaws-china.com/cn/blogs/china/amazon-transcribe-streaming-now-supports-websockets/


2019-09-25 15:53780
用户头像

发布了 1855 篇内容, 共 123.8 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

企业不想走弯路,不如试试低代码开发

引迈信息

低代码 低代码开发 JNPF

亿级用户中心的设计与实践

做梦都在改BUG

Java 服务架构 亿级流量 用户中心

ElasticSearch必知必会-Reindex重建索引

京东科技开发者

elasticsearch 索引 ES 集群 企业号 3 月 PK 榜

面面俱到!四面阿里拿offer后,才发现师哥给的面试笔记有多强大

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

喜讯|百度入选“移动互联网APP产品安全漏洞治理”优秀案例

百度安全

Polygon马蹄链质押DApp开发合约部署案例

薇電13242772558

智能合约 dapp

Blazor在IoT领域的前端实践 @.NET开发者日

MASA技术团队

.net blazor MASA MAUI

从零开始搭建一个通用的业务技术架构,这套架构 有点牛逼!

程序知音

Java 程序员 编程语言 后端

从稀疏表征出发、召回方向的前沿探索

百度Geek说

召回 预训练模型 稀疏矩阵 企业号 3 月 PK 榜

直播教学!20 分钟开发可视化「智能门铃」丨RTE 开发实战课 • 第一期

声网

最佳实践 直播 RTC 声网

AntDB数据库助力中国移动华南中心计费项目

亚信AntDB数据库

AntDB 国产数据库 aisware antdb AntDB数据库 企业号 3 月 PK 榜

SpringBoot项目就连创建目录都让人抓狂

做梦都在改BUG

Java Spring Boot 框架

业务架构那点事(2)如何通过高层访谈获取企业战略信息?

涛哥 数字产品和业务架构

业务架构 访谈

3D摄影棚布光工具Set A Light 3D Studio

Rose

Mac软件 Set A Light 3D Studio 3D摄影棚布光工具

可插拔组件设计机制—SPI

京东科技开发者

spi Java】 JavaSPI 企业号 3 月 PK 榜

真的有那么丝滑吗?面试阿里(Java岗)从投简历到面试再到入职

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

VPN客户端Shimo mac版使用教程:如何创建新的 VPN 帐户?

Rose

vpn mac系统 Shimo下载 Shimo教程

解决 Parallels Desktop 虚拟机不能连网的问题

理理

Parallels Desktop 虚拟机 PD虚拟机不能联网 PD常见问题

企业如何构建内部开发者平台?

SEAL安全

IdP 平台工程 企业号 3 月 PK 榜 内部开发者平台

使用Assembly打包和部署Spring Boot工程

做梦都在改BUG

Java spring Spring Boot assembly 框架

金三突击面试,收获6个Offer,原来面试还能这么简单!

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

Mac教程:如何开启任何来源选项

理理

Mac 苹果电脑 任何来源

NineData x 阿里云 正式上线

NineData

数据库 阿里云 数据迁移 数据管理 NineData

交易系统之数据库弱依赖解决方案

京东科技开发者

数据库 高并发 灾备 db 企业号 3 月 PK 榜

OPPO、京东云 loT 项目数据架构改造,数据处理痛点这样破解

TDengine

tdengine 数据架构 时序数据库 用户案例 loT

科技助力金融转型 阿里云联合中国信通院在京举办未来金融思享会

阿里云云效

DevOps 数字化转型 金融 BizDevOps 业技融合

URule规则引擎

规则引擎 java

Last Week in Milvus

Zilliz

Milvus Zilliz 向量数据库

React数字滚动组件 numbers-scroll

观纵科技

JavaScript 前端监控 React

Acrobat Pro DC 2023发布,有哪些新的改进?

Rose

adobe pdf编辑器 Acrobat Pro DC 2023

如何在 macOS 中互换 Control 和 Command 键

理理

mac教程 Control键 Command 键

Amazon Transcribe Streaming 现在支持 WebSocket_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章