如何利用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。這可以通過運行以下命令來做到:
npm install cloudmersive-speech-api-client --save
另外,可以將以下這一代碼段添加到其軟件包中。
"dependencies": {
"cloudmersive-speech-client": "^1.1.5"
}
在安裝完成之后,可以使用以下代碼塊構建API調用。此時,需要確保已經準備好以下參數:
(1)MP3或WAV音頻文件。
(2)CloudMersive API密鑰。
var CloudmersiveSpeechApiClient = require('cloudmersive-speech-api-client');
var defaultClient = CloudmersiveSpeechApiClient.ApiClient.instance;
// Configure API key authorization: Apikey
var Apikey = defaultClient.authentications['Apikey'];
Apikey.apiKey = 'YOUR API KEY';
var apiInstance = new CloudmersiveSpeechApiClient.RecognizeApi();
var speechFile = Buffer.from(fs.readFileSync("C:\\temp\\inputfile").buffer); // File | Speech file to perform the operation on. Common file formats such as WAV, MP3 are supported.
var callback = function(error, data, response) {
if (error) {
console.error(error);
} else {
console.log('API called successfully. Returned data: ' + data);
}
};
apiInstance.recognizeFile(speechFile, callback);
這樣就完成了API的構建,無需進一步的代碼段。成功的API呼叫將返回包含API轉錄結果的Textresult字符串。務必記住的是,輸入文件中的音頻質量將對API創建準確轉錄的能力產生重大影響,因此建議在實施這一操作之前盡可能預處理和優化音頻質量。
原文標題:??How to Leverage Speech-to-Text With Node.js??,作者:Brian O'Neill