搜索
首页科技周边人工智能如何利用Node.js将语音转换为文本

译者 | 李睿

审校 | 孙淑娟

本文将简要概述语音识别技术及其常见应用,并演示一个免费的语音到文本的API,该API可用于以MP3和WAV文件格式转录音频。这个演示将包括逐步指令使用“即运行Node.js代码”示例调用这个API。  

如何利用Node.js将语音转换为文本

语音识别技术的概述  

人们通常将语音识别技术视为当代技术领域的一个相对较新的补充,而这只是一部分事实。语音识别技术已经存在了半个多世纪,从上世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中文网其他相关文章!

声明
本文转载于:51CTO.COM。如有侵权,请联系admin@php.cn删除
10 GPT-4O图像生成会提示今天尝试!10 GPT-4O图像生成会提示今天尝试!Apr 24, 2025 am 10:26 AM

AI世界中发生了绝对野生的事情。 Openai的本地形象生成现在很疯狂。我们正在谈论令人jaw目结舌的视觉效果,可怕的细节和抛光的输出

用帆板编码的氛围指南用帆板编码的氛围指南Apr 24, 2025 am 10:25 AM

毫不费力地将您的编码愿景带入Codeium's Windsurf,这是您的AI驱动的编码伴侣。 Windsurf简化了整个软件开发生命周期,从编码和调试到优化,将过程转换为INTU

使用RMGB v2.0探索图像背景删除使用RMGB v2.0探索图像背景删除Apr 24, 2025 am 10:20 AM

Braiai的RMGB v2.0:强大的开源背景拆卸模型 图像分割模型正在彻底改变各个领域,而背景删除是进步的关键领域。 Braiai的RMGB v2.0是最先进的开源M

评估大语模型中的毒性评估大语模型中的毒性Apr 24, 2025 am 10:14 AM

本文探讨了大语言模型(LLM)中的毒性至关重要问题以及用于评估和减轻它的方法。 LLM,为从聊天机器人到内容生成的各种应用程序提供动力,需要强大的评估指标,机智

Rag Reranker的综合指南Rag Reranker的综合指南Apr 24, 2025 am 10:10 AM

检索增强发电(RAG)系统正在改变信息访问,但其有效性取决于检索到的数据的质量。 这是重读者变得至关重要的地方 - 充当搜索结果的质量过滤器,以确保仅确保

如何使用Gemma 3&Docling构建多模式抹布?如何使用Gemma 3&Docling构建多模式抹布?Apr 24, 2025 am 10:04 AM

该教程通过在Google Colab中构建精致的多式联运检索一代(RAG)管道来指导您。 我们将使用Gemma 3(用于语言和视觉),文档(文档转换),Langchain等尖端工具

可扩展AI和机器学习应用的射线指南可扩展AI和机器学习应用的射线指南Apr 24, 2025 am 10:01 AM

雷:扩展AI和Python应用程序的有力框架 Ray是一个革命性的开源框架,旨在轻松扩展AI和Python应用程序。 它的直观API使研究人员和开发人员可以通过其代码过渡

如何将OpenAI MCP集成用于建筑代理?如何将OpenAI MCP集成用于建筑代理?Apr 24, 2025 am 09:58 AM

OpenAI通过支持人类的模型上下文协议(MCP)来涵盖互操作性,这是一种开源标准,简化了与不同数据系统的AI助手集成。这项合作为AI应用程序奠定了一个统一的框架

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),