介紹Facebook語音框架——Wav2letter++篇!
語音識別系統一直是深度學習生態系統中最發達的領域之一。當前一代語音識別模型主要依賴於用於聲學和語言建模的遞迴神經網路(RNN)以及用於知識構建的特徵提取管道等計算上比較昂貴的工件。雖然已經證明基於RNN的技術在語音識別任務中是有效的,但是它們需要大量的訓練資料和計算能力,這通常會導致大多陣列織無法使用。最近,Facebook AI Research(FAIR)團隊發表了一篇研究論文,提出了一種基於卷積神經網路(CNNs)的新語音識別技術。 FAIR團隊不僅進行了研究,並開源了Wav2letter ++,這是一種基於完全卷積方法的高效能語音識別工具包。
神經網路在語音識別系統中的應用在深度學習領域並不新鮮,但大多侷限於特定的任務,並且經常與RNN結合成更完整的架構。然而,最近在CNN領域的研究表明,它們有可能在語音識別管道的所有領域實現最先進的效能,包括機器翻譯、語言建模的語音合成等需要長時間建模的領域。 CNN相對於替代方案的巨大優勢在於它們自然地模擬諸如梅爾頻率倒譜系數之類的標準特徵的計算建模,而無需昂貴的特徵提取技術。因此,深度學習社群長期以來一直看好CNN的使用實現完整的語音識別工作流程,與現有的基於rnn的模型相比,這種工作流程更高效、更具競爭力。
全卷積語音識別架構
經過多次實驗,FAIR團隊決定依靠一種結合了不同CNN層的架構,有效地實現了從波形處理到語言轉錄的端到端語音識別管道。該體系結構基於下圖所示的“基於離散點”模型:
可學習前端模型的第一層是CNN,它處理初始音訊形式並提取其一些關鍵特徵。該層之後是卷積聲學模型,該模型是CNN,其中門控單元經過訓練以預測來自音訊流的字母。卷積語言模型層從聲學模型產生候選轉錄。最後,beach-search 編碼器生成組成最終轉錄的單詞序列。
FAIR團隊將其完全卷積語音識別模型與最先進的模型進行了對比,該模型通過顯著減少的訓練資料實現了相當的效能。結果非常有希望,FAIR團隊決定將這種方法的初步實施開源。
Wav2letter ++
最近深度學習技術的進步使得開發人員可以使用的自動語音識別(ASR)框架和工具包的數量有所增加。然而,完全卷積語音識別模型中顯示的進展激發了FAIR團隊建立Wav2letter ++,這是一個完全基於C ++的深度學習語音識別工具包。 Wav2letter ++的核心設計受三個關鍵原則的驅動:
1)實現基礎,以便能夠在包含數千小時語音的資料集上有效地訓練模型。
2)啟用簡單且可擴充套件的模型,以在語音識別系統中表達和合並新的網路架構、損失功能和其他核心操作。
3)簡化從語音識別模型的研究到部署的過渡。
以這些設計原則為指導,Wav2latter ++實現了一個非常簡單的架構,如下圖所示:
為了更好地理解Wav2letter ++體系結構,有一些值得強調的要點:
- ArrayFire Tensor Library:Wav2letter ++使用ArrayFire作為 tensor 操作的主庫。 ArrayFire支援在硬體無關模型中對高效能平行計算進行建模,該模型可在多個後端執行,包括CUDA GPU後端和CPU後端。
- 資料準備和特徵提取:Wav2letter ++支援跨不同音訊格式的特徵提取。該框架在每次網路評估之前動態計算特性,並強制執行非同步和並行化,以便在模型訓練期間最大限度地提高效率。
- 型號:Wav2letter ++包括豐富的端到端序列模型組合以及廣泛的網路架構和啟用功能。
- 可擴充套件的訓練:Wav2letter ++支援三種主要的訓練模式::train((flat-start 訓練),continue(檢查點狀態)和fork(例如遷移學習)。訓練管道使用資料並行、同步隨機梯度下降以及由NVIDIA集體通訊庫提供支援的程式間通訊無縫擴充套件。
- 解碼:Wav2letter ++解碼器是基於之前探索過的完全卷積架構的波束搜尋解碼器。解碼器負責輸出音訊檔案的最終轉錄。
Wav2letter ++ in Action
FAIR團隊針對一系列語音識別模型(如ESPNet,Kaldi和OpenSeq2Seq)測試了Wav2letter ++。這些實驗基於著名的華爾街日報CSR資料集。最初的結果表明,Wav2letter ++在訓練週期的各個方面都能勝過替代方案。
完全基於CNN的語音識別系統的實現當然是一種有趣的方法,其可以優化這些型別的深度學習模型所需的計算能力和訓練資料。 Facebook的Wav2letter ++實現這種方法已經被歸類為市場上最快的語音識別框架之一。在不久的將來,我們可能會看到這一研究領域取得更多進展
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545819/viewspace-2286436/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Blazor Bootstrap 元件庫語音元件介紹Blazorboot元件
- TPHP框架介紹PHP框架
- .NET框架介紹框架
- Pytext 簡介——Facebook 基於 PyTorch 的自然語言處理 (NLP) 框架PyTorch自然語言處理框架
- QuickTask動態指令碼支援框架整體介紹篇UI指令碼框架
- spring框架的介紹Spring框架
- yaml語音簡介YAML
- Quick-Task 動態指令碼支援框架之使用介紹篇UI指令碼框架
- 搜尋引擎框架介紹框架
- Spring框架之IOC介紹Spring框架
- Retrofit網路框架介紹框架
- Gin框架介紹及使用框架
- 科大訊飛cordova語音外掛填坑及api介紹API
- Go語言介紹Go
- shell 語法介紹
- JavaScript 語法介紹JavaScript
- Scrapy框架的使用之Scrapy框架介紹框架
- Go語言開發的Web框架都有哪些?詳細介紹GoWeb框架
- 資料中臺(介紹篇)
- 開源speex的語音增強(去噪)演算法介紹演算法
- Android系統介紹與框架Android框架
- MyBatis框架介紹及其實操MyBatis框架
- Android模組化框架介紹Android框架
- Scrapy 框架介紹之 Puppeteer 渲染框架
- 瀏覽器fuzz框架介紹瀏覽器框架
- Prism:框架介紹與安裝框架
- Net6 EFcore框架介紹框架
- T框架介紹(自動化測試框架)框架
- DNS常用術語介紹DNS
- nginx介紹(二) 架構篇Nginx架構
- Selenium Part1:框架搭建與selenium框架介紹框架
- MyBatis框架介紹及實戰操作MyBatis框架
- dotnet core微服務框架Jimu介紹微服務框架
- Java常用的5大框架介紹!Java框架
- lms微服務框架主機介紹微服務框架
- 手寫開源ORM框架介紹ORM框架
- javascript字串的語法介紹JavaScript字串
- go培訓課程都學什麼?go語言框架學習:xorm框架知識介紹Go框架ORM