使用语音到文本API进行React中的语音识别

利润;博客;资源;其他资源;语音文本转换API;使用语音到文本API进行React中的语音识别

本文详细介绍了如何编写一个使用艾牧师使用React的语音到文本API。该网络应用程序将允许用户提交一个音频/视频文件,由艾牧师API。这个网络应用程序还允许用户使用他们的麦克风流音频,并从Rev.ai API接收实时语音到文本的转录。未来的艾牧师API将被称为API。

本文详细介绍了如何编写一个使用艾牧师使用React的语音到文本API。该网络应用程序将允许用户提交一个音频/视频文件,由艾牧师API。这个网络应用程序还允许用户使用他们的麦克风流音频,并从Rev.ai API接收实时语音到文本的转录。未来的艾牧师API将被称为API。

建筑学

与API的通信依赖于个人的访问令牌,该令牌也链接到支付信息,并可能产生费用。因此,访问令牌应该保密,以防止未经授权的使用。虽然在技术上可以直接从浏览器与api进行通信,但浏览器并不擅长保密。应该避免在浏览器中使用秘密和访问令牌。

服务器用于确保浏览器和API之间的通信安全。浏览器使用HTTP请求和WebSocket消息的组合与服务器通信。这个艾牧师NodeSDK用于与服务器的API通信。服务器还提供了一个webhook端点,当异步作业提交完成时,API可以调用该端点。

使用的第三方库

本文使用了以下第三方库:

  • 反应-应用程序的前端是用React编写的。React是一个JavaScript库,用于创建交互式用户界面。尽管React可以用普通的JavaScript编写,但它也提供了一个JavaScript语法扩展JSX。JSX允许我们用JavaScript编写最终呈现给DOM的HTML元素。
  • RecordRTC -RecordRTC库用于捕获用户的音频,对其进行编码并将其传输到服务器。
  • 顺风CSS-Tailwindcss是一个实用程序优先的CSS框架,用于设计web应用程序前端的样式。
  • ExpressJS-服务器是使用Express web framework在NodeJs中编写的。expressweb框架用于公开前端调用的HTTP端点。
  • 套接字。IO -io库用于在前端和服务器之间提供实时双向通信。
  • 相乘,Multer是一个中间件库,用于处理多部分/表单数据文件上传。

开发工具

以下工具用于开发项目:

  • 积雪-Snowpack是一个前端构建工具,用于将反应代码构建为可由浏览器解释的JavaScript。
  • 诺德蒙-Nodemon是一种开发工具,当工具检测到文件更改时,它会重新启动进程。对于这个项目,Nodemon在开发时通过在某个服务器源文件被更新时重新启动Express服务器来保持服务器代码的更新。
  • 同时——concurrent是一种开发工具,它允许从一个流程控制多个流程。对于这个项目,concurrent在一个进程中控制Snowpack构建进程和Express服务器进程。

环境变量

需要定义以下环境变量:

  • REVAI_ACCESS_TOKEN–rev.ai访问令牌
  • WEBHOOK\u BASE\u URL–rev.ai应向其发送请求的基本URL,表明作业处理已完成
  • 媒体路径–服务器上存储上传媒体文件的路径。

运行服务器

要运行开发服务器,请从命令行运行命令“npm run dev”。此命令将同时用于运行Snowpack build命令和使用Nodemon启动Express服务器。对服务器源代码文件的任何更改都将使用更改重新启动服务器。对前端源的任何更改都将更新,但必须刷新浏览器窗口才能查看更改。

可以通过从命令行运行命令“npm start”来运行生产服务器。

useSocket钩

为了处理react中的Socket.io通信,创建了useSocket自定义挂钩。钩子在第一次创建钩子时就创建了一个与Socket.io的连接。对钩子的后续调用使用相同的连接。此挂钩允许单个组件侦听组件内的套接字消息。

请参见GitHub上的完整源代码

用户界面

用户界面由两个独立的选项卡组成,可以通过选择适当的选项卡头进行切换。

异步选项卡

当选择async选项卡时,将呈现AsyncForm组件。AsyncForm演示了API的异步功能。AsyncForm封装了以下内部组件:

  • 媒体上传器–此组件用于选择要上载并提交到服务器的文件。
  • 媒体播放器-该组件用于显示媒体文件和检索当前作业要加载的标题。
  • TranscriptionViewer–此组件从服务器获取并显示当前作业的转录。仅当设置了作业对象时,才会渲染此组件。

首次呈现AsyncForm时,将显示MediaUploader。首先,用户选择要由API处理的音频或视频文件。单击“提交”按钮后,文件将作为多部分表单数据上载到服务器上的“/api/media”端点。Multer将文件存储在服务器上。作业提交到API时,URL指向上传的媒体文件,同时URL指向指向“/API/job endpoint”的webhook。

请参见GitHub上的完整源代码

当API完成作业处理后,它会向webhook端点发送一个包含处理作业信息的HTTP POST请求。然后,服务器使用WebSocket连接将响应从API发送到浏览器。将状态200返回给API。

请参见GitHub上的完整源代码

当useSocket钩子接收到作业消息时,它将作业对象设置为状态,并重新呈现asyncForm组件。

加载完作业对象后,MediaPlayer会检索标题并将其加载到视频元素中。MediaUploader也被替换为转录查看器。然后,转录查看器检索当前作业的转录并显示它。

流媒体选项卡

选择“流”选项卡后,将渲染StreamingForm组件。StreamingForm组件演示了API的流功能。StreamingForm封装了以下组件:

  • 流线型控制器–该组件控制流的启动和停止。
  • StreamingCaptionViewer–此组件侦听并显示转录套接字消息。

首先,用户单击开始流媒体按钮以启动流媒体会话。单击按钮后,浏览器会向服务器发送请求,以打开与API的流式连接。

StreamingController监听流连接的套接字消息,开始使用RecordRCT库捕获麦克风音频。RecordRTC库将音频编码为wav格式。编码的输出然后通过WebSocket连接流送到服务器。

请参见GitHub上的完整源代码

然后服务器将数据发送到API。然后,API在转录信息被处理时实时发送回转录信息。当服务器从API接收数据并通过WebSocket发送给浏览器时。StreamingCaptionViewer监听通过套接字连接发送的转录,并将其呈现在页面上。

请参见GitHub上的完整源代码

单击“停止流媒体”按钮时,浏览器会向服务器发送请求,以关闭与API的连接。然后,服务器关闭与API的流连接。

为什么要使用Rev AI?

精确

在提供自动化服务时,准确性非常重要。对于ASRs来说,一个关键的准确性测量是字错误率(WER)。WER是用错误数除以总字数来衡量的。错误包括誊写错误的单词、添加的额外单词和遗漏的单词。WER越低,ASR越准确。Rev AI的WER在其竞争对手中最低。

Rev Beats谷歌微软亚马逊

易用性

不需要学习一些新的专有格式。与API交互就像发送HTTP请求一样简单。API以明文或JSON进行响应。

安全

与API的通信在传输和静止时都是加密的。您还可以控制您的数据。可以通过API端点删除数据,也可以从web应用程序创建删除策略。当需要更严格的控制时,本地解决方案允许您在自己的私有实例中运行语音到文本引擎。

定价

前5个小时的语音到文本翻译是免费的,这足以测试API。在此之后,每分钟的语音处理费用为0.035美元,四舍五入到最接近的15秒。一个小时长的音频文件大约需要2.10美元。