當前位置: 首頁 > 工業(yè)電氣產品 > 端子與連接器 > 線路板連接器 > FFC連接器
發(fā)布日期:2022-04-17 點擊率:45
上一期,我們圍繞智能語音助手的話題,與大家聊了聊聲源分離的兩種方法:基于麥克風陣列波束成形的方法和基于深度學習的掩模估計的方法。本期,我們將繼續(xù)本文的最后一個話題,聊聊關于深度學習的語音識別。
本文共分三期:
1)音頻算法快速原型試音;
2)聲源分離與提取;
3)深度學習語音識別
Part 3
語音關鍵詞識別
深度學習的語音識別,目前以家用智能音箱、語音導航等首當其沖。
語音操控,本來就是人與人溝通最便捷的方式,只是過去技術水平限制,被迫用按鍵、遙控器、觸摸屏,而今語音操控已自然而然成了新一代的人機接口。所有空調、電視、凈化器這所有家電,甚至各處的燈光,都可以方便的采用語音指令進行控制,是不是很美好。
很多小伙伴,可能一提到語音識別,第一反應就是深度學習。確實會用到深度學習不假,然而,想設計好實際工程化實現(xiàn)的語音識別模型,需要考慮的遠不只是深度學習本身。工程化實現(xiàn)與在科研探索,最大的區(qū)別在于,科研只是單點突破即可,比如可以是僅僅優(yōu)化某個損失函數改進某個層的算法,就可以發(fā)表論文,算作成果了。而工程化實現(xiàn),其實是一個完整的鏈條,任何一個環(huán)節(jié)出問題,都無法得到滿足工程化實現(xiàn)要求的產品。
如下圖所示,實際的工程化實現(xiàn),需要完成如下所示的從左到右四個階段。
深度學習開發(fā)基本流程
首先要采集數據,不僅需要獲得足夠大的高質量樣本集,并且如果是有監(jiān)督的學習,那你的標注也需要足夠的精確;接下來就是預處理和特診提取,這個步驟對獲得輕量化的模型,適合進行嵌入式低功耗、小型化設備進行產品工程化實現(xiàn)至關重要;接下來是模型訓練和開發(fā);最后還需要在嵌入式設備或者云端上,產品化實現(xiàn)我們的算法。
而之前我們開發(fā)人員的大多數精力,是不是基本都只關注在第三個階段呢?我們模型的整體性能其實是由這個鏈條里四個階段,整體決定的,而非單一環(huán)節(jié)。
這也就解釋了,為什么很多時候,若模型精度欠佳,如果希望只在第三個階段努力,即僅通過模型優(yōu)化和超參調解,通常很難得到有效改善的。反而可能使模型變得復雜,得到一個臃腫不適合產品化的模型。
首先在音頻采集階段,就需要考慮到回聲消除、去混疊、降噪等一系列的預處理算法,而且在準備數據時,還需要根據自己的實際需要和訓練平臺的情況,來選擇合適算法對音頻數據進行預處理,這里可能涉及采樣率變換、感興趣頻帶的提取,也可能涉及感興趣特征的提取。
接下來,我們以語音指令識別為例【1】,介紹如何在 MATLAB 中,快速完成產品化的整個鏈條。
我們的目標是將識別以下的十個英文指令,將采用 Google 隨如下論文一同剛發(fā)表的語音指令數據集。
首先,我們導入數據集,數據集通常會比較龐大,若同時加載很可能占用大量內存使運算卡頓。MATLAB 提供了一系列的 datastore,對數據集進行管理和操作,datastore 僅記錄數據集的索引和標簽,而只在需要時,才會去加載對應的樣本。
如下所示,采用音頻專用的 audioDatastore,自動把樣本文件夾下的各個子文件夾中數據建立索引數據集,而后自動以每個子文件夾名字作為其中各樣本的標簽。
這里,其實 Google 提供了一個顯然由高手,精心加工的高水準的音頻指令數據集。
而你的實際工程中,通常采集到的原始數據還需要進行一系列的預處理,如前面提到的去回聲、去混疊、降噪等一系列操作,通常還會有濾波、采樣率變換,然后才會得到這樣一個理想的數據集。這個部分恰恰是很多大牛都會重視去做,卻很少談及的。
敲黑板~劃重點~高質量的數據集,才能產生高質量的模型呦。
Notes: 大多數實際的工程應用,都需要自己動手準備這個至關重要的數據集,音頻樣本的采集的質量與標簽的質量,同樣重要。這個過程是非常耗時費力的,往往需要人工一段一段的音頻反復聽,反復手工標注。MATLAB 提供了對應于音頻和信號領域的快捷標注工具,Audio Labeler 和 Signal Labeler。請看以下操作視頻,可以看到您可以自動標注,快捷準確的完成這個過程。
以上我們介紹了,導入了整個數據集和標注。接下來,我們把數據集分成訓練集、驗證集和測試集。
接下來我們講選擇用哪種網絡進行指令識別。如圖所示,是常見的兩種對時間序列進行分類或者檢測的網絡,上面一種是借助卷積神經網絡對二維圖像的檢測能力,所不同的是需要先將音頻序列轉換成時頻圖。
下面這種,采用的是 LSTM 長短周期記憶網絡,雖然也可以直接把時間序列作為其輸入,但通常效果欠佳。所以我們一般會在每一個時間拍,提取一個特征向量,把它作為 LSTM 網絡的輸入。
這里我們采用上面這種方法,即首先對信號進行時頻變換,得到每個時間拍上的時頻圖作為特征,輸入進后面的卷積神經網絡。音頻中有許多可用的特征,這里過去我們需要自己手寫函數,選擇提取哪些特征,這個過程經常需要反復嘗試。目標是用盡量少的特征,來達到可以接受的模型精度。恰到好處的特征選擇,可以使后序的神經網絡模型搭建和調優(yōu),得以大大簡化,輕量級網絡即可達到驚艷的效果,并不是每個做得漂亮的項目,都需要在模型訓練階段,死磕超參優(yōu)化的。
Notes:特征的選擇,需要針對您的特定使用環(huán)境,巧妙選擇,比如識別人類語音,則需要了解人耳對于語音的選擇性,比如在幾百赫茲以下,成線性分布,這部分其實是語音的主要傳遞信號的部分。從幾百赫茲到 20K,成對數分布,而對其他頻點的聲音。而如果您要識別的是樂音,那么您最好花點時間了解十二平均律,以及對應的有效特征,如恒 Q 變換等。
這里MATLAB提供了一個專用的音頻特征提取工具,即 audioFeatureExtractor。他把音頻常見的特征都統(tǒng)一集成在一個模塊,你只要按需求,選擇即可使用。
特征提取時,因為需要提取特征的樣本量很大,以滑動窗口逐幀計算特征,通常計算很耗時,這里我們采用了如下所示的并行計算方式進行加速。
MATLAB代碼,僅需要使用關鍵詞稍作修改,即可輕松擴展到多節(jié)點,并行執(zhí)行,使我們的算法執(zhí)行速度大幅提高。
如果您想利用 GPU 加速,卻不想手寫 CUDA 代碼怎么辦?Parallel Computing Toolbox 也可以支持無縫的使用底層的 GPU 加速。您也可以方便的使用 gpuArray 對數組聲明,底層就會自動使用您的 GPU 進行加速。
上面代碼中,numPar 即本機可訪問的并行節(jié)點數,若 numPar=16,則特征提取的計算將被自動在底層分配到這 16 個節(jié)點上并行完成,大幅提高計算速度。你的代碼只需把 for 循環(huán),換成 parfor 循環(huán)。不必再硬著頭皮去學習并行編程語言了,所有底層的 map-reduce、Hadoop 之類的繁文縟節(jié),MATLAB 都會為你自動搞定。
接下來我們看一下,提取到的特征。
上圖中上面一行是原音頻波形,16000 個采樣點,而下圖中是其對應的時頻圖,可以看到橫軸和縱軸的點數明顯減少了,也就是特征提取起到了明顯壓縮數據量的作用。恰到好處的選擇特征,不僅會大大提高識別精度,而且可以使后面的卷積神經網絡只需要一個輕量級的模型,即可達到很理想的精度。這對于產品化實現(xiàn)至關重要。
準備好了訓練用的時頻圖數據集,我們就可以著手搭建神經網絡了,我們不必記住指令敲代碼,而是可以直接使用如下的 Deep Network Designer 以拖拽模塊和連接的方式,快速完成。
接下來,設置好訓練參數后,我們開始對模型進行訓練。只要指定訓練環(huán)境,他會自動在底層使用你所指定的多核 CPU 或者 GPU 進行加速。
訓練完成后,我們可以對訓練結果,進行評估。得到如下的混淆矩陣。
那么我們還可以在 MATLAB 中,直接訪問底層的麥克風,采集實時音頻流,來測試我們的模型識別精度,請看下面的視頻。
上邊,我們實現(xiàn)的其實還只是一個算法原型,那么我們如果想在嵌入式硬件上,實際做一下硬件原型測試怎么辦?難道還需要把所有算法都手工用底層代碼敲出來嗎?
顯然不必如此,您可以用 MATLAB Coder 很方便的把這一整套算法(包含預處理、特征提取和深度學習模型),一起打包生成嵌入式處理器如 ARM,可運行的高性能 C++ 代碼。在這個階段,仍然保持快速的硬件原型測試和調試迭代的優(yōu)勢。
這個語音指令識別的案例,其對應的嵌入式硬件實現(xiàn)的 demo,我們也一并在 Shipping Demo 中提供了,感興趣的童鞋可以找來試試看【2】。
簡單總結
我們介紹了基于深度學習的語音識別在實際工程化實現(xiàn)時,需要完成如下所示的從左到右四個階段。而之前我們中大多數注意力,往往只關注第三個階段呢,然而實際上,我們模型的性能其實是由這個鏈條里四個階段,整體決定的,而非單一環(huán)節(jié)。
深度學習開發(fā)基本流程
而 MATLAB 是面向工程化實現(xiàn)的平臺,完整覆蓋全部這四個階段的內容。
首先要采集數據,不僅需要獲得足夠大的高質量樣本集,并且也需要高質量的標簽,這部分 MATLAB 提供了一系列能夠快速自動完成標注 APP;接下來就是預處理和特診提取,MATLAB 提供大量方便易用的信號處理和預處理的 APP,以及音頻信號特征提取器,可以方便的嘗試需要的預處理和特征提取;接下來是模型訓練和開發(fā);最后還支持嵌入式設備或者云端上,自動生成代碼或者部署實現(xiàn)我們的算法。
下一篇: PLC、DCS、FCS三大控
上一篇: 伺服選型軟件到底可以