写点什么

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:53853
用户头像

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

关注

评论

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

git clone开启云上AI开发

华为云开发者联盟

人工智能 云计算 华为云 企业号十月 PK 榜

博客马拉松|和 OpenMLDB 一路向前

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

报名中!阿里云、统信软件、西安邮电等多位专家教授畅谈eBPF和Linux的硬核技能 | 2022云栖大会

OpenAnolis小助手

阿里云 开源 统信软件 龙蜥操作系统峰会 eBPF&Linux

基于 OpenMLDB 的联邦学习方案被国际数据挖掘学术会议 CIKM 录取

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

选对方法,窜货不再是棘手难题!

旺链科技

区块链 溯源 产业区块链 企业号十月PK榜 VoneTracer

横空出世,智见未来,戴尔Latitude 9430傲视群雄

科技热闻

Go语言入门01—数据类型

良猿

Go golang 10月月更

搞定PC生产力,戴尔OptiPlex 7000系列助力办公体验再升级

科技热闻

极客时间运维进阶训练营第一周作业

忙着长大#

极客时间

大数据培训技术学费是多少

小谷哥

线下技术培训班怎么选择比较好?

小谷哥

北京前端技术培训机构怎么样?

小谷哥

EMQ走进富士康,探讨新生态模式下智能制造与智能汽车基础架构的未来

EMQ映云科技

车联网 物联网 IoT emqx 10月月更

分布式ID生成服务的技术原理和项目实战

百度Geek说

数据库 redis 分布式 企业号十月 PK 榜

得物API一站式协作平台探索与落地

得物技术

架构 数据分类 API Mock 10月月更

好文分享 | 记一次Oracle12c数据库SQL短暂缓慢问题分析

墨天轮

数据库 oracle 性能优化 征文投稿

npm 新型定时攻击或导致软件供应链安全风险

SEAL安全

npm 软件供应链攻击

web前端技术培训的就业前景

小谷哥

北京哪家web前端培训班比较好

小谷哥

OpenHarmony轻松玩转GIF数据渲染

OpenHarmony开发者

OpenHarmony

跑批为什么这么难

陈橘又青

嵌入式 Linux 入门(一、Linux 基本介绍及文件结构)

矜辰所致

Linux 10月月更 文件结构

Baklib|打造属于您自己的企业维基

Baklib

产品 效率工具 企业 wiki 产品文档

IM跨平台技术学习(五):融云基于Electron的IM跨平台SDK改造实践总结

JackJiang

火力全开-Precision 7670触顶性能天花版

科技热闻

快速体验React开发基础入门指南

CoderBin

前端 框架学习 #web react redux 10月月更

即刻报名|金融业传统 OLAP 升级及精细化运营实践

Kyligence

OLAP 数据驱动

.NET开发者转型AI?只需要学会这个工具!

博文视点Broadview

在云南,我用华为云AI开发出千万级用户的应用

华为云开发者联盟

人工智能 程序员 华为云 文字识别 企业号十月 PK 榜

基于炼丹神器深度学习下的生命科学冷冻电镜单细胞基因分析的解决方案

GPU算力

Baklib|企业知识管理的一些建议分享

Baklib

效率工具 知识管理 企业 知识 知识库

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