如何利用Node.js将语音转换为文本
译者 | 李睿
审校 | 孙淑娟
本文将简要概述语音识别技术及其常见应用,并演示一个免费的语音到文本的API,该API可用于以MP3和WAV文件格式转录音频。这个演示将包括逐步指令使用“即运行Node.js代码”示例调用这个API。
语音识别技术的概述
人们通常将语音识别技术视为当代技术领域的一个相对较新的补充,而这只是一部分事实。语音识别技术已经存在了半个多世纪,从上世50年代初的一些先驱公司开发的功能有限的数字/文字识别系统开始。,尽管语音识别技术有着悠久的历史,过去十年来在智能消费类设备领域得到了广泛应用,但语音识别仍然是当今市场上较为抽象的技术之一。这是因为各种语音识别技术都跨越了计算机科学、计算语言学和数学/统计学等领域,需要各个领域的大量输入才能获得准确的语音到文本结果。
在(非常)高的级别上,为了让语音识别技术实施其最基本的任务,必须首先对给定的音频文件进行预处理以优化其质量。然后将其分解为更小的分量信号并进行排序。这些经过排序的信号必须足够小,以便数学模型可以将其与某些音素(结合在一起生成单词的特定于语言的声音;例如“eeee”或“ahhh”噪音)匹配,这有助于与该语言中的短语或句子进行比较。归根结底,语音识别服务的目标很简单:尽可能准确地猜测录制的音频中使用了哪些单词,并不断改进和扩展其语言数据库,直到猜测达到可接受的准确性水平。
这种复杂且固有的有限信息猜测系统甚至使最基本的语音识别服务也依赖于语言和方言,因为它们依赖于音频质量。语言、口音、词汇的变化以及背景噪音的存在都会产生边界,这对于单个语音到文本模型很难克服。此外,这种复杂性反映了一个基本事实,即语音识别服务是高度资源密集型的,依赖于庞大并且不断增长的参考数据集进行语音比较,需要相当大的计算能力才能有效利用这些数据集。这些因素共同使得训练一个全新的语音到文本模型成为一项艰巨的任务。
语音识别的应用
语音识别在很大程度上是由于在更大的技术市场上出现了一些无处不在的创新,尤其是近乎无限的云计算数据存储解决方案的增长,语音识别已成为人们现在在日常生活中认识到的高效而有用的消费者服务。人们可以直接采用手机、固定电话和办公室设备进行沟通和对话,以自动查询所需要的信息,记录和组织自己的想法供以后使用,以及听到大声宣读的短信,等等。
目前,消费者应用只是语音识别技术应用的冰山一角。语音识别的许多相互关联的过程的进步创造了扩展音频转录输出的机会,并鼓励越来越多的商业应用程序进行语音到文本转换。在人们的周围有很多这样的例子。许多虚拟会议平台现在使用语音识别服务(通常是实时的)对团队演示文稿进行转录,生成的文本可以方便地存储给任何可能错过会议的人。聊天机器人利用语音识别帮助人们在手机上进行选择,这些对话中转录的音频可以用于其他用途:为未来更好的客户服务实践提供信息。人们可能参加的讲座、访谈、演讲和其他演讲活动可以通过个人设备进行录制和转录,以消除人工抄录笔记的工作。例如,这些转录可以通过自然语言处理(NLP)模型进行处理,以从转录文本中寻找以前看不到(或听不到)的见解。
值得一提的是,实用的内容调节和搜索引擎优化功能也可以从可扩展的语音到文本分析服务中获得——而这次是在企业数据存储环境中获得。考虑到大多数客户端上传内容的不可靠性,自动转录上传到网站的音频文件可以轻松调节父级音频文件的语言,以确保其对所有听众安全(例如查看是否包含极有争议的语言、仇恨言论或任何形式的对个人或团体的骚扰)。这显著减少了内容审核人员的工作量,并提高了其效率。这些相同的转录文件还可以用于生成有用的关键字,从而使音频文件更容易从大型数据库中搜索和检索。
示范:CloudMersive语音到文本API
将语音识别作为一项服务加以利用的一种方法是通过包含Cloudmersive语音到文本API。该API目前支持MP3或WAV格式,并采用深度学习人工智能模型提供高精度的音频转录。其API参数非常简单,只需要输入音频文件和Cloudmersive API密钥(API密钥可以通过在其网站上注册一个免费帐户获得,该帐户每月最多生成800个API调用)。以下将演示如何使用互补Node.js代码段构建API调用。
第一步是安装Node.js SDK。这可以通过运行以下命令来做到:
<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">npm</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">install</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cloudmersive</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">-</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">speech</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">-</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">api</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">-</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">client</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">save</span>
另外,可以将以下这一代码段添加到其软件包中。
<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"dependencies"</span>: {<br><span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"cloudmersive-speech-client"</span>: <span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"^1.1.5"</span><br>}
在安装完成之后,可以使用以下代码块构建API调用。此时,需要确保已经准备好以下参数:
(1)MP3或WAV音频文件。
(2)CloudMersive API密钥。
<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">var</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">CloudmersiveSpeechApiClient</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">require</span>(<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'cloudmersive-speech-api-client'</span>);<br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">var</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">defaultClient</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">CloudmersiveSpeechApiClient</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">ApiClient</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">instance</span>;<br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">// Configure API key authorization: Apikey</span><br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">var</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Apikey</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">defaultClient</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">authentications</span>[<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'Apikey'</span>];<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Apikey</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">apiKey</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'YOUR API KEY'</span>;<br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">var</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">apiInstance</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">new</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">CloudmersiveSpeechApiClient</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">RecognizeApi</span>();<br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">var</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">speechFile</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Buffer</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">from</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">fs</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">readFileSync</span>(<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"C:\temp\inputfile"</span>).<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">buffer</span>); <span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">// File | Speech file to perform the operation on.Common file formats such as WAV, MP3 are supported.</span><br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">var</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">callback</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">function</span>(<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">error</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">response</span>) {<br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">if</span> (<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">error</span>) {<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">console</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">error</span>(<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">error</span>);<br>} <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">else</span> {<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">console</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">log</span>(<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'API called successfully. Returned data: '</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">+</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>);<br>}<br>};<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">apiInstance</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recognizeFile</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">speechFile</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">callback</span>);
这样就完成了API的构建,无需进一步的代码段。成功的API呼叫将返回包含API转录结果的Textresult字符串。务必记住的是,输入文件中的音频质量将对API创建准确转录的能力产生重大影响,因此建议在实施这一操作之前尽可能预处理和优化音频质量。
原文标题:How to Leverage Speech-to-Text With Node.js,作者:Brian O'Neill
以上是如何利用Node.js将语音转换为文本的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

微软最新的操作系统Windows11也提供了与Windows10中类似的语音识别选项。值得注意的是,您可以离线使用语音识别或通过互联网连接使用它。语音识别使您可以使用语音控制某些应用程序,还可以将文本口述到Word文档中。Microsoft的语音识别服务并未为您提供一整套功能。有兴趣的用户可以查看我们的一些最佳语音识别应用程

我们在这款平台上面是怎么来进行一些语音生成字幕的功能的呢,我们在制作一些视频的是,为了能够更加的有质感,或者是在叙述一些故事的时候,都是需要来添加上我们的字幕,这样大家们也能够更好的读懂上面的一些视频的信息了。也是起到了表达的作用,但是很多用户们对于自动识别语音生成字幕方面都不是非常的了解,不管是在哪一些方位我们都能很轻松的让你们更好的进行多方面的一些选择都是可以的,如果你也喜欢的话,一定不能够错过对于一些功能方面的技巧等,都是需要我们来慢慢的了解的,赶紧和小编一起来看看吧,不要错过了。

与Windows10一样,Windows11计算机具有文本转语音功能。也称为TTS,文本转语音允许您用自己的声音书写。当您对着麦克风讲话时,计算机会结合文本识别和语音合成在屏幕上写出文本。如果您在阅读或写作时遇到困难,这是一个很好的工具,因为您可以在说话时执行意识流。你可以用这个方便的工具克服作家的障碍。如果您想为视频生成画外音脚本、检查某些单词的发音或通过Microsoft讲述人大声听到文本,TTS也可以为您提供帮助。此外,该软件擅长添加适当的标点符号,因此您也可以学习良好的语法。语音

基于无阻塞、事件驱动建立的Node服务,具有内存消耗低的优点,非常适合处理海量的网络请求。在海量请求的前提下,就需要考虑“内存控制”的相关问题了。 1. V8的垃圾回收机制与内存限制 Js由垃圾回收机

1、进入控制面板,找到【语音识别】选项,并将之打开。2、待语音识别页面弹出后,选取【高级语音选项】。3、最后,在语音属性窗口内的用户设置一栏中取消关于【启动时运行语音识别】的勾选。

如何使用WebSocket和JavaScript实现在线语音识别系统引言:随着科技的不断发展,语音识别技术已经成为了人工智能领域的重要组成部分。而基于WebSocket和JavaScript实现的在线语音识别系统,具备了低延迟、实时性和跨平台的特点,成为了一种被广泛应用的解决方案。本文将介绍如何使用WebSocket和JavaScript来实现在线语音识别系

声音语音识别中的音频质量问题,需要具体代码示例近年来,随着人工智能技术的快速发展,声音语音识别(AutomaticSpeechRecognition,简称ASR)得到了广泛应用和研究。然而,在实际应用中,我们往往会面临音频质量问题,这直接影响了ASR算法的准确性和性能。本文将重点讨论声音语音识别中的音频质量问题,并给出具体的代码示例。音频质量对于声音语音

大家好,我是风筝两年前,将音视频文件转换为文字内容的需求难以实现,但是如今只需几分钟便可轻松解决。据说一些公司为了获取训练数据,已经对抖音、快手等短视频平台上的视频进行了全面爬取,然后将视频中的音频提取出来转换成文本形式,用作大数据模型的训练语料。如果您需要将视频或音频文件转换为文字,可以尝试今天提供的这个开源解决方案。例如,可以搜索影视节目的对话出现的具体时间点。话不多说,进入正题。Whisper这个方案就是OpenAI开源的Whisper,当然是用Python写的了,只需要简单安装几个包,然
