• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      語(yǔ)音特征參數(shù)提取算法的研究與硬件實(shí)現(xiàn)

      2022-12-01 06:00:54劉澤琛焦繼業(yè)崔智恒安超
      電子設(shè)計(jì)工程 2022年23期
      關(guān)鍵詞:特征參數(shù)濾波器語(yǔ)音

      劉澤琛,焦繼業(yè),崔智恒,安超

      (1.西安郵電大學(xué)電子工程學(xué)院,陜西 西安 710121;2.西安郵電大學(xué)計(jì)算機(jī)學(xué)院,陜西 西安 710121)

      在離線語(yǔ)音產(chǎn)品中,由于其系統(tǒng)脫離了云端的服務(wù)器,語(yǔ)音模板庫(kù)的訓(xùn)練只能通過(guò)自身系統(tǒng)來(lái)建立[1],所以合理的使用人體模型作為參考,選用合適的語(yǔ)音特征參數(shù)對(duì)于語(yǔ)音識(shí)別系統(tǒng)非常重要[2],也是離線語(yǔ)音識(shí)別技術(shù)的研究重點(diǎn)[3]。對(duì)于離線語(yǔ)音識(shí)別產(chǎn)品,不是越先進(jìn)的算法就越適用[4],需合理地選用算法結(jié)構(gòu)和運(yùn)算以達(dá)到提取特征參數(shù)的效果[5],既可以降低系統(tǒng)的成本又可以很快地應(yīng)用到產(chǎn)品中去[6]。該文面向離線語(yǔ)音產(chǎn)品的設(shè)計(jì),對(duì)MFCC 參數(shù)的提取階段進(jìn)行了重點(diǎn)學(xué)習(xí)和研究,使用合理的算法結(jié)構(gòu)來(lái)降低系統(tǒng)運(yùn)算成本,并針對(duì)軟件實(shí)現(xiàn)MFCC 參數(shù)提取過(guò)程中產(chǎn)生的大量且重復(fù)性計(jì)算問(wèn)題,對(duì)MFCC 參數(shù)的提取進(jìn)行了算法優(yōu)化設(shè)計(jì),并給出硬件設(shè)計(jì)方案以提高運(yùn)算效率。

      1 MFCC原理分析

      MFCC 參數(shù)由Davis[7]等人在二十世紀(jì)八十年代提出,具有良好的識(shí)別性能和抗噪能力[8-9]。MFCC參數(shù)的提取過(guò)程充分考慮了人耳聽(tīng)覺(jué)特性,而且沒(méi)有任何前提假設(shè)[10],該參數(shù)通過(guò)將線性頻譜轉(zhuǎn)換到Mel 頻譜中,再將信號(hào)的對(duì)數(shù)能量轉(zhuǎn)換在倒譜上而得到。MFCC 特征參數(shù)提取流程如圖1 所示。

      圖1 MFCC參數(shù)提取流程圖

      1)語(yǔ)音信號(hào)在經(jīng)過(guò)預(yù)處理(預(yù)加重、分幀、加窗)后變?yōu)槎虝r(shí)信號(hào),使用傅里葉變換將這些時(shí)域信號(hào)X(n)轉(zhuǎn)化為頻域信號(hào)X(m),并由此計(jì)算它的短時(shí)能量譜P(f)。

      2)求出的每一幀能量譜P(f)通過(guò)Mel 濾波器,計(jì)算在該Mel 濾波器中的能量。在頻域中相當(dāng)于把每幀的能量譜P(f)與Mel 濾波器的頻域響應(yīng)Hm(k)相乘并相加,最后求其對(duì)數(shù)能量S(m)。

      式中,k表示第k個(gè)濾波器,M表示濾波器總個(gè)數(shù)。

      3)S(m)表示第k個(gè)濾波器的輸出能量,則C(n)為輸出的MFCC 參數(shù)。

      式中,P為MFCC 參數(shù)的階數(shù)。

      2 算法優(yōu)化設(shè)計(jì)

      2.1 語(yǔ)音時(shí)頻轉(zhuǎn)換設(shè)計(jì)與優(yōu)化

      在時(shí)域上,提取出語(yǔ)音信號(hào)的信息特征非常困難[11],通常會(huì)把時(shí)域的語(yǔ)音信號(hào)轉(zhuǎn)換至頻域上來(lái)分析,該設(shè)計(jì)采用快速傅里葉變換FFT 進(jìn)行時(shí)頻轉(zhuǎn)換,作為離散傅里葉變換DFT 的快速算法,其函數(shù)表達(dá)式如下:

      其中,原始的語(yǔ)音信號(hào)表示為x(n)。在該設(shè)計(jì)中,由于語(yǔ)音信號(hào)都是實(shí)數(shù)計(jì)算,所以直接將x(n)作為一個(gè)虛部為0 的復(fù)數(shù)序列進(jìn)行計(jì)算。

      但是在語(yǔ)音分幀時(shí)相鄰幀之間需要相互重疊來(lái)彌補(bǔ)加窗時(shí)的信號(hào)消弱,相鄰兩幀起始位置的時(shí)間間隔就是幀移[12],在本設(shè)計(jì)中讓幀移等于幀長(zhǎng)的一半,也就是每相鄰的兩幀語(yǔ)音信號(hào)就會(huì)重疊50%,以此保證語(yǔ)音信號(hào)的連續(xù)性[13-14]。由于語(yǔ)音信號(hào)有50%的幀重疊段,所以在對(duì)語(yǔ)音信號(hào)做FFT 計(jì)算時(shí),每?jī)蓭盘?hào)就會(huì)產(chǎn)生一次重復(fù)計(jì)算,但是兩幀重疊部分的計(jì)算結(jié)果是相同的。為了節(jié)省運(yùn)算時(shí)間,該設(shè)計(jì)提出優(yōu)化的時(shí)頻轉(zhuǎn)換方法,重復(fù)利用這半幀的數(shù)據(jù),節(jié)省了FFT 計(jì)算時(shí)間。假設(shè)一幀語(yǔ)音信號(hào)中有樣本點(diǎn)N,并且?guī)в?0%的幀移,每幀的計(jì)算公式可用式(5)表示:

      其中,k=0,1,…,N-1,Xold(k)和Xnew(k) 又都可以用式(6)表示:

      在計(jì)算過(guò)程中,Xold(k) 就是在幀移N/2 的基礎(chǔ)上,上一幀語(yǔ)音信號(hào)計(jì)算過(guò)的后半重疊部分,Xnew(k)是在幀移N/2 的基礎(chǔ)上,下一幀語(yǔ)音信號(hào)計(jì)算過(guò)的前半重疊部分,又將在下一幀計(jì)算中變?yōu)閄old(k)。使用Matlab 對(duì)改進(jìn)后的優(yōu)化設(shè)計(jì)與直接進(jìn)行時(shí)頻轉(zhuǎn)換的結(jié)果進(jìn)行了比較,輸出結(jié)果相同。在此算法改進(jìn)的基礎(chǔ)上,下文給出了硬件結(jié)構(gòu)圖,避免了由于幀移而產(chǎn)生的重復(fù)計(jì)算,進(jìn)而節(jié)省了運(yùn)算時(shí)間。

      2.2 MFCC參數(shù)輸出設(shè)計(jì)與優(yōu)化

      該設(shè)計(jì)使用一組三角形濾波器形成濾波器組,為了更好地提取出語(yǔ)音低頻信息,這些濾波器在頻率坐標(biāo)軸上不是均勻分布的,在低頻區(qū)域有很多的濾波器,它們分布比較密集,但在高頻區(qū)域,濾波器的數(shù)目就變得比較少,分布很稀疏。此過(guò)程中,濾波器參數(shù)的計(jì)算過(guò)程復(fù)雜,如果每次都直接計(jì)算,會(huì)存在很大的計(jì)算量。通過(guò)分析算法可知,濾波器中心頻率f(m)、對(duì)應(yīng)的線性頻率f和線性頻率對(duì)應(yīng)的FFT點(diǎn)數(shù)等參數(shù)的計(jì)算都可以脫離中間參數(shù)進(jìn)行提前計(jì)算。該設(shè)計(jì)的每一個(gè)三角濾波器的中心頻率f(m)可以使用式(7)進(jìn)行轉(zhuǎn)換,假設(shè)在采樣率為fs的情況下,語(yǔ)音經(jīng)過(guò)N點(diǎn)FFT 計(jì)算之后得到三角濾波器中心頻率f(m)的計(jì)算公式為:

      其中,fl為濾波器頻率范圍的最低頻率;fh為濾波器頻率范圍的最高頻率;N為FFT 時(shí)的長(zhǎng)度;fs為采樣頻率。fMel函數(shù)為:

      根據(jù)式(8)可以得出最大的Mel頻率為2 146 mel,由于在Mel 頻率刻度范圍內(nèi),各個(gè)濾波器的中心頻率是相等間隔的線性分布。由此可以計(jì)算出兩個(gè)相鄰三角濾波器中心頻率的間距為ΔMel=fmax/(k+1)=93.3 mel。各三角濾波器在Mel頻率刻度的中心頻率可以由Mel頻率與線性頻率的關(guān)系式求出,由中心頻率計(jì)算出對(duì)應(yīng)的線性刻度的頻率。該設(shè)計(jì)中Mel 濾波器共有24 組,F(xiàn)FT 計(jì)算點(diǎn)數(shù)為256,所以此過(guò)程的計(jì)算,提前使用Matlab 工具計(jì)算產(chǎn)生24×128 的bank系數(shù)矩陣,將bank 系數(shù)矩陣存入系統(tǒng)中,需要時(shí)直接讀取使用,大幅減少了計(jì)算量和時(shí)間。同時(shí)該設(shè)計(jì)采用DCT 進(jìn)行傅里葉逆變換,輸出12 階的MFCC 參數(shù),式(3)為DCT 變換公式。由于這部分計(jì)算大多是重復(fù)性計(jì)算,而且三角函數(shù)的計(jì)算會(huì)引入CORDIC 算法,使得MFCC 參數(shù)的輸出精度變低,準(zhǔn)確性將被影響,所以可以提前計(jì)算好nπ/M、(m-0.5)、余弦值等參數(shù),產(chǎn)生一個(gè)12×24 的DCT 的變換系數(shù)矩陣,將DCT 的變換系數(shù)矩陣存入系統(tǒng),使用時(shí)直接讀取。

      3 硬件設(shè)計(jì)實(shí)現(xiàn)

      語(yǔ)音特征參數(shù)提取階段系統(tǒng)的硬件實(shí)現(xiàn)流程框圖如圖2所示。整個(gè)語(yǔ)音特征參數(shù)提取系統(tǒng)分為定點(diǎn)計(jì)算部分和浮點(diǎn)計(jì)算部分,原始語(yǔ)音信號(hào)使用Matlab將wav格式文件轉(zhuǎn)換為coe格式文件,保存在原始語(yǔ)音存儲(chǔ)ROM 中。語(yǔ)音特征參數(shù)提取系統(tǒng)先從原始語(yǔ)音數(shù)據(jù)存儲(chǔ)的ROM 中讀取出一幀的音頻數(shù)據(jù)傳送給預(yù)加重模塊,然后開(kāi)始計(jì)算該幀數(shù)據(jù)的MFCC 參數(shù)。等待該幀的MFCC 參數(shù)計(jì)算結(jié)束后,再讀取下一幀音頻數(shù)據(jù),以此類推,直到檢測(cè)完語(yǔ)音最后一幀數(shù)據(jù)為止。將處理后得到的MFCC 參數(shù)使用在線抓取的方式存儲(chǔ)于ILA 中,然后導(dǎo)出至本地文件。

      圖2 硬件實(shí)現(xiàn)流程框圖

      3.1 頂層控制模塊設(shè)計(jì)

      輸入語(yǔ)音信號(hào)以后,進(jìn)行語(yǔ)音信號(hào)預(yù)處理,語(yǔ)音被分為很多幀數(shù)據(jù)等待處理。該設(shè)計(jì)中一段語(yǔ)音的MFCC 參數(shù)計(jì)算是以幀為單位進(jìn)行的,計(jì)算每幀信號(hào)會(huì)產(chǎn)生12 個(gè)特征參數(shù),測(cè)試語(yǔ)音共127 幀數(shù)據(jù),使用全局狀態(tài)機(jī)進(jìn)行控制。如圖3 所示,特征參數(shù)提取模塊空閑狀態(tài)為IDLE 狀態(tài),等待觸發(fā)起始條件進(jìn)行數(shù)據(jù)處理。

      圖3 全局狀態(tài)機(jī)轉(zhuǎn)移圖

      當(dāng)啟動(dòng)計(jì)算信號(hào)Start 有效時(shí),由IDLE 狀態(tài)進(jìn)入COMUTEMFCC 狀態(tài),開(kāi)始對(duì)第一幀數(shù)據(jù)的MFCC 進(jìn)行計(jì)算。當(dāng)?shù)谝粠瑪?shù)據(jù)計(jì)算完成時(shí),將計(jì)算結(jié)果存儲(chǔ)在FIFO 中等待COMPUTEEND 狀態(tài)對(duì)其數(shù)據(jù)進(jìn)行讀取,當(dāng)觸發(fā)計(jì)算結(jié)束的信號(hào)MFCC_ValidEnd 有效時(shí),模塊進(jìn)入COMPUTETAP 狀態(tài),對(duì)部分相關(guān)的變量進(jìn)行復(fù)位,取數(shù)地址減128,這個(gè)位置就是前一幀數(shù)據(jù)地址的中間位置,這樣進(jìn)行取地址操作,就可以實(shí)現(xiàn)兩幀數(shù)據(jù)重疊50%。Cnt計(jì)數(shù)至127時(shí),127幀數(shù)據(jù)的MFCC 全部計(jì)算完成,模塊進(jìn)入COMPUTEEND狀態(tài),對(duì)COMUTEMFCC 狀態(tài)下存儲(chǔ)在FIFO 中的MFCC 參數(shù)進(jìn)行讀取,Cnt1 計(jì)數(shù)到1 525,證明127 幀數(shù)據(jù)的MFCC 系數(shù)被全部讀取完成,讀取結(jié)束后系統(tǒng)回到IDLE 狀態(tài)等待Start信號(hào)再次啟動(dòng)計(jì)算。

      3.2 時(shí)頻轉(zhuǎn)換模塊設(shè)計(jì)

      時(shí)頻轉(zhuǎn)換模塊的硬件設(shè)計(jì)結(jié)構(gòu)圖如圖4 所示。

      圖4 時(shí)頻轉(zhuǎn)換模塊

      當(dāng)語(yǔ)音信號(hào)進(jìn)入到輸入緩沖區(qū)buff 后,語(yǔ)音數(shù)據(jù)被分為N/2 個(gè)采樣樣本,每?jī)蓚€(gè)連續(xù)語(yǔ)言段將形成一個(gè)重疊幀,每一段語(yǔ)音幀都要經(jīng)過(guò)式(6)的計(jì)算,然后將當(dāng)前語(yǔ)音段的計(jì)算結(jié)果Xnew(k)又存儲(chǔ)在輸入緩沖區(qū)H_RAM 中的K 地址處(又在下一幀計(jì)算中被重新用作Xold(k),同時(shí)Xold(k)在輸入緩沖區(qū)H_RAM 中的K 地址被讀取,并與Xnew(k)又一起產(chǎn)生如式(5)所示的當(dāng)前幀的快速傅里葉變換結(jié)果。經(jīng)過(guò)FFT 之后,產(chǎn)生的數(shù)據(jù)格式是復(fù)數(shù),為了給FFT 產(chǎn)生的頻譜求模值,該設(shè)計(jì)使用CORDIC 算法計(jì)算復(fù)數(shù)模值,使用簡(jiǎn)單的移位,加減操作減少計(jì)算量。

      3.3 MFCC參數(shù)輸出模塊設(shè)計(jì)

      該模塊用于實(shí)現(xiàn)MFCC 參數(shù)的輸出并通過(guò)狀態(tài)機(jī)來(lái)控制。CORDIC 算法計(jì)算結(jié)束之后,使用全浮點(diǎn)運(yùn)算來(lái)提升運(yùn)算精確度。該模塊可以分為緩存模塊和計(jì)算模塊兩個(gè)部分,緩存模塊部分包括常數(shù)的存儲(chǔ)和計(jì)算結(jié)果的緩存。Mel 濾波器的中心頻率、對(duì)應(yīng)的線性頻率和特征提取流程中的中間參數(shù)可脫離中間參數(shù),提前使用Matlab 工具計(jì)算并產(chǎn)生bank 系數(shù)矩陣,將bank 系數(shù)矩陣存放在Mel 濾波器組參數(shù)ROM 中,等待計(jì)算時(shí)直接提取。再將離散余弦變換中的DCT 系數(shù)矩陣存入bank ROM 等待使用。該模塊MFCC 參數(shù)的輸出計(jì)算使用如圖5 所示。

      圖5 該模塊狀態(tài)機(jī)轉(zhuǎn)移圖

      具體計(jì)算實(shí)現(xiàn)的過(guò)程:將待處理的功率數(shù)據(jù)向量t存儲(chǔ)于ROM 中。bank 系數(shù)矩陣中每一行向量都要與t向量相乘,即128 個(gè)元素的相乘再相加的運(yùn)算。按順序每次讀取bank ROM 的128 個(gè)數(shù)和t進(jìn)行乘累加運(yùn)算,得到一個(gè)數(shù),對(duì)bank ROM 中所有數(shù)計(jì)算完后,即完成bank 系數(shù)矩陣和t向量的相乘,就會(huì)得到24 個(gè)數(shù),分別對(duì)其取自然對(duì)數(shù)后存于RAM 中。同理,計(jì)算DCT 的變換系數(shù)矩陣和自然對(duì)數(shù)向量的乘積向量c1;不同之處在于每得到c1 的一個(gè)元素,就利用浮點(diǎn)乘法器計(jì)算其與對(duì)應(yīng)歸一化倒譜提升窗口w元素的乘積,然后存于MFCC_FIFO 中。

      4 實(shí)驗(yàn)與結(jié)果分析

      4.1 準(zhǔn)確率測(cè)試

      該設(shè)計(jì)在使用Matlab 測(cè)試之前,提前錄制好一段測(cè)試語(yǔ)音,保存為wav 格式,等待測(cè)試時(shí)使用,測(cè)試時(shí)使用Matlab 工具直接讀取wav 格式的語(yǔ)音數(shù)據(jù)進(jìn)行處理,測(cè)試所使用的語(yǔ)音時(shí)長(zhǎng)為2 s,共有127幀,每幀經(jīng)過(guò)特征參數(shù)提取系統(tǒng)都會(huì)產(chǎn)生一組12 階的MFCC 參數(shù),從而形成一個(gè)12×127 的MFCC 參數(shù)矩陣,將其作為語(yǔ)音特征參數(shù)矩陣,以便語(yǔ)音識(shí)別階段使用,測(cè)試使用Matlab 和Vivado 分別對(duì)測(cè)試語(yǔ)音的MFCC參數(shù)矩陣輸出進(jìn)行仿真,波形結(jié)果如圖6所示。

      圖6 特征參數(shù)矩陣Matlab仿真圖

      將bit 文件下載至FPGA 開(kāi)發(fā)板。隨機(jī)選取一幀語(yǔ)音的12 階MFCC 參數(shù),將該幀的Matlab 仿真計(jì)算結(jié)果與ILA 抓取到的MFCC 參數(shù)做對(duì)比,數(shù)據(jù)結(jié)果顯示平均誤差僅為0.92%,可以滿足設(shè)計(jì)的準(zhǔn)確率要求,數(shù)據(jù)結(jié)果如表1 所示。

      表1 誤差對(duì)比表

      4.2 實(shí)時(shí)性測(cè)試

      測(cè)試使用的示例語(yǔ)音總計(jì)127 幀數(shù)據(jù),每當(dāng)系統(tǒng)計(jì)算出一幀語(yǔ)音數(shù)據(jù)的MFCC 參數(shù),MFCC_ValidEnd標(biāo)志位信號(hào)就有效一次,語(yǔ)音有效次數(shù)為127 次,總計(jì)提取出127 幀語(yǔ)音信號(hào)的MFCC 參數(shù),總計(jì)用時(shí)為22.71 ms,該設(shè)計(jì)中特征參數(shù)提取模塊計(jì)算一幀MFCC 參數(shù)的時(shí)間為0.18 ms。

      文中對(duì)MFCC參數(shù)提取系統(tǒng)的性能參數(shù)進(jìn)行了對(duì)比,性能參數(shù)對(duì)比如表2 所示。相較于ARM Cortex-M4、TMS320 DSP 平臺(tái)使用軟件實(shí)現(xiàn)MFCC 參數(shù)提取,該設(shè)計(jì)采用硬件設(shè)計(jì)進(jìn)行語(yǔ)音特征參數(shù)提取加速,在運(yùn)行速度上有了大幅度提升,提取一幀語(yǔ)音數(shù)據(jù)的MFCC 參數(shù)運(yùn)算速度分別提升了51 倍和67 倍。相較于其他硬件實(shí)現(xiàn)方案,該設(shè)計(jì)在時(shí)頻轉(zhuǎn)換模塊,節(jié)省了FFT 的重復(fù)計(jì)算并將MFCC 輸出階段做了優(yōu)化,將Mel 濾波器和DCT 計(jì)算的相關(guān)參數(shù)脫離系統(tǒng)計(jì)算形成稀疏矩陣,保存在參數(shù)ROM 中,供直接訪存使用,省去每次計(jì)算的耗時(shí),較少硬件資源利用率,換來(lái)了計(jì)算速度近3 倍的提升,系統(tǒng)功耗也得到了降低,可以滿足實(shí)時(shí)性較高的離線語(yǔ)音識(shí)別產(chǎn)品設(shè)計(jì)要求。

      表2 性能參數(shù)對(duì)比表

      5 結(jié)論

      該文提出優(yōu)化的語(yǔ)音MFCC 參數(shù)提取方案,節(jié)省了由于幀移而產(chǎn)生的FFT 重復(fù)計(jì)算,同時(shí)省去了Mel 濾波器和DCT 計(jì)算帶來(lái)的耗時(shí),平均誤差為0.92%,提取一幀MFCC 參數(shù)的耗時(shí)為0.18 ms,可以滿足離線語(yǔ)音識(shí)別產(chǎn)品設(shè)計(jì)的實(shí)時(shí)性要求。

      猜你喜歡
      特征參數(shù)濾波器語(yǔ)音
      基于無(wú)擾濾波器和AED-ADT的無(wú)擾切換控制
      故障診斷中信號(hào)特征參數(shù)擇取方法
      基于特征參數(shù)化的木工CAD/CAM系統(tǒng)
      魔力語(yǔ)音
      基于MATLAB的語(yǔ)音信號(hào)處理
      電子制作(2019年14期)2019-08-20 05:43:38
      從濾波器理解卷積
      電子制作(2019年11期)2019-07-04 00:34:38
      基于MQ3與MP3的價(jià)廉物美的酒駕語(yǔ)音提醒器
      電子制作(2019年9期)2019-05-30 09:42:10
      對(duì)方正在輸入……
      開(kāi)關(guān)電源EMI濾波器的應(yīng)用方法探討
      電子制作(2018年16期)2018-09-26 03:26:50
      基于PSO-VMD的齒輪特征參數(shù)提取方法研究
      偃师市| 咸丰县| 安新县| 长兴县| 南丰县| 揭阳市| 黔南| 岳池县| 从化市| 宜川县| 离岛区| 承德县| 武夷山市| 枣阳市| 博罗县| 凭祥市| 罗山县| 芜湖县| 桦川县| 浮山县| 彰化县| 遵义市| 西峡县| 龙泉市| 苍南县| 南宫市| 甘谷县| 兴文县| 渑池县| 东台市| 高雄市| 郸城县| 集贤县| 六枝特区| 桐城市| 两当县| 邵东县| 五寨县| 壤塘县| 滨海县| 炉霍县|