siemens x
人工智能

MATLAB 里的天籟之音——淺談 MATLAB 語音與聲學(xué)應(yīng)用(三)

2025China.cn   2020年12月10日

  上一期,我們圍繞智能語音助手的話題,與大家聊了聊聲源分離的兩種方法:基于麥克風(fēng)陣列波束成形的方法和基于深度學(xué)習(xí)的掩模估計(jì)的方法。本期,我們將繼續(xù)本文的最后一個(gè)話題,聊聊關(guān)于深度學(xué)習(xí)的語音識(shí)別。

  本文共分三期:
  1)音頻算法快速原型試音;
  2)聲源分離與提?。?BR>  3)深度學(xué)習(xí)語音識(shí)別

Part 3

語音關(guān)鍵詞識(shí)別

  深度學(xué)習(xí)的語音識(shí)別,目前以家用智能音箱、語音導(dǎo)航等首當(dāng)其沖。

  語音操控,本來就是人與人溝通最便捷的方式,只是過去技術(shù)水平限制,被迫用按鍵、遙控器、觸摸屏,而今語音操控已自然而然成了新一代的人機(jī)接口。所有空調(diào)、電視、凈化器這所有家電,甚至各處的燈光,都可以方便的采用語音指令進(jìn)行控制,是不是很美好。

  很多小伙伴,可能一提到語音識(shí)別,第一反應(yīng)就是深度學(xué)習(xí)。確實(shí)會(huì)用到深度學(xué)習(xí)不假,然而,想設(shè)計(jì)好實(shí)際工程化實(shí)現(xiàn)的語音識(shí)別模型,需要考慮的遠(yuǎn)不只是深度學(xué)習(xí)本身。工程化實(shí)現(xiàn)與在科研探索,最大的區(qū)別在于,科研只是單點(diǎn)突破即可,比如可以是僅僅優(yōu)化某個(gè)損失函數(shù)改進(jìn)某個(gè)層的算法,就可以發(fā)表論文,算作成果了。而工程化實(shí)現(xiàn),其實(shí)是一個(gè)完整的鏈條,任何一個(gè)環(huán)節(jié)出問題,都無法得到滿足工程化實(shí)現(xiàn)要求的產(chǎn)品。

  如下圖所示,實(shí)際的工程化實(shí)現(xiàn),需要完成如下所示的從左到右四個(gè)階段。

深度學(xué)習(xí)開發(fā)基本流程

  首先要采集數(shù)據(jù),不僅需要獲得足夠大的高質(zhì)量樣本集,并且如果是有監(jiān)督的學(xué)習(xí),那你的標(biāo)注也需要足夠的精確;接下來就是預(yù)處理和特診提取,這個(gè)步驟對(duì)獲得輕量化的模型,適合進(jìn)行嵌入式低功耗、小型化設(shè)備進(jìn)行產(chǎn)品工程化實(shí)現(xiàn)至關(guān)重要;接下來是模型訓(xùn)練和開發(fā);最后還需要在嵌入式設(shè)備或者云端上,產(chǎn)品化實(shí)現(xiàn)我們的算法。

  而之前我們開發(fā)人員的大多數(shù)精力,是不是基本都只關(guān)注在第三個(gè)階段呢?我們模型的整體性能其實(shí)是由這個(gè)鏈條里四個(gè)階段,整體決定的,而非單一環(huán)節(jié)。

  這也就解釋了,為什么很多時(shí)候,若模型精度欠佳,如果希望只在第三個(gè)階段努力,即僅通過模型優(yōu)化和超參調(diào)解,通常很難得到有效改善的。反而可能使模型變得復(fù)雜,得到一個(gè)臃腫不適合產(chǎn)品化的模型。

  首先在音頻采集階段,就需要考慮到回聲消除、去混疊、降噪等一系列的預(yù)處理算法,而且在準(zhǔn)備數(shù)據(jù)時(shí),還需要根據(jù)自己的實(shí)際需要和訓(xùn)練平臺(tái)的情況,來選擇合適算法對(duì)音頻數(shù)據(jù)進(jìn)行預(yù)處理,這里可能涉及采樣率變換、感興趣頻帶的提取,也可能涉及感興趣特征的提取。

  接下來,我們以語音指令識(shí)別為例【1】,介紹如何在 MATLAB 中,快速完成產(chǎn)品化的整個(gè)鏈條。

  我們的目標(biāo)是將識(shí)別以下的十個(gè)英文指令,將采用 Google 隨如下論文一同剛發(fā)表的語音指令數(shù)據(jù)集。

  首先,我們導(dǎo)入數(shù)據(jù)集,數(shù)據(jù)集通常會(huì)比較龐大,若同時(shí)加載很可能占用大量?jī)?nèi)存使運(yùn)算卡頓。MATLAB 提供了一系列的 datastore,對(duì)數(shù)據(jù)集進(jìn)行管理和操作,datastore 僅記錄數(shù)據(jù)集的索引和標(biāo)簽,而只在需要時(shí),才會(huì)去加載對(duì)應(yīng)的樣本。

  如下所示,采用音頻專用的 audioDatastore,自動(dòng)把樣本文件夾下的各個(gè)子文件夾中數(shù)據(jù)建立索引數(shù)據(jù)集,而后自動(dòng)以每個(gè)子文件夾名字作為其中各樣本的標(biāo)簽。

  這里,其實(shí) Google 提供了一個(gè)顯然由高手,精心加工的高水準(zhǔn)的音頻指令數(shù)據(jù)集。

  而你的實(shí)際工程中,通常采集到的原始數(shù)據(jù)還需要進(jìn)行一系列的預(yù)處理,如前面提到的去回聲、去混疊、降噪等一系列操作,通常還會(huì)有濾波、采樣率變換,然后才會(huì)得到這樣一個(gè)理想的數(shù)據(jù)集。這個(gè)部分恰恰是很多大牛都會(huì)重視去做,卻很少談及的。

  敲黑板~劃重點(diǎn)~高質(zhì)量的數(shù)據(jù)集,才能產(chǎn)生高質(zhì)量的模型呦。

  Notes:  大多數(shù)實(shí)際的工程應(yīng)用,都需要自己動(dòng)手準(zhǔn)備這個(gè)至關(guān)重要的數(shù)據(jù)集,音頻樣本的采集的質(zhì)量與標(biāo)簽的質(zhì)量,同樣重要。這個(gè)過程是非常耗時(shí)費(fèi)力的,往往需要人工一段一段的音頻反復(fù)聽,反復(fù)手工標(biāo)注。MATLAB 提供了對(duì)應(yīng)于音頻和信號(hào)領(lǐng)域的快捷標(biāo)注工具,Audio Labeler 和 Signal Labeler。請(qǐng)看以下操作視頻,可以看到您可以自動(dòng)標(biāo)注,快捷準(zhǔn)確的完成這個(gè)過程。

  以上我們介紹了,導(dǎo)入了整個(gè)數(shù)據(jù)集和標(biāo)注。接下來,我們把數(shù)據(jù)集分成訓(xùn)練集、驗(yàn)證集和測(cè)試集。

  接下來我們講選擇用哪種網(wǎng)絡(luò)進(jìn)行指令識(shí)別。如圖所示,是常見的兩種對(duì)時(shí)間序列進(jìn)行分類或者檢測(cè)的網(wǎng)絡(luò),上面一種是借助卷積神經(jīng)網(wǎng)絡(luò)對(duì)二維圖像的檢測(cè)能力,所不同的是需要先將音頻序列轉(zhuǎn)換成時(shí)頻圖。

  下面這種,采用的是 LSTM 長(zhǎng)短周期記憶網(wǎng)絡(luò),雖然也可以直接把時(shí)間序列作為其輸入,但通常效果欠佳。所以我們一般會(huì)在每一個(gè)時(shí)間拍,提取一個(gè)特征向量,把它作為 LSTM 網(wǎng)絡(luò)的輸入。

  這里我們采用上面這種方法,即首先對(duì)信號(hào)進(jìn)行時(shí)頻變換,得到每個(gè)時(shí)間拍上的時(shí)頻圖作為特征,輸入進(jìn)后面的卷積神經(jīng)網(wǎng)絡(luò)。音頻中有許多可用的特征,這里過去我們需要自己手寫函數(shù),選擇提取哪些特征,這個(gè)過程經(jīng)常需要反復(fù)嘗試。目標(biāo)是用盡量少的特征,來達(dá)到可以接受的模型精度。恰到好處的特征選擇,可以使后序的神經(jīng)網(wǎng)絡(luò)模型搭建和調(diào)優(yōu),得以大大簡(jiǎn)化,輕量級(jí)網(wǎng)絡(luò)即可達(dá)到驚艷的效果,并不是每個(gè)做得漂亮的項(xiàng)目,都需要在模型訓(xùn)練階段,死磕超參優(yōu)化的。

  Notes:特征的選擇,需要針對(duì)您的特定使用環(huán)境,巧妙選擇,比如識(shí)別人類語音,則需要了解人耳對(duì)于語音的選擇性,比如在幾百赫茲以下,成線性分布,這部分其實(shí)是語音的主要傳遞信號(hào)的部分。從幾百赫茲到 20K,成對(duì)數(shù)分布,而對(duì)其他頻點(diǎn)的聲音。而如果您要識(shí)別的是樂音,那么您最好花點(diǎn)時(shí)間了解十二平均律,以及對(duì)應(yīng)的有效特征,如恒 Q 變換等。

  這里MATLAB提供了一個(gè)專用的音頻特征提取工具,即 audioFeatureExtractor。他把音頻常見的特征都統(tǒng)一集成在一個(gè)模塊,你只要按需求,選擇即可使用。

  特征提取時(shí),因?yàn)樾枰崛√卣鞯臉颖玖亢艽螅曰瑒?dòng)窗口逐幀計(jì)算特征,通常計(jì)算很耗時(shí),這里我們采用了如下所示的并行計(jì)算方式進(jìn)行加速。

  MATLAB代碼,僅需要使用關(guān)鍵詞稍作修改,即可輕松擴(kuò)展到多節(jié)點(diǎn),并行執(zhí)行,使我們的算法執(zhí)行速度大幅提高。

  如果您想利用 GPU 加速,卻不想手寫 CUDA 代碼怎么辦?Parallel Computing Toolbox 也可以支持無縫的使用底層的 GPU 加速。您也可以方便的使用 gpuArray 對(duì)數(shù)組聲明,底層就會(huì)自動(dòng)使用您的 GPU 進(jìn)行加速。

  上面代碼中,numPar 即本機(jī)可訪問的并行節(jié)點(diǎn)數(shù),若 numPar=16,則特征提取的計(jì)算將被自動(dòng)在底層分配到這 16 個(gè)節(jié)點(diǎn)上并行完成,大幅提高計(jì)算速度。你的代碼只需把 for 循環(huán),換成 parfor 循環(huán)。不必再硬著頭皮去學(xué)習(xí)并行編程語言了,所有底層的 map-reduce、Hadoop 之類的繁文縟節(jié),MATLAB 都會(huì)為你自動(dòng)搞定。

  接下來我們看一下,提取到的特征。

  上圖中上面一行是原音頻波形,16000 個(gè)采樣點(diǎn),而下圖中是其對(duì)應(yīng)的時(shí)頻圖,可以看到橫軸和縱軸的點(diǎn)數(shù)明顯減少了,也就是特征提取起到了明顯壓縮數(shù)據(jù)量的作用。恰到好處的選擇特征,不僅會(huì)大大提高識(shí)別精度,而且可以使后面的卷積神經(jīng)網(wǎng)絡(luò)只需要一個(gè)輕量級(jí)的模型,即可達(dá)到很理想的精度。這對(duì)于產(chǎn)品化實(shí)現(xiàn)至關(guān)重要。

  準(zhǔn)備好了訓(xùn)練用的時(shí)頻圖數(shù)據(jù)集,我們就可以著手搭建神經(jīng)網(wǎng)絡(luò)了,我們不必記住指令敲代碼,而是可以直接使用如下的 Deep Network Designer 以拖拽模塊和連接的方式,快速完成。

  接下來,設(shè)置好訓(xùn)練參數(shù)后,我們開始對(duì)模型進(jìn)行訓(xùn)練。只要指定訓(xùn)練環(huán)境,他會(huì)自動(dòng)在底層使用你所指定的多核 CPU 或者 GPU 進(jìn)行加速。

  訓(xùn)練完成后,我們可以對(duì)訓(xùn)練結(jié)果,進(jìn)行評(píng)估。得到如下的混淆矩陣。

  那么我們還可以在 MATLAB 中,直接訪問底層的麥克風(fēng),采集實(shí)時(shí)音頻流,來測(cè)試我們的模型識(shí)別精度,請(qǐng)看下面的視頻。

  上邊,我們實(shí)現(xiàn)的其實(shí)還只是一個(gè)算法原型,那么我們?nèi)绻朐谇度胧接布?,?shí)際做一下硬件原型測(cè)試怎么辦?難道還需要把所有算法都手工用底層代碼敲出來嗎?

  顯然不必如此,您可以用 MATLAB Coder 很方便的把這一整套算法(包含預(yù)處理、特征提取和深度學(xué)習(xí)模型),一起打包生成嵌入式處理器如 ARM,可運(yùn)行的高性能 C++ 代碼。在這個(gè)階段,仍然保持快速的硬件原型測(cè)試和調(diào)試迭代的優(yōu)勢(shì)。

  這個(gè)語音指令識(shí)別的案例,其對(duì)應(yīng)的嵌入式硬件實(shí)現(xiàn)的 demo,我們也一并在 Shipping Demo 中提供了,感興趣的童鞋可以找來試試看【2】。

簡(jiǎn)單總結(jié)

  我們介紹了基于深度學(xué)習(xí)的語音識(shí)別在實(shí)際工程化實(shí)現(xiàn)時(shí),需要完成如下所示的從左到右四個(gè)階段。而之前我們中大多數(shù)注意力,往往只關(guān)注第三個(gè)階段呢,然而實(shí)際上,我們模型的性能其實(shí)是由這個(gè)鏈條里四個(gè)階段,整體決定的,而非單一環(huán)節(jié)。

深度學(xué)習(xí)開發(fā)基本流程

  而 MATLAB 是面向工程化實(shí)現(xiàn)的平臺(tái),完整覆蓋全部這四個(gè)階段的內(nèi)容。

  首先要采集數(shù)據(jù),不僅需要獲得足夠大的高質(zhì)量樣本集,并且也需要高質(zhì)量的標(biāo)簽,這部分 MATLAB 提供了一系列能夠快速自動(dòng)完成標(biāo)注 APP;接下來就是預(yù)處理和特診提取,MATLAB 提供大量方便易用的信號(hào)處理和預(yù)處理的 APP,以及音頻信號(hào)特征提取器,可以方便的嘗試需要的預(yù)處理和特征提??;接下來是模型訓(xùn)練和開發(fā);最后還支持嵌入式設(shè)備或者云端上,自動(dòng)生成代碼或者部署實(shí)現(xiàn)我們的算法。

(轉(zhuǎn)載)

標(biāo)簽:MathWorks 我要反饋 
2024世界人工智能大會(huì)專題
即刻點(diǎn)擊并下載ABB資料,好禮贏不停~
優(yōu)傲機(jī)器人下載中心
西克
2024全景工博會(huì)
專題報(bào)道
2024 工博會(huì) | 直播探館 · 全景解讀
2024 工博會(huì) | 直播探館 · 全景解讀

第二十四屆中國(guó)工博會(huì)于9月24日至28日在國(guó)家會(huì)展中心(上海)舉行,展會(huì)以“工業(yè)聚能 新質(zhì)領(lǐng)航”為全新主題。 [更多]

2024世界人工智能大會(huì)
2024世界人工智能大會(huì)

WAIC 2024將于7月在上海舉行,論壇時(shí)間7月4日-6日,展覽時(shí)間7月4日-7日。WAIC 2024將圍繞“以共商促... [更多]

2024漢諾威工業(yè)博覽會(huì)專題
2024漢諾威工業(yè)博覽會(huì)專題

2024 漢諾威工業(yè)博覽會(huì)將于4月22 - 26日在德國(guó)漢諾威展覽中心舉行。作為全球首屈一指的工業(yè)貿(mào)易展覽會(huì),本屆展覽會(huì)... [更多]