如何利用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脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

<p>微軟最新的作業系統Windows11也提供了與Windows10類似的語音辨識選項。 </p><p>值得注意的是,您可以離線使用語音辨識或透過網路連線使用它。語音辨識可讓您使用語音控制某些應用程序,也可以將文字口述到Word文件中。 </p><p>Microsoft的語音辨識服務並未提供您一整套功能。有興趣的用戶可以查看我們的一些最佳語音辨識應用程

與Windows10一樣,Windows11電腦具有文字轉語音功能。也稱為TTS,文字轉語音允許您用自己的聲音書寫。當您對著麥克風講話時,電腦會結合文字辨識和語音合成在螢幕上寫出文字。如果您在閱讀或寫作時遇到困難,這是一個很好的工具,因為您可以在說話時執行意識流。你可以用這個方便的工具克服作家的障礙。如果您想為影片產生畫外音腳本、檢查某些單字的發音或透過Microsoft講述者大聲聽到文本,TTS也可以為您提供幫助。此外,該軟體擅長添加適當的標點符號,因此您也可以學習良好的語法。語音

我們在這款平台上面是怎麼來進行一些語音生成字幕的功能的呢,我們在製作一些視頻的是,為了能夠更加的有質感,或者是在敘述一些故事的時候,都是需要來添加上我們的字幕,這樣大家們也能夠更好的讀懂上面的一些影片的資訊了。也是起到了表達的作用,但是很多用戶們對於自動識別語音生成字幕方面都不是非常的了解,不管是在哪一些方位我們都能很輕鬆的讓你們更好的進行多方面的一些選擇都是可以的,如果你也喜歡的話,一定不能夠錯過對於一些功能方面的技巧等,都是需要我們來慢慢的了解的,趕緊和小編一起來看看吧,不要錯過了。

基於無阻塞、事件驅動建立的Node服務,具有記憶體消耗低的優點,非常適合處理海量的網路請求。在海量請求的前提下,就需要考慮「記憶體控制」的相關問題了。 1. V8的垃圾回收機制與記憶體限制 Js由垃圾回收機

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

1.進入控制面板,找到【語音辨識】選項,並將之開啟。 2.待語音辨識頁面彈出後,選取【進階語音選項】。 3.最後,在語音屬性視窗內的使用者設定一欄中取消關於【啟動時運行語音辨識】的勾選。

聲音語音辨識中的音訊品質問題,需要具體程式碼範例近年來,隨著人工智慧技術的快速發展,聲音語音辨識(AutomaticSpeechRecognition,簡稱ASR)得到了廣泛應用和研究。然而,在實際應用中,我們傾向於面臨音訊品質問題,這直接影響了ASR演算法的準確性和效能。本文將重點放在聲音語音辨識中的音訊品質問題,並給出具體的程式碼範例。音訊品質對於聲音語音

聲音語音性別辨識中的說話者變異問題,需要具體代碼範例隨著語音技術的快速發展,聲音語音性別辨識成為了一個日益重要的領域。它在許多應用場景中都有廣泛的應用,例如電話客服、語音助理等。然而,在聲音語音性別辨識中,我們經常會遇到一個挑戰,即說話者的變異問題。說話者變異是指不同個體的聲音在語音特徵上有差異。由於個人的聲音特徵受到多種因素的影響,例如性別、年齡、嗓音等
