2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

腾讯云5G边缘计算拿下Linux基金会奖项,降低40%云游戏网络时延

科技热闻

十问 RocketMQ:十年再出发,到底有何不同?

阿里巴巴中间件

阿里云 RocketMQ 云原生 中间件

想了解Python中的super 函数么

华为云开发者联盟

Python 开发 企业号九月金秋榜

设计模式的艺术 第十九章迭代器设计模式练习(设计一个逐页迭代器,每次可返回指定个数(一页)元素,并将该迭代器用于对数据进行分页处理)

代廉洁

设计模式的艺术

《数字经济全景白皮书》证券数字化篇 重磅发布!

易观分析

金融 证券

助你成为专业终端人,阿里巴巴第三届终端练习生计划开启报名!

阿里技术

前端 移动开发

13th 发布在即,一文带你回顾Intel 12th Core

鼎道智联

英特尔 13th处理器 酷睿处理器 12th处理器

你还不知道什么是Git?

翼同学

git 开源 版本管理 9月月更

《MySQL自传》

MySQL 数据库 玖章算术 叶正盛 斗佛

从实例出发,算力网络到底是如何编排的?

鲸品堂

算力网络

如何用AscendCL的接口开发网络模型推理场景下应用?

华为云开发者联盟

人工智能 企业号九月金秋榜

技术科普:如何应用视觉显著性模型优化远控编码算法?

贝锐

算法 编码器 视觉策略 远程控制 向日葵

别搞Java面试八股文背诵版了! 真卷不动了...

退休的汤姆

Java 程序员 面经 社招 秋招

复享光学发布ZURO系列光谱仪 助力中国半导体产业国产化

硬科技星球

企业知识管理平台在企业中扮演什么样的角色?

Baklib

知识管理

wallys IPQ8072 4x4 2.4G & 5G /QCN9074 11ax 4x4 6G M.2

wallys-wifi6

QCN9074 IPQ8072

低代码开发平台的功能有哪些?低代码“功能清单”一览

优秀

低代码 企业级低代码平台

开发NFT数字藏品平台:定制搭建NFT系统

开源直播系统源码

NFT 数字藏品 数字藏品开发 数字藏品系统

天呐,我居然可以隔空作画了

华为云开发者联盟

人工智能 华为云 企业号九月金秋榜

首次全面解析云原生成熟度模型:解决企业「诊断难、规划难、选型难」问题

阿里巴巴中间件

阿里云 中间件 成熟度

如何高效解决 C++内存问题,Apache Doris 实践之路|技术解析

SelectDB

c++ 大数据 数据分析 Doris 企业号九月金秋榜

我们总结了 3 大使用建议,并首次公开 Nacos3.0 规划图 | Nacos 开源 4 周年

阿里巴巴中间件

阿里云 开源 微服务 云原生 nacos

LeaRun低代码平台 助力中小企业快速开发MES系统

力软低代码开发平台

如何守护数据安全? 这里有一份RDS灾备方案为你支招

京东科技开发者

数据库 安全 灾备 主机安全 RDS

共探人工智能新发展,AICON 2022 即将重磅开启

极客天地

经验分享|分享搭建在线帮助中心的方法

Baklib

百万奖池角逐,华为云IoT边缘带你看懂“边缘计算开发者大赛”

华为云开发者联盟

云计算 物联网 华为云 企业号九月金秋榜

如何梳理企业流程管理?

优秀

业务流程管理 主业务流程梳理

JavaScript 装饰器介绍

掘金安东尼

前端 9月月更

Redis 主从复制演进历程与百度智能云的实践

Baidu AICLOUD

数据库 redis 底层原理

开源密码管理器更安全吗?(1)

神锁离线版

开源 数据安全 密码管理 开源安全 开源软件

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