【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

发布了 1828 篇内容, 共 89.9 次阅读, 收获喜欢 73 次。

关注

评论

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

为什么马斯克和奥特曼都想重振加密货币?

树上有只程序猿

人工智能 AGI

小灯塔系列-中小企业数字化转型系列研究-ERP测评报告

向量智库

【华秋干货铺】PCB布线技巧升级:高速信号篇

华秋电子

以指标驱动,保险、零售、制造企业开启精益敏捷运营的新范式

Kyligence

数据分析 数智化

“科创中国”青百会轮值主席吴甜:以大语言模型为代表的AI将引发产业变革

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

小灯塔系列|中小企业数字化转型系列研究——云存储测评报告

向量智库

HPC中常见的调度器介绍

天翼云开发者社区

云计算 HPC 高性能计算

天翼云加入云原生安全实验室,推进行业标准制定和生态建设!

天翼云开发者社区

云计算 云原生

PoseiSwap:基于 Nautilus Chain ,构建全新价值体系

西柚子

CentOS7上安装Squid代理详细教程【附带使用教程】

百度搜索:蓝易云

云计算 Linux centos 运维 squid

瓴羊QuickBI的数据门户功能可以大大简化和提高数据分析的效率

小偏执o

数据分析的提升,通过领羊QuickBI数据功能可以简化

夏日星河

PoseiSwap:基于 Nautilus Chain ,构建全新价值体系

威廉META

深入探究DDD领域建模的方法:从概念到实践

高端章鱼哥

微服务 领域驱动设计 DDD 单体

小灯塔系列|中小企业数字化转型系列研究——IM测评报告

向量智库

但因热爱,愿迎万难,OpenTiny Vue Playground正式上线🎉

OpenTiny社区

开源 Vue 前端

PoseiSwap:基于 Nautilus Chain ,构建全新价值体系

股市老人

【报名开启】AIGC 交响乐奏起!亚马逊云科技开发者社区嘉年华 2023 上海站报名通道开启!

亚马逊云科技 (Amazon Web Services)

AI 科技

PoseiSwap:基于 Nautilus Chain ,构建全新价值体系

BlockChain先知

高效构建 vivo 企业级网络流量分析系统

vivo互联网技术

流量采集 流量监控 sFlow

zos静态网站托管的使用和原理

天翼云开发者社区

静态网站托管 静态网站

PoseiSwap:基于 Nautilus Chain ,构建全新价值体系

EOSdreamer111

Base链怎么快速发币?2分钟创建一个土狗币

加密先生

发币教学 一键发币

罗拉IP服务关停?哪些靠谱的IP代理商可以作为替代方案?"

摘星星的猫

IP 网络

Spring Cloud实战案例 │ Apollo和Zuul的整合开发

TiAmo

Spring Cloud Apollo Zuul

基于Kubernetes环境的高扩展机器学习部署利器——KServe

高端章鱼哥

机器学习 Kubernetes ML

PoseiSwap:基于 Nautilus Chain ,构建全新价值体系

鳄鱼视界

案例上榜 | Kyligence x 中国平安人寿北斗指标设计平台

Kyligence

数据分析 数智化

CentOS7查看开放端口命令、查看端口占用情况和开启端口命令、杀掉进程等命令教程。

百度搜索:蓝易云

云计算 Linux centos 运维 端口

基于分级安全的OpenHarmony架构设计

OpenHarmony开发者

OpenHarmony

聊聊 Docker 和 Dockerfile

互联网工科生

Docker 容器 Dockerfile

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