• 沒有找到結果。

以FPGA為平台之嵌入式類神經網路語音辨識系統實現

N/A
N/A
Protected

Academic year: 2021

Share "以FPGA為平台之嵌入式類神經網路語音辨識系統實現"

Copied!
58
0
0

加載中.... (立即查看全文)

全文

(1)國立高雄大學電機工程學系 碩士論文. 以 FPGA 為平台之嵌入式類神經網路語音 辨識系統實現 A FPGA-based Embedded Speech Recognition System Design by Neural Network. 研究生:蔡博宇撰 指導教授:賴智錦 博士 潘欣泰 博士.

(2) 中華民國九十八年一月以 FPGA 為平台之嵌入式類神 經網路語音 辨識系統實現 指導教授:賴智錦 博士 國立高雄大學電機工程系 共同指導教授:潘欣泰 博士 國立高雄大學資訊工程系. 研究生:蔡博宇 國立高雄大學電機工程所. 摘要. 本篇論文利用倒傳遞式類神經網路,來進行語音辨識,並且實現在嵌入式平 台上。由於在進行語音處理的過程中,在 FFT 的計算時有大量的浮點數運算,且 平台沒支援浮點數運算的硬體,所以需要很長的計算時間。在本篇論文中,我們 使用整數的 FFT 取代原本的浮點數 FFT,在不影響原本的辨識率下,可大量減少 計算的時間,提昇語音辨識速度。. 關鍵字:倒傳遞類神經網路、語音辨識、整數傅立葉轉換、嵌入式系統、可程式 關鍵字 系統晶片。. I.

(3) A FPGA-based Embedded Speech Recognition System Design by Neural Network Advisor: Dr. Chih-Chin Lai Department of Electrical Engineering, National University of Kaohsiung Coadvisor: Dr. Shing-Tai Pan Department of Computer Science and Information Engineering, National University of Kaohsiung. Student: Po-Yu Tsai Department of Electrical Engineering, National University of Kaohsiung. ABSTRACT. A Back-Propagation Neural Network was used to process speech recognition in order to implement the result on the embedded platform. Due to abundant float-points that were the result of FFT multiplication, supportive hard-ware that should be used for speech recognition could not be found. Therefore long calculation times were needed. An integer was used to replace the float-points in the FFT multiplication calculations in this study and it is hoped that the calculation time could be shortened and the speed of speech recognition increased to the original recognition rate. Keywords: Back-Propagation Neural Network, Speech Recognition, Integer FFT, Embedded System, System On a Programmable Chip.. II.

(4) 致謝. 對於這篇論文能夠順利完成,首先最感謝的是我的指導教授-潘欣泰博士, 在他耐心與詳盡的指導之下,讓我從不懂如何做研究直到現在完成研究,這之間 的過程恩師著實給我莫大的幫助。尤其最後完稿這段時間,他在百忙之中還是再 三撥空指點我論文該改進與加強的地方。此外,跟隨老師研究的這段時間,除了 研究、為人處事方面,在日常生活上也深受老師的照顧,老師總是和顏悅色的指 導著我,使我可以專心做研究,不至於感受到太大的壓力。 另外感謝擔任葉瑞峰老師和賴智錦老師,感謝他們撥冗參與我的口試,並 給我的未來研究日上的寶貴指點與鼓勵,在此感謝他們。 此外研究所的所有同學以及學長和學弟,科瑋、長隆、竑錤、亮嘉在平常 就互相鼓勵,在課業上也互相幫忙。 另外,也感謝我從小到大的好朋友,在我研究不順遂時,聽我的抱怨與對 我的鼓勵。當然,這篇論文要感謝的還有我親愛的家人,因為你們的體貼與鼓勵, 我才可以專心完成這篇論文並實現自己的理想。最後,僅向這段日子曾經幫助 我、鼓勵我的所有朋友致上最深的謝意。. 蔡博宇 於高雄大學電機工程研究所 中華民國九十八年一月. III.

(5) 目錄 第一章 緒論.………………………………………………….………………..…….1 1.1. 研究動機.………………………………………………….……………….1. 1.2. 研究方向…………………………………………………………………...2. 第二章 語音的前置處理…………………..…………………………………………3 2.1. 兩種常用的音框…………………..………..………………………………3 2.1.1 矩形窗.……………………………………….………………………..4 2.1.2 漢明窗.………………………………………….……………………..4. 2.2. 動態重疊率…………………………………….…………………………..5. 2.3. 端點偵測…………………………………………………………………...6 2.3.1 能量偵測法………………………………..…………………………..7 2.3.2 越零率偵測法…………………………………………………………7 2.3.3 R-S 偵測法............................................................................................8. 2.4. 高頻增強……………………………..…………………………………….8. 2.5. 特徵值的計算………………………………...……………………………9 2.5.1 梅爾倒頻譜係數…………………………………………..…………..9. 第三章 快速傅立葉轉換………………….............................……………………13 3.1. 快速傅立葉轉換………………….............................……………………13. 3.2. 固定長度的計算.........................................................................................14. 第四章 倒傳遞類神經網路……………………………………………………...….17 4.1. 網路結構………………………………………………………………….18. 4.2. 網路的學習……………………………………………………………….20 4.2.1 隱藏層與輸出層之間的權值………………………………………..20 4.2.2 隱藏層與輸入層之間的權值………………………………………..21 IV.

(6) 第五章 Nios II 系統發展環境及設計方法…………………………………………24 5.1. Nios II 系統………………………………………………………………25. 5.2. Nios II 整合發展環境………………..……………………………………27. 5.3. 使用者自訂邏輯………………………………………………………….27 5.3.1 系統匯流排……………………………….………………………….28 5.3.2 A v a l o n - M M 的 訊 號 線 … … … … … … … … … … … … … … . . 2 9 5.3.3 Slave 硬體的資料傳送……………………………………………...30. 第六章 系統實現與實驗…………………....……..………………………………..32 6.1. 本論文使用的 SOPC 系統…………………....……..…………………..33 6.1.1 Audio Codec 和控制器……………………………………………...34 6.1.2 I2C 協定..............................................................................................36. 6.2. 語音辨識實驗…………………………………………………………….37. 6.3. PC 上的辨識率比較………………………………………………………39 6.3.1 mfcc 特徵參數的選定………………………………………….…..39 6.3.2 整數 FFT 與浮點數 FFT 的比較…………………………….……..40. 6.4. 硬體平台上的速度比較………………………………………………….44. 6.5. 硬體上的辨識系統……………………………………………………….45. 第七章 結論……………………………………………………………………….47 參考文獻……………………………………………………………………………..48. V.

(7) 圖目錄 圖 2.1 矩形窗(rectangular window)…………………………………………4 圖 2.2 漢明窗(hamming window)……………………………………...……5 圖 2.3 語音訊號的端點偵測…………………………………………...……6 圖 2.4 計算 Mel-Frequency Cepstrum Coefficient 的步驟………………10 圖 2.5 Mel-Frequency 與一般頻率的比較………………………………...11 圖 3.1 256 點的時間分解演算法………………..…………………..…..14 圖 3.2 N 點的時間分解 FFT………...…...…...……………………..……..14 圖 3.3 浮點數轉成整數與建表…………………………………………….15 圖 3.4 複數(complex)乘法的蝴蝶圖……………………………..…….. 16 圖 4.1 倒傳遞類神經網路(Back-Propagation Neural Network)…..……..18 圖 4.2 轉移函數(transfer function)………………………………………..19 圖 5.1. Nios II 系統實現在發展板上…………………………...………..25. 圖 5.2 SOPC Builder 的視窗……………………………………………..26 圖 5.3 Nios II 整合發展環境…………………………………………….27 圖 5.4 Avalon-MM 系統.............................................................................28 圖 5.5 基本的Slave讀取(Read)…………………………………………...30 圖 5.6 基本的Slave寫入(Write)…………………………………..………31 圖 6.1 DE2-70 發展版……………………………………………………...32 圖 6.2 我們 SOPC 系統的方塊圖….…………………………………..33 圖 6.3 audio controller的方塊圖….………………………………………34 圖 6.4 主控模式(Master Mode)….……………..………………………35 圖 6.5 I 2 S 模式….………………………………..…...……………………35 圖 6.6 I2C 協定的步驟...................................................................................36. VI.

(8) 圖 6.7 整數 FFT 與浮點數 FFT 的頻率能量誤差….…….………………40 圖 6.8 浮點數 FFT 和整數 FFT 的頻率能量….……….………………..42 圖 6.9 整數 FFT-ANN 和浮點 FFT-ANN 收斂過程的誤差(分鐘)…….....42 圖 6.10 整數 FFT-ANN 和浮點數 FFT-ANN 收斂過程的誤差(學習次數)43 圖 6.11 辨識系統的實際測試….………………………………...………...46. VII.

(9) 表目錄 表 5.1 Avalon-MM副屬端(Slave)所使用之訊號線…………………………29 表 6.1 中文語音資料庫………………………………………………………37 表 6.2 為語音辨識的計算方式整理…………………………………………38 表 6.3 MFCC 的 n 参數選擇與辨識率比較……………………...…………39 表 6.4 整數 FFT 與浮點數 FFT 的辨識率比較…………...…………………42 表 6.5 整數 FFT 學習循環次數與其誤差…………………………………..43 表 6.6 浮點數 FFT 學習循環次數與其誤差……………………………...44 表 6.7 語音辨識其時間分佈………………………………………………...45 表 6.8 整數 FFT 與浮點數 FFT 的計算時間比較…………...……………45 表 6.9 整數 FFT 與浮點數 FFT 的辨識全部計算時間比較………...…....45 表 6.10 經由 100 組測試語音辨識結果……………………………………46. VIII.

(10) 第一章 緒論. 語言一直以來都是人類用來溝通的工具,但若是想要與機器溝通,則需要 設計一套語音辨識的系統,以便達到與機器溝通的目的,隨著科技的進步,語音 辨識技術已經漸趨成熟,並且應用在多樣產品上面;對於語意的部分,就必須進 入到人工智慧的領域,大多數的語音研究還是針對於將語音轉換成命令或是文字 的型態居多,例如手機語音撥號功能,或是文書處理的語音輸入等等,目前的語 音辨識系統已經達到一個可接受的程度,並且辨識率越來越高。 語音辨識有多種不同的架構,其架構分為三類:第一類是最早期的動態時 軸校正(Dynamic Time Warping, DTW)的方法,其作法就是把預錄好的語音資料當 成語音樣板(Template),當新的語音資料要比對時,便拿出先前預錄好樣板來作 動態時間校準之比對,算出兩個語音特徵向量序列之間累積的距離。當距離越小 時就表示相似度越高,最後選出與所有預錄好樣板比對距離最小者,就是辨識結 果,其缺點就是當初要比對的資料越多,需要越多的記憶體來儲存資料;第二 類則是類神經網路(Artificial Neural Network, ANN)的方法,ANN 的出現替代了 動態時軸校正的應用,類神經網路在訓練後,好處是只需要儲存網路的權重值, 資料量較少; 最後第三類是隱藏式馬可夫模型(Hidden Markov Model, HMM)的 出現,此方法採用統計的方式,計算內部狀態轉移的機率,進而提高語音辨識率 的效果,但是在實際的電子產品應用上,隱藏式馬可夫模型(HMM)的複雜性在 計算機率轉換時,遠高於類神經網路以及動態時軸校正,也因為類神經辨識語音 的速度優於其他方式,加上辨識時所需的計算負擔也較少,較適用於計算能力較 低的晶片架構,所以本篇論文採用類神經網路來做為語音辨識系統架構[1,2]。. 1.1. 研究動機 語音辨識目前最有價值的應用就是實現在消費性電子產品上,但是市面上 1.

(11) 的消費性電子產品如手機、PDA,因為屬於個人行動通訊系統,必須提供體積小、 省電、重量輕和成本的考量,所以處理器不可能像 PC 上擁有額外的浮點數硬體。 因此當我們把 PC 上的語音辨識移植到手機、PDA 上時,少了浮點數硬體,雖然 還是可以處理浮點數,但是利用軟體演算法的運算,增加了不少時間。使用者對 產品使用的感覺上,會有很明顯的延遲,這就不符合 Real-time 的應用。而利用 整數的運算取代浮點數,可大幅降低此延遲,在 Integer Fast Fourier Transform [11],這篇中有其計算方式的介紹。本篇論文就是用這方法,觀察對類神經網路 的影響,並且測試其在硬體上對速度的差別。. 1.2. 研究方向 嵌入式系統的設計上,有兩個要求,一個是 real-time 的要求,另一個是. 記憶體使用量的簡化,本篇論文以時間的改進為主。本篇的特徵值計算採用梅爾 頻率倒頻譜,而梅爾倒頻譜參數是在頻域作計算,所以必須先將時域轉為頻域, 需要用到 FFT,大量的數位訊號處理計算,對於嵌入式系統要求的 real-time,造 成很大的負擔。論文中用整數的 FFT 替換原本的浮點數計算,期許降低計算時 間,最後以類神經網路作為語音辨識平台,並實現於 FPGA 之嵌入式平台上。. 2.

(12) 第二章 語音的前置處理 語音訊號在不同時間上,就算相同的人說同一句話,其波形卻會因為說話 時的情緒而不盡然相同,也可以說語音是一種隨時間而變的動態性訊號 (time-varing),語音辨識工作就是要從這些動態的訊號中,找出規律性,一旦找 到規律性之後,訊號再怎麼隨時間變化,大致上都能指出它們的特性所在,進而 把它們辨識出來,這種規律性在語音辨識上稱為特徵參數,也就是能夠代表訊號 特性的參數。語音辨識的基本原理就是以這些特徵參數做基礎[1,3,4]。 由於一個語音信號資料通常是很大且連續的,很難直接從龐大的聲音資料 去分析、辨識,最好是能夠先利用分割的方法,將一段連續聲音訊號切成數個音 框(frame),然後再分別從這些音框中去進行特徵值的計算,也就是只要在這短時 距內去計算其特徵值,使的整個語音信號資料簡化後即可進行辨認。. 2.1. 兩種常用的音框 當人說話時,發音腔道會隨著時間而改變形狀與位置,因此發音系統為時. 變系統。然而在短時間內(20ms),發音腔道不會有太大的變化。因此我們在分析 語音時可將語音分段處理,在這一小段時間內可假設為非時變系統,這樣一來, 我們就可以用處理非時變訊號的方式來對時變訊號處理。在語音處理上,每一時 間區段是一個短時距(short time period)或被稱為一個音框(frame)。 在我們利用音框來分析語音時,音框的長度會影響訊號的解讀。當音框過 長時,會很難觀察短時間內語音的變化。然而音框過短時,容易因為語音的突然 變化影響,較不具意義且計算量過大。通常音框的長度在 20ms 到 30ms 之間, 而取樣點的數目受到取樣率的影響。此處我們將介紹兩種常用的窗: 矩形窗 (Rectangular window)和漢明窗(Hamming window)[1,2,5,7,8]。. 3.

(13) 2.1.1 矩形窗 在利用音框來分析語音之前,就是利用下圖的矩形窗,將原始的語音訊號 乘上矩形窗,來截取音框。 1, wR (n) =  0,. 0 ≤ n ≤ N −1 Otherwise. (2-1). (2-1)為矩形窗的數學函式,N 為音框的長度。此音框在語音辨識只用來 做端點偵測的使用。 圖 2.1 為矩形框在時域(time domain)的波形圖[1],N為256 個取樣點。. 圖 2.1 矩形窗(rectangular window). 2.1.2 漢明窗 乘上漢明窗的主要目的,是要加強音框左端和右端的連續性,這是因為在 進行快速傅利葉轉換(Fast Fourier Transform)時,都是假設一個音框內的訊號是代 表一個週期性訊號,如果這個週期性不存在,FFT 會為了要符合左右端不連續 的變化,而產生一些不存在原訊號的能量分佈,造成分析上的誤差。. 4.

(14)   2nπ  , 0.54 − 0.46 cos wH =   N −1 0, . 0≤n≤ N 1. (2-2). Otherwise. (2-1)式為漢明窗的數學函式,N為音框的長度。此數學函式在音框中間的 部分有較大的權重,而兩端漸漸趨於零。這種加權方式再配合相鄰分析框的重 疊,可使框分析後得到的結果具有平滑的效果,圖 2.2 為漢明窗在時域(time domain)的波形圖[1], N為256個取樣點。. 圖 2.2 漢明窗(hamming window). 2.2. 動態重疊率 因為每個語音訊號的長短不一,若採用固定音框長度,音框的數目會因為. 每次的說話快慢速度不一而有所不同,這對使用動態校準法DTW[1]的語音辨識 平台是沒有問題的,但是對於本篇使用的類神經網路,ANN 就無法使用固定音 框,而必須改用變動音框來得到固定的音框數目。 在適當的訊號長度下,動態的重疊比率可以得到固定的音框數目。首先, 我們固定音框的長度與數量,接下來我們便可得到固定的音框數目[2]。. 5.

(15) R=.  lS − lF  1  l F − Fix   lF   N F − 1 . (2-3). R 為音框的重疊率,l F 為音框的長度,l S 為訊號的長度, N F 為音框數目, Fix(x) 為小於 x 的最大整數。. 2.3. 端點偵測 在做語音訊號的處理之前,我們必須區分有聲段與無聲段,然後才利用有. 聲段來做語音辨識,此步驟稱為端點偵測。如圖 2.3 捨棄無聲段,可讓語音訊號 處理的時間降低。. 圖 2.3 語音訊號的端點偵測. 語音訊號端點偵測的演算法有很多種,大致上可區分為三大類型:(1)時 域(time-domain)端點偵測法;(2)頻域端點偵測法;(3)混合參數端點偵測法等,其 中時域端點偵測法是最簡單也最常被應用的一種方法,但其最大的缺點是對雜訊 的免疫力較低;而頻域端點偵測法以及混合參數端點偵測法,兩者的精確度較 高,對抗雜訊的能力也較強,唯其所需的計算量較煩雜,因此不適合實現在硬體. 6.

(16) 上;因此我們針對時域端點偵測法做說明。時域端點偵測法可分為三種方式: (1) 能量(Energy)偵測 ; (2) Zero-crossing rate detection;(3) R-S detection[1,3,6,7]。. 2.3.1 能量偵測法 L. E ( m) =. ∑ x (n). 2. (2-4). n = m − L +1. E(m) 為第 m 個音框能量的總和,L 代表每個音框的長度,n 為音框中的位置。 ~  1 Threshold = 7.5% × max  E (n) +   K. K. ~. ∑ E (i),1 ≤ n ≤ N. (2-5). i =1. K代表靜音音框的數量,E(i)為第i個靜音音框的能量總和,再加上靜音音框中 ~  最大值( max  E (n) )乘上 7.5% 來做為門檻值[1]。  . 首先利用式(2-4),我們得到每個音框的能量總和,接下來在利用式(2-5) 來設定能量的門檻值。在端點偵測中,只要音框的能量值未超過門檻值時,代表 語音尚未開始,若語音連續多個音框都超過門檻值時則可以確定語音起始,而語 音的結束點仍然是藉由門檻值判斷語音的結束端點[1]。. 2.3.2 越零率偵測法 除了利用語音的能量來做端點偵測外,另外一種方式則是利用語音的訊號 擺動。在上下擺動的波形中,當振幅由正變負,或是由負變正都是越過零線,每 當越過零線次數越多代表震動越劇烈,經由越過零線的次數來判斷語音起始點。. m. ∑ u[sgn (− x[n] × x[n + 1])]. ZCR (m) =. (2-6). n = m − N +1. 其中 1, u (x) =  0,. x≥0. (2-7). x<0. 7.

(17) 1, sgn(x) =  − 1,. x≥0. (2-8). x<0. 若兩訊號為同號時, x[n] × x[n + 1] 必定為正數,換句話說,若兩個訊號不為同號, x[n] × x[n + 1] 必定為負數。經過式(2-6),我們可以計算經過零線的次數。. 2.3.3 R-S 偵測法 以上兩種方法皆有其缺點,使用能量偵測無法偵測出氣音的部分,而因為 雜訊在過零線的次數很高,所以就算使用過零率來判斷氣音,在噪音的環境下, 無法跟氣音做區分,由 Rabiner 和 Sambur 提出將兩者的優點結合,這個方法就 是 R-S detection[1]。. Thd E = C E × max[E ( N )] +. 1 N. N. ∑ E (i ). (2-9). i =1. Thd Z = C z × max[ZCR (n )]. (2-10). (2-9) 為音框的能量門檻值,假設語音前幾個無聲音框為雜訊,我們先將能量的   最大值( max  E ( N ) )乘上 C E (5%~10%) ,再加上雜訊的平均值,得到能量的門     檻值( Thd E )。另外將最大的過零率( max  ZCR (n) )乘上 C Z (20%~40%) ,可以得  . 到過零率的門檻值(2-10),用來判斷氣音。首先,利用能量偵測的方式判斷有聲 段的開始和結束,從開始的地方向前尋找第一次低於過零率門檻的位置,當作氣 音的開始,但是如果兩者間的距離過長,必須認為此為噪音的影響,用能量尋找 到的地方做為聲音的開始。而從能量結束的位置,向後尋找的方式相同[1, 3, 5]。. 2.4. 高頻增強 聲音訊號在空氣中傳送時,在高頻的地方會有衰減的情形,而根據研究, 8.

(18) 人耳在高頻有提升的特性。所以為了補償此衰減與模擬人耳的特性,我們將原始 語音送入一階的有限脈衝響應濾波器(finite pulses respond filter),如下[1, 3]:. S (n) = X (n) − 0.95 X (n − 1),1 ≤ n ≤ L. (2-11). L 為語音的長度,X(n)代表原始信號。. 2.5. 特徵值的計算 如果我們的取樣頻率為 8k,每秒的取樣點會有 8000 個,如此龐大的資料. 不利於辨識語音,計算速度就是個很大的問題。所以我們利用小單位的音框來做 為訊號的特徵值計算。 普遍來說語音辨識分為時域上的分析與頻域上的分析。時域上的分析比較 直接而且計算量比較小,而頻域上的分析必須先將時域的訊號經過傅立葉的轉 換,此步驟所需的計算量也變多。通常語音特徵值的計算包括Linear Predict Coding (LPC)、linear predict Cepstrum coefficient (LPCC)、Mel-frequency Cepstrum coefficient (MFCC) 等,其中LPC和LPCC的計算是在時域為主,相對於MFCC, 不需要頻率轉換,因此計算量較小且速度較快,但是辨識率就因此較低。此篇論 文考量上,我們以辨識精確為優先,以整數FFT來降低傅立葉轉換時間,所以我 們選擇MFCC[1, 3, 4, 5, 7, 9]。. 2.5.1 梅爾倒頻譜係數 梅爾倒頻譜係數 因為人類聽覺系統對語音訊號之相位(phase)並不敏感,所以語音的頻譜特 徵皆以頻譜中的能量為主。事實上人耳在頻域上的感知,在全頻域沒有相同的敏 感度。正常情形下是對於低頻有較高的解析度,也就是在低頻時可以分辨較小的 頻率差異。此外還有臨界頻帶的現象,在1kHz 頻率以下的臨界頻帶寬度約為 100Hz,1kHz 頻率以上的臨界頻帶寬度成指數增加。因此,我們可以配合人耳 聽覺性,在頻域中以梅爾量度(Mel scale)劃分頻帶,將屬於一個頻帶中的頻率成 9.

(19) 分,合在一起看成一個能量強度,然後將這些頻帶強度,以離散餘弦轉換(DCT) 的演算, 轉換成倒頻譜, 這就是梅爾倒頻譜(Mel-frequency cepstrum),整個 梅爾倒頻譜的過程如下圖2.4 所示。以下說明這個轉換的方式[1,3]。. 圖 2.4 計算 Mel-Frequency Cepstrum Coefficient 的步驟. 所謂的梅爾量度(Mel scale)就是因為人耳在全頻域下,並非都是線性的聽 覺感知。只有在 1KHz 以下為線性,而 1KHz 以上為對數關係如圖 2.5。其中, Mel 為人耳聽覺感知的頻率單位,式(2-12)為一般頻率 f 與 Mel 之間的轉換方式 [1]: f   mel ( f ) = 2595 × log10 1 +   700 . 10. (2-12).

(20) 圖 2.5 Mel-Frequency 與一般頻率的比較. 語音在經過 Preemphasis 和 Hamming window 等等的前處理時,首先把時 域的訊號經過 fast Fourier transform (FFT)。在得到頻域的能量之後,將能量與三 角 濾 波 器 做 相 乘 如 式 (2-14) , 而 濾 波 器 的 中 心 頻 率 如 式 (2-13) 。 其 中 N = frame _ size , f h = 4k 為濾波器的最高頻率, f l = 133 為濾波器的最低頻. 率, f s = 8k 為取樣頻率, M = 40 為濾波器的數目。. N mel ( f h ) − mel ( f l )   f (m) =   × fre mel ( f l ) + m ×  M +1    fs . (2-13). 濾波器兩邊的截止頻率為相鄰濾波器的中心頻率,第 m 個濾波器的函式 如下所示:. 11.

(21) 0,  k− f m −1   f m − f m −1 Bm ( k ) =   f m −1 − k  f m +1 − f m  0,. k < f m −1 f m −1 ≤ k ≤ f. m. (2-14) f m ≤ k ≤ f m +1 f m +1 < k. f m 為第 m 個濾波器的中心頻率, f m +1 和 f m −1 為其上下的截止頻率。 將能量與濾波器做相乘之後,累加與計算對數值,我們得到這個濾波器的 能量 Y ( m) 如式(2-15)。在將M個濾波器的能量值做Discrete Cosine Transform (DCT) 的計算,我們得到Mel-Frequency Cepstrum Coefficient (MFCC) 如式 (2-16)。.  f m +1  2 Y ( m) = log  ∑ x(k ) Bm ( k )  k = f m −1 . (2-15).   1  πn m −   1 2 C ( n) = Y (m) cos  ∑   M m =1 M    . (2-16). M. C (n) 為語 音 訊號 音框 中 第 n 個 梅爾 頻率 倒 頻譜 係 數 Mel-Frequency. Cepstrum Coefficient (MFCC)。. 12.

(22) 第三章 快速傅 快速傅立葉轉換. 我們在計算離散時間傅立葉轉換(DFT)時,有一個快速演算法稱為 FFT。 其好處在於直接計算 DFT 需要 N 2 的乘法如式(3-1),但是如果使用 FFT,則只 需要 N log 2 N 的乘法,所以 FFT 常使用在語音的處理上[13]。. 3.1. 快速傅 快速傅立葉轉換 式(3-1)為訊號 x[n]的 DFT: N −1. X [k ] = ∑ x[n]e. − j 2πnk N. n =0. N −1. = ∑ x[n]W Nnk. 0≤k < N. (3-1). n=0. 其中 WN = e. − j 2π N. (3-2). 式(3-1)需要 N 2 的複數(complex)的乘法和加法,我們先假設 N 為偶數,而. f[n] = x[2n],f[n]為 x[n]的偶數取樣點,另外 g[n] = x[2n+1] ,g[n]為奇數的取樣 點. 我們可將式(3-1)改寫成式(3-3)如下: N −1 2. X [k ] = ∑ f [n]W n =0. nk N 2. +W. k N. N −1 2. ∑ g[n]W n =0. 其中 F[k]和 G[k] 為 f[n]和 g[n]的 如果. nk N 2. = F [k ] + W Nk G[k ]. (3-3). N N 個取樣點 DFT, 而 0 ≤ k < 。 2 2. N 一樣也是偶數,f[n]和 g[n]可以分為偶數與奇數部分,然後可以用 2. 一樣的方法,計算個別的 DFT。換句話說,只要 N 為 2 的次方,可以利用此種 方式,將複數的計算降為 N log 2 N ,對比 DFT 的 N 2 ,節省了不少時間。圖 3.1 為 256 個輸入的時間分解演算法,而圖 3.2 為 N 點的時間分解蝴蝶圖[13]。. 13.

(23) 圖 3.1 256 點的時間分解演算法. 圖 3.2 N 點的時間分解 FFT. 3.2. 固定長度的計算 影響 DSP實現的成本考量有很多種,儲存資料的暫存器長度為其中的一. 種,因為在實際上,不可能讓訊號x[n]與轉換係數 W Nk 擁有無限長度的精確度, 所. 14.

(24) 以個別將其量化成固定的位元數,如圖3.3將 W Nk 分解成 cos θ 和 sin θ 之後轉換成 整數並且建表。在FFT中, W Nk 可以分解為 W Nk = c + js (3-5),其中c為 cos θ ,s為 sin θ ,圖 3.4 為圖 3.2中複數 W Nk 與輸入G[K]相乘的分解圖,其中 cos θ 、sin θ 先 × SF 放大成整數,做完乘法與加法之後(3-6),在 ×. 1 做縮小的動作,並且刪除 SF. 小數點的部分[11,12]。. G[ K ] = Re[G[ K ]] + j Im[G[ K ]]. (3-4). WNk = c + js. (3-5). G[ K ] × W Nk = (cRe[G[K]] - sIm[G[K]]) × SF. + j{(cRe[G[K]] + sIm[G[K]]) × SF }. 圖 3.3 浮點數轉成整數與建表. 15. (3-6).

(25) 圖3.4 複數(complex)乘法的蝴蝶圖. 在複數的計算中,每次加法最多只會增加一個位元(bit),而乘法最多會增 加 N c − 1 個位元數,其中 N c 為 cos θ 或 sin θ 放大之後的位元數。在FFT的計算中, 為了儲存每階段的結果,我們必須有足夠大的暫存器,預防每次運算後的位元增 長,避免產生溢位。普遍上,我們會將此暫存器固定在適當的寬度 N n ,因為位 元數越大,在計算時間會越久,會拖累我們降低時間的目標。. 16.

(26) 第四章 倒傳遞類神經網路. 前面的部分已經將語音的特徵值擷取出來,剩下的部份就是需要比對語 音,透過特徵值參數做為比對的語音辨識有多種方式,而這裡採用類神經網路. ANN 的方式,類神經網路在語音辨識有辨識速度較快的優點,反觀動態時間校 正DTW 的辨識[1],需要將語音樣本資料庫裡的資料與測試語音一一做比對,換 句話說就是當測試語音越多,所耗費的辨識時間也相對的增加。相對的ANN 只 要完成訓練後,對於測試語音的多寡並不會嚴重的增加辨識時間;除了時間的優 勢,也可使用預測以及分類等等不同的領域,ANN 還有一項優點,就是容錯能 力,這是類神經網路特有的特性。. 17.

(27) 4.1. 網路結構 圖 4.1 為倒傳遞類神經網路(Back-Propagation Neural Network):. 圖 4.1 倒傳遞類神經網路(Back-Propagation Neural Network). BPNN是由輸入層、隱藏層、輸出層所組成的,其中隱藏層可以不存在或 多於一層。隱藏層用來描述輸入層之間的關係,並且解決非線性的問題。圖4.1 為使用三層的架構[15]。 在圖 4.1 中, xi 為網路的輸入,也是我們要分類的資料,應用在語音辨識 的話,就是把式(2-16)的特徵值當作輸入。 Y j 為網路的輸出,也可以說是我們要 分類的數目 0 到 9 的語音數字,. f. 為轉換函式如圖 4.2 與式(4-1),此函數用來. 正規化輸入,當輸入為正無限大時,輸出為 1,當輸入為負無限大時,輸出為 0。. 18.

(28) 圖 4.2 轉移函數(transfer function). f ( x) =. 1 1 + e−x. (4-1). 式 (4-2)為隱藏層的輸出:. H k = f (net k ) = f (∑ Wik X i − bk ). (4-2). 其中 H k 為第 k 個隱藏層的 node,Wik 為第 i 個輸入與第 k 個隱藏層之間的. weight, bk 為第 k 個隱藏層 node 的門檻值。 式 (4-3)為整個網路的輸出:. Y j = f (net j ) = f (∑ Wkj H k − b j ). (4-3). 其中 Y j 為第 j 個隱藏層的 node, Wkj 為第 j 個輸出與第 k 個隱藏層之間的. weight, b j 為第 j 個輸出的門檻值。. 19.

(29) 4.2. 網路的學習 網路計算後的輸出值與訓練資料的目標輸出值相較之後可得網路誤差,網. 路即利用此誤差作為修正 weight 的依據,以從訓練資料建立系統模型。式(4-4) 即為一般的誤差函式[14,15,16]:. 1 n E =  ∑ T j − Y j  2  j =1. (. )2. (4-4). 其中 T j 為第 j 個網路的目標輸出值, Y j 為第 j 個網路輸出值,n 為輸出層 的數目。 因為誤差函式(4-4)可以將 Y j 替換成(4-3),因此誤差函式也是網路連結上 加權值的函式,所以我們可以調整權重值讓誤差函式的值降低。 每當輸入一個訓練資料,網路即小幅調整連結的加權值,調整的幅度和誤 差函式對該加權值的敏感程度成正比,即與誤差函式對加權值的偏微分值大小成 正比 (4-5):. ∆W = −η. ∂E ∂W. (4-5). 其中η 控制每次權值調整的幅度。. 4.2.1 隱藏層與輸出層之間的權值 我們可以利用微積分的 chain rule 來解誤差函式對 Wkj 的偏微分如式(4-6):. ∂E ∂E ∂Y j ∂net j = ∂Wkj ∂Y j ∂net j ∂Wkj. = −(T j − Y j )× f ' (net j )× H k. (4-6) 20.

(30) 假設 δ j = (T j − Y j )× f ' (net j ). (4-7). 我們得到權重值的修正量如式(4-8)。. ∆Wkj = −η. ∂E ∂Wkj. = η × (T j − Y j )× f ' (net j )× H k =η ×δ j × Hk. (4-8). 同理,式(4-9)為門檻值的修正量。. ∆b j = −η. ∂E ∂b j. = −η × δ j. (4-9). 4.2.2 隱藏層與輸入層之間的權值 我們一樣利用 chain rule 來計算 Wik 如式(4-10)。. ∂E ∂E ∂H k ∂netk = ∂Wik ∂H k ∂netk ∂Wik.  ∂E ∂Y j ∂net j  = ∑ × f ' (net k ) × X i  j ∂Y ∂net ∂H  j j k  .   =  ∑ − (T j − Y j )× f ' (net j )× Wkj  × f ' (net k ) × X i  j    = − ∑ δ jWkj  × f ' (net k ) × X i  j . (4-10). 21.

(31)   假設 δ k =  ∑ δ jWkj  × f ' (net k )  j . (4-11). 我們得到權重值的修正量如式(4-12)。. ∆Wik = −η. ∂E ∂Wik.   = η ×  ∑ δ jWkj  × f ' (net k ) × X i  j . =η ×δk × X i. (4-12). 同理,式(4-13)為門檻值的修正量。. ∆bk = −η. ∂E ∂bk. = −η × δ k. (4-13). 另外,加上某比例的上一次修正量,可以改善收斂過程中震盪的現象。每 一次訓練得到的修正量,加上目前的門檻值和權重值得到新的值如下:. Wkj = Wkj + ∆Wkj. (4-14). b j = b j + ∆b j. (4-15). Wik = Wik + ∆Wik. (4-16). bk = bk + ∆bk. (4-17). 22.

(32) 學習過程通常以一次一個訓練資料的方式進行,直到學習完所有的訓練資 料,稱為一個學習循環。一個網路可以將訓練資料反覆學習數個學習循環,直至 達到收斂。. 23.

(33) 第五章 Nios II 系統發展環境及設計方法. 近年來 VLSI 製程的進步,使的晶片的密度越來越高讓我們可以設計整個 系統在單一晶片中,稱為 SOC (System-on-a-chip)。這種設計方式是基於 IP 的整 合,除了機械與外部電路,其餘的電子系統都放進單一的晶片中。對於經過驗證 且需要大量生產的 SOC,可以利用晶圓廠大量生產,但是對於還在發展階段或 僅為小量的應用,利用晶圓廠生產,不僅成本過高且有極大的風險,最近發展起 來的 SOPC 技術,提供了另一種有效的解決方式,即用 FPGA 實現 SOC 的功能。 本篇論文的實驗採用由 ALTERA 公司提出的 SOPC 系統。ALTERA 公司 提供一系列的 EDA 軟體包括 Quartus II、SOPC Builder、Nios II,利用這些軟體, 我們可以實現 SOC 系統在 FPGA 上。此章節將介紹 SOPC 系統的架構與軟體發 展環境[19,20]。. 24.

(34) 5.1. Nios II 系統 在設計環境中,我們不僅可以利用預先定義好的Nios II processor與其他標. 準的周邊元件建構整個系統,也可以加上我們自己定義的電路。在實驗中,我們 選擇的晶片為Cyclone II,其系統可架構為圖5.1。. 圖 5.1 Nios II 系統實現在發展板上. 其中Nios II processor 為了跟Cyclone II FPGA chip中的其他電路做連接,. 25.

(35) 必須利用ALTERA提供的BUS,稱為Avalon Switch Fabric。而內建在FPGA chip 中的memory blocks則可以利用成為Nios II processor的on-chip memory。至於發展 版上的SRAM、SDRAM 和 Flash memory chips則可利用內建的標準controller作 連接。另外可以利用Parallel和serial的輸入輸出介面來做電腦和發展版之間的溝 通, 其中利用JTAG Debug module ,可以讓電腦下載程式碼進memory,執行程 式或中斷。. Nios II system中的所有硬體都可以利用hardware description language撰寫 並且下載進FPGA chip,不過SOPC Builder 這個軟體提供我們一些標準常用的. IP,只要設定一些參數就可以簡單的建構整個系統如圖5.2。5.3節我們將介紹自 行定義的硬體[20]。. 圖 5.2 SOPC Builder 的視窗. 26.

(36) 5.2. Nios II 整合發展環境 Nios II IDE 提供一個發展環境讓使用者的程式與 SOPC Builder 所產生的. 硬體資訊做連結如圖 5.3 [19] 。實驗中,我們的系統沒有作業系統,無法以. multi-threaded 來執行程式,故以 single-threaded 的方式來執行程式。. 圖 5.3 Nios II 整合發展環境. 5.3. 使用者自訂邏輯 NIOS II system允許使用者定義自己的電路,此電路跟Nios II processor之. 間的溝通一樣要透過Avalon Switch Fabric,此BUS的架構分為兩種,在實驗中, 我們使用的是Avalon-Memory-Mapped interface,此架構定義了電路與BUS之間連 接的訊號線與時脈。我們在設計電路時,只需要考慮到我們電路規格是否有符合 匯流排的要求,並不需要去考慮到匯流排內部交換電路的特性[17]。. 27.

(37) Avalon-MM interface 主要定義: . 一組訊號線。. . 每個訊號線個別的行為. . 訊號線在BUS和電路之間的傳送. 5.3.1 系統匯流排 系統匯流排 當處理器與多個 master電路需要對周邊元件做存取時,就可將需求送至. Avalon bus上,再透過其內部的仲裁邏輯選擇出最適當的周邊元件,方可完成處 理器與周邊元件間的通溝。而在Avalon Bus中,包含了所有控制、資料及位址訊 號線,以及其它許多仲裁邏輯的集合。圖5.4為多個master電路在同一個NIOS II 系統透過Avalon bus與slave電路連接。. 圖 5.4 Avalon-MM 系統[17]. 28.

(38) 5.3.2 Avalon-MM 的訊號線 Avalon-MM interface 定 義 了 一 組 訊 號 線 讓 周 邊 電 路 可 以 使 用 例 如 address, data,chipselect等等,在設計電路時,可以針對需要而選擇。然而訊 號線也會因為電路是slave或者是master,而影響訊號線傳送時的行為。 周邊電路除了連接bus的訊號線之外,當然可以有其他訊號線不管是連接 到FPGA chip 之內或之外。在實驗中,我們只使用到slave電路,所以只列出一些. slave電路的主要訊號線如表5.1。. 表5.1 Avalon-MM副屬端(Slave)所使用之訊號線[17] 訊號線. 寬度. 方向. 描述. clk. 1. In. 所有Avalon-MM slave介面的訊號線都同步 於此clock。. chipselect. 1. In. 所有 Avalon-MM slave 的輸入訊號線被忽 略,除非chipselect被拉起。. address. 1-32. In. 用來指定slave中的位址空間。. read. 1. In. 如果使用,readdata或data也必須使用。. readdata. 1-1024. Out. 用 來 將 資 料 傳 送 到 系 統 匯 流 排 (system interconnect fabric)。. write. 1. In. 如果使用,writedata或data也必須使用。. writedata. 1-1024. In. reset. 1. In. 用 來 將 資 料 從 系 統 匯 流 排 (system interconnect fabric) 寫 入 到 slave , 如 果 使 用,write或writebyteenable也必須使用,而 data可以不使用。 用來將 slave重置。如果被拉起, slave 必須 進入到重置的狀態。. 29.

(39) 5.3.3 Slave 硬體的資料傳送 Nios II processor在控制周邊電路的時候,主要是利用address訊號線來指定 電路,read與write訊號線用來控制讀寫,readdate和writedata訊號線用來做資料的 傳遞,這些訊號在系統的定義中,有其時脈的先後順序,如果在撰寫周邊電路時, 沒遵守此規定時,電路的運作就不會正常,以下將介紹基本的讀寫順序[17]。. 圖5.5 基本的Slave讀取(Read)[17]. 基本的read可以在1個clock之內完成,在圖5.5中,傳送開始於rising clock. edge, 而 結 束 於 下 一 個 rising clock edge 。 在 第 一 個 rising edge 之 後 , system interconnect fabric傳送address,byteenable和read的訊號給slave 電路,而 system interconnect fabric 在內部對 address 作解碼,並且拉起 chipselect 的訊號線,一旦 chipselect被拉起,則slave電路將資料寫入readdata,在下一個rising clock edge的 時候,system interconnect fabric就可以得到資料。 另 外 基 本 的 write 一 樣 可 以 在 1 個 clock 之 內 完 成 , 在 圖 5.6 中 , system. interconnect fabric傳送address、writedata、byteenable和write訊號給slave電路。而 system interconnect fabric一樣在內部對address作解碼,並且拉起chipselect的訊號 線,slave電路在下一個rising clock edge得到資訊,並馬上寫入到slave內部的暫存 器。. 30.

(40) 圖 5.6 基本的Slave 寫入(Write)[17]. 31.

(41) 第六章 系統實現與實驗. 在我們的實驗中,利用 SOPC 來架構硬體部分,所以這章的前半部,將介 紹整個系統與用到的硬體,後半部章節,將比較其語音辨識率與計算速度。 圖 6.1 為我們實驗所使用的發展板,其中 push button 用來控制錄音的開始與結 束,SDRAM 用來儲存語音資料,flash 用來儲存測試語音,Toggle switch 用來控 制 AUDIO codec 的 sample rate。. 圖 6.1 DE2-70 發展板. 32.

(42) 6.1. 本論文使用的 SOPC 系統 圖 6.2 為整個語音辨識 SOPC 系統的方塊圖,其中系統分為硬體和軟體部. 分,因為 license 的關係,所以實驗利用 SRAM 來儲存程式碼,而在硬體部分,. SDRAM、SRAM、LCD、都是用SOPC Builder提供的標準控制IP,而push button 和Toggle switch則利用內建的PIO來做連接,SEG7 Controller和AUDIO Controller 則是使用者自訂的,AUDIO eeeeeController用來接收語音資料,SEG7則用來顯 示辨識結果。在下一節我們將介紹AUDIO Controller的硬體架構與I2C Protocol, 在此I2C Protocol用來控制語音晶片的registers。. 圖 6.2 SOPC 系統的方塊圖. 在實驗裡,我們用 PLL 將系統頻率調整成 100Mhz,另外,因為 SDRAM 33.

(43) 和 SSRAM 的手冊中對 clock 的規範,所以一樣利用 PLL 將輸入的 clock 延遲 3ns。. 6.1.1 Audio Codec 和控制器 這個元件在實驗中用來接收錄音的資料,不過他也可以將要播放的資料送 給語音晶片。. 圖 6.3 audio controller的方塊圖. 在這個元件中定義了四個registers如圖6.3,DAC FIFO READ 用來判斷是 否要開始讀取語音並且接收錄音的資料,ADC FIFO WRITE 用來判斷播放聲音 的開始並且送出聲音資料,FIFO CLEAR用來清空FIFO,此FIFO用來作為錄音或 者撥放聲音的BUFFER,而FIFO STATUS用來紀錄FIFO空的或者是滿的,最後,. Avalon Slave Port遵守Avalon-MM Slave的規範。 在實驗中, audio chip 被設定為主控模式 (Master Mode) 如圖 6.4 , DSP. ENCODER/DECODER為我們的AUDIO controller,此模式主要是指定port的傳輸 方向,另外, audio chip 被設定為 I 2 S 和 16-bit mode 如圖 6.5 ,此模式在必須在. DACLRC 或 ADCLRC 改變時,並且在BCLK的第二個 rising edge 才可以做資 料的傳輸,最後,語音晶片的 XTI/MCLK 腳位,則必須用 PLL調整 18.432MHz 的clock 輸入[18]。 34.

(44) 圖 6.4 主控模式(Master Mode) [18]. 圖 6.5 I 2 S 模式[18]. 35.

(45) 6.1.2 I2C 協定 在上一節中介紹的語音晶片的模式,其設定的方式就是 I2C protocol,此. protocol 主要是以軟體方式來實現,而硬體部分則是利用 SOPC Builder 的 PIO 連接到語音晶片上的兩個腳位,而 PIO 則連接到 System Interconnect Fabric 。模 式的設定主要是利用 PIO 改變語音晶片中的 register,除了可以改變上一節中介 紹的,也可以改變取樣率。 在一個完整的傳輸過程中,晶片需要確認資料的開始與結束如圖 6.6,每 一筆資料的傳送,如果晶片確實收到,它會回復一個 ACK 的訊號,如果沒有回 覆,訊號必須從頭從新傳送。除了後兩筆的資料,第一筆資料 address 是用來指 定內部的 register,而改寫此 register 的內容就是用來對各種模式的指定。所有的 傳送都是從高位元開始傳[18]。. 圖 6.6 I2C 協定的步驟[18]. 36.

(46) 6.2. 語音辨識實驗 我們的實驗主要分為 PC 與發展板上的比較,在 PC 上,我們比較 float FFT. 與 integer FFT 對 ANN 的辨識率影響,而發展板上,我們比較兩者計算速度的差 別,最後利用發展版測試 integer FFT 的辨識率。 實驗利用實驗室錄製的語音資料庫來訓練 ANN,其中的訓練樣本如表. 6.1,總共有 10 個人的語音資料,每個人錄 0 到 9 的中文語音,每個聲音錄 4 次, 而聲音的格式為取樣率 8Khz,16bit 的精確度,單聲道,以 wav 檔案格式儲存。. 表 6.1 中文語音資料庫 中文語音資料庫 數字. 次數. 人數. 錄音格式. 0-9. 4. 10. 16bit, 8khz 1 channel .wav file. 在辨識語音前,先利用 Energy detection 來偵測有聲段與去除無聲段,接 下來進行 Preemphasis 的處理,最後將有聲段的部分切成 25 個相等長度的 frame, 每個 frame 在計算特徵值並依照順序作為 ANN 的輸入。但是每次錄音的長度會 因人而異,所以我們利用 Dynamic overlap size 的方式來取得固定的音框數目, 其中將 frame 固定為 256 的寬度。每個音框利用 MFCC 計算 10 個特徵值,因此 總共有 250 個特徵值作為 ANN 的輸入。另外在計算 integer FFT 時, N c 量化為. 10bit,內部暫存器 N n 取 32bit。 在實驗中,我們採用三層的ANN架構,其中輸入層有250個輸入,隱藏層 為30個,輸出為分類數目10個,而在式(4-8)的學習速率 η ,其初始值為0.1,每次 學習循環乘上0.999,直到0.01不再改變。另外在測試的過程中,特徵值在輸入 37.

(47) ANN前先乘上0.1,因為將輸入縮小可以讓權重值在訓練時,最大與最小時之間 的差距拉大,這樣收斂效果較好。而網路的權重值參數初始值$在+3.5到-3.5之 間為最佳,避免隱藏層的轉移函數輸出為1或0,造成收斂過慢,表 6.2為語音辨 識過程中使用的方法。. 表 6.2 為語音辨識的計算方式整理 音框 語音前置處理. 256 個取樣 點,使用漢明 窗. 端點偵測. 能量端點偵 測法. 特徵值計算. 梅爾倒頻譜 參數. 語音辨識. 使用類神經網路 輸入層 250 個神經元 隱藏層 30 個神經元 輸出層 9 個神經元. 38.

(48) 6.3. PC 上的辨識率比較. 6.3.1 mfcc 特徵參數的選定 在第三章介紹 mfcc 時,(2-16)中,参數 n 為音框的特徵值,通常的選擇為 前 12 個,這節我們測試其選擇對辨識率的影響,利用語音資料庫中,7 個人的 聲音訓練,3 個人測試,每個聲音各測試 12 次。由表 6.3 可看出從 8 開始就算增 加到 12 辨識率也不會比較高,反而會增加類神經網路的輸入,增加類神經網路 的計算時間。在之後的實驗,我們選擇 n 為 8。. 表 6.3 MFCC 的 n 参數選擇與辨識率比較. n. 7. 8. 9. 10. 11. 12. 0. 1. 1. 1. 1. 1. 1. 1. 1. 0.916 0.833 1. 0.916 1. 2. 0.66. 0.916 0.916 0.916 1. 3. 0.416 0.5. 4. 0.5. 0.916 1. 1. 1. 0.916 1. 5. 1. 1. 1. 1. 1. 1. 1. 6. 0. 1. 1. 1. 1. 1. 1. 7. 0.66. 0.5. 0.5. 0.75. 0.75. 0.75. 0.66. 8. 1. 1. 1. 1. 1. 1. 1. 9. 1. 1. 1. 0.916 0.916 1. 總辨識率. 0.72. 0.85. 0.908 0.88. 語音. 6. 辨識率. 1. 1. 0.916 0.916. 0.583 0.333 0.333 0.333 0.416. 39. 0.89. 0.88. 0.916 0.89.

(49) 6.3.2 整數 FFT 與浮點數 FFT 的比較 在做辨識率的比較之前,我們先來觀察 integer FFT 與 float FFT 之間的差 異,因為使用 integer FFT 來作頻域的轉換,其與 float FFT 在計算 FFT 的每個階 段都有誤差產生,因此最後誤差會越來越大,圖 6.7 為兩者計算某個聲音在頻率 上能量的誤差,式(6-1)為誤差的計算方式,每一個 frame 有 256 個取樣點,將 25 個 frame 同一個位置的頻率作平均。. E[ K ] =. 1 25 1 25 integer FFT [ K ] − ∑ ∑ floatFFTi [ K ] i 25 i =1 25 i =1. 0 ≤ K ≤ 255. (6-1) 其中 integerFFTi [ K ] 為第 i 個音框的整數 FFT,而 floatFFTi [ K ] 為第 i 個音 框的浮點數 FFT。 圖 6.7 中,可以看到最大的平均誤差約為 200,但是如果對比於 integer FFT 與 float FFT 在同一位置的頻率能量約為 12 × 10 4 如圖 6.8,相較之下可以忽略不 計,因此 integer FFT 與 float FFT 在頻率的分佈,也可以說是相同的。. 圖 6.7 Integer FFT 與 float FFT 的頻率能量誤差. 40.

(50) 圖 6.8 float FFT 和 integer FFT 的頻率能量. 在訓練語音時,我們利用語音資料庫中 7 個人的聲音當作訓練樣本,而剩 下 3 個人則當作測試樣本,以此來比較 integer FFT 與 float FFT 對 ANN 的辨識 率影響。表 6.4 為 integer FFT 與 float FFT 的辨識率比較,每個中文語音有 12 組測式樣本,我們可以看到兩者並沒有太大的差別,因此可知兩者頻率能量的誤 差對 ANN 的辨識率影響不大。圖 6.9 為 integer FFT-ANN 與 float FFT- ANN 收 斂過程中的誤差,x 軸以分鐘為單位,圖 6.10 為 integer FFT-ANN 與 float FFT-. ANN 收斂過程中的誤差,x 軸以學習次數為單位,其計算方式為式(6-2),其中 E 為式(4-4),簡單的說就是將一個學習循環每個訓練檔案作平均,從圖中可見兩 者收斂的速度相近。表 6.5 與表 6.6 為 integer FFT-ANN 和 float FFT- ANN 的學 習循環次數與其誤差。. ERROR =. 7 9 4 1 E i , k ,t ∑∑∑ 7 × 9 × 4 k =1 i =1 t =1. (6-2). 41.

(51) 其中, Ei ,k ,t 為第 k 個人的第 i 個音而且是第 t 次錄音. 表 6.4 整數 FFT 與浮點數 FFT 的辨識率比較. Float FFT. Integer FFT. 語音. 辨識次數. 辨識成功. 0. 12. 1. 總辨識率. 語音. 辨識次數. 辨識成功. 11. 0. 12. 12. 12. 12. 1. 12. 12. 2. 12. 12. 2. 12. 12. 3. 12. 5. 3. 12. 7. 4. 12. 12. 4. 12. 12. 5. 12. 12. 5. 12. 12. 6. 12. 12. 6. 12. 12. 7. 12. 9. 7. 12. 6. 8. 12. 12. 8. 12. 12. 9. 12. 12. 9. 12. 12. 0.9083. 總辨識率. 0.9083. 圖 6.9 float FFT-ANN 和 integer FFT-ANN 收斂過程的誤差(分鐘). 42.

(52) 圖 6.10 float FFT-ANN 和 integer FFT-ANN 收斂過程的誤差(學習次數). 表 6.5 整數 FFT 學習循環次數與其誤差 學習次數. 網路輸出誤差. 200. 0.216073. 400. 0.120789. 600. 0.078738. 800. 0.058213. 1000. 0.045995. 1200. 0.038290. 1400. 0.033277. 1600. 0.029913. 1800. 0.027542. 2000. 0.025794. 2200. 0.024464. 2400. 0.023484. 2600. 0.022679. 2800. 0.021933. 3000. 0.021236. 43.

(53) 表 6.6 浮點數 FFT 學習循環次數與其誤差 學習次數. 網路輸出誤差. 200. 0.169689. 400. 0.097950. 600. 0.067565. 800. 0.050320. 1000. 0.041379. 1200. 0.036114. 1400. 0.032655. 1600. 0.030201. 1800. 0.028399. 2000. 0.027040. 2200. 0.025981. 2400. 0.025139. 2600. 0.024413. 2800. 0.023750. 3000. 0.023137. 在類神經網路訓練後的權重值與門檻值,最大為 9.4446,最小為-9.4861。. 6.4. 硬體平台上的速度 硬體平台上的速度比較 平台上的速度比較 首先我們將語音辨識過程中,每個方法在硬體上執行的時間列表如表. 6.7,我們再次確認 float FFT 對於語音辨識的執行時間是很大的負擔,所以我們 用 integer FFT 取代 float FFT,表 6.8 為兩者的計算時間比較,很明顯的看出. integer FFT 比 float FFT 快 2 倍以上,使的整體計算時間更符合 real-time 的應 用。最後,表 6.9 為兩者的辨識的全部計算時間比較。. 44.

(54) 表 6.7 語音辨識其時間分佈 秒數(s). section End point detect ,. Preemphasis. 0.11468. hamming. 0.02497. Float FFT. 0.88087. MFCC ( exclude Float FFT). 0.75311. ANN. 0.04770. TOTAL. 1.82114. 表 6.8 整數 FFT 與浮點數 FFT 的計算時間比較. section. 秒數(s). Float FFT. 0.88. Integer FFT. 0.38. 表 6.9 整數 FFT 與浮點數 FFT 的辨識全部計算時間比較. section. 秒數(s). Float FFT. 1.82. Integer FFT. 1.32. 6.5. 硬體上的辨識系統 最後,我們將系統與程式碼下載入發展版來做最後的測試如圖 6.11,利用. 麥克風對每個中文語音各 100 組作語音辨識測試如表 6.10,其中,語音 7 因為 和語音 1 聲音相近,可能因此造成辨識率較低外,由表中的結果可見我們的嵌入 式辨識系統有不錯的辨識率。. 45.

(55) 圖 6.11 辨識系統的實際測試. 表 6.10 經由 100 組測試語音辨識結果 語音. 辨識正確(次). 辨識失敗(次). 辨識率(%). 0. 84. 16. 0.84. 1. 95. 5. 0.95. 2. 97. 3. 0.97. 3. 96. 4. 0.96. 4. 96. 4. 0.96. 5. 95. 5. 0.95. 6. 94. 6. 0.94. 7. 75. 15. 0.75. 8. 98. 2. 0.98. 9. 89. 1. 0.89. 46. 總辨識率(%). 0.919.

(56) 第七章 結論 梅爾倒頻譜參數 (Mel-Frequency Cepstrum Coefficient) 接近人耳對語音 的區別性,但其需要大量的浮點數運算,在嵌入式系統上是個很大的負擔,經由 使用整數快速傅立葉轉換,可將FFT的25個音框計算時間從0.88秒降為0.38秒, 大幅降低計算時間,符合real-time的應用。在實驗中,我們可以看到類神經網路 的收斂速度與最後的辨識率並沒有太大的差別,所以利用整數FFT來取代浮點數 的FFT對整個辨識系統有很大的幫助。 在梅爾倒頻譜參數計算過程中還需要 DCT 的計算,此為計算的另一大負 擔,未來希望找到適合的快速離散餘弦轉換(fast discrete cosine transform)結構, 並運用整數乘法的方式,在簡化時間,以利於硬體平台的實現。. 47.

(57) 參考文獻 [1]. 王小川,語音訊號處理,全華,2004. [2]. 陳松琳,以類神經為架構之語音辨識系統,中山大學電機工程系碩士論文,. 2002 [3]. S. Anderson, D. Kewley-Port, “Evaluation of speech recognizers for speech training applications,” IEEE Transactions on Speech and Audio Processing, Vol. 3, NO. 4, July 1995, pp. 229-241.. [4]. H. Hermansky, “The purpose, history, current state, and some evolving trends in feature extraction for speech recognition,” 1999. ISSPA '99. Proceedings of the Fifth International Symposium on Signal Processing and Its Applications, Vol. 1, 22-25 Aug 1999, pp. 6.. [5]. X. Huang, A. Acero, H. W. Hon, Spoken Language Processing: A Guide to Theory, Algorithm and System Development, Pearson, 2005.. [6]. F. Runstein and F. Violaro, “An Isolated-Word Speech Recognition System Using Neural Networks,” Proceeding of the 38th Midwest Symposium on Circuit and Systems, Vol. 1, 1995, pp. 550-553.. [7]. S. Furui, Digital speech processing, synthesis, and recognition, Marcel Dekker, 2001.. [8]. M. T. Hagon, H. B. Demuth, M. Beale, Neural Network Design, Thomson Learning, 1996.. [9]. H.. Sakoe,. S.. Chiba,. “Dynamic. Programming. Optimization for Spoken Word Recognition,” IEEE Trans on ASSP, Vol.26, NO. 1, 1978, pp. 43-49. [10] W. C. Chu, Speech Coding Algorithms, John Wiley & Sons, Wiley-IEEE, 2003.. 48.

(58) [11] S.. Oraintara,. Y.. J.. Chen,. T.. Q.. Nguyen,. “Integer Fast Fourier Transform,” IEEE Trans on SIGNAL PROCESSING, VOL. 50, NO. 3, 2002, pp. 607-618. [12] J. Liang, T. Tran, “Fast multiplierless approximation of the DCT,” IEEE Trans on SIGNAL PROCESSING, VOL. 49, NO. 12, 2001, pp. 3032-3044. [13] V. Oppenheim, R. W. Schafer, J. R. Buck, DISCRETE-TIME SIGNAL PROCESSING 2nd ed., Pearson; 1999. [14] N. Morgan, H. A. Bourlard, “Neural networks for statistical recognition of continuous speech,” Proceedings of the IEEE, Vol. 83, NO. 5, May 1995, pp. 742 -772. [15] A. Ahad, A. Fayyaz, T. Mehmood, “Speech recognition using multilayer perceptron,” ISCON '02. Proceedings. IEEE on Students Conference, Vol. 1, 16-17 Aug 2002, pp. 103-109. [16] S. Dupont, L. Cheboub, “Fast speaker adaptation of artificial neural networks for automatic speech recognition,” 2000. ICASSP '00. Proceedings. 2000 IEEE International Conference on Acoustics, Speech, and Signal Processing, Vol. 3, 5-9 June 2000, pp. 1795-1798. [17] Avalon. Memory-Mapped. Interface. Specification,. http://www.altera.com/literature/manual/mnl_avalon_spec.pdf. [18] Audio. codec. datasheet,. WM8731_WM8731L,. http://www.terasic.com/downloads/cd-rom/de2_70/DE2_70_SYSTEM_cd_v1.1. zip [19] Nios. II. Software. Developer’s. Handbook,. http://www.altera.com/literature/hb/nios2/n2sw_nii5v2.pdf. [20] Quartus. II. Handbook. Version. 8.1. Volume. http://www.altera.com/literature/hb/qts/qts_qii5v4.pdf 49. 4:. SOPC. Builder,.

(59)

參考文獻

相關文件

Wilson, Oriol Vinyals, “Learning the Speech Front-end With Raw Waveform CLDNNs,”.. In

Keynote Speech by Dr Sylvia Rimm presented at the World Conference 2015, organised by the World Council for Gifted and Talented Children:.

Artificial Intelligence &amp; Data Science Workshop, Hualien, Taiwan, January 2022 Wistron NeWeb Corporation, Hsinchu, Taiwan, December 2019 Speech Signal Processing Workshop,

針對 WPAN 802.15.3 系統之適應性柵狀碼調變/解調,我們以此 DSP/FPGA 硬體實現與模擬測試平台進行效能模擬、以及硬體電路設計、實現與測試,其測 試平台如圖 5.1、圖

F., “A neural network structure for vector quantizers”, IEEE International Sympoisum, Vol. et al., “Error surfaces for multi-layer perceptrons”, IEEE Transactions on

D.Wilcox, “A hidden Markov model framework for video segmentation using audio and image features,” in Proceedings of the 1998 IEEE Internation Conference on Acoustics, Speech,

[7]Jerome M .Shapiro “Embedded Image Using Zerotree of Wavelet Coefficients”IEEE TRANSACTIONS ON SIGNAL PROCESSING, VOL,41,NO.12,DECEMBER 1993. [8 ]Amir Said Willam

Harma, “Automatic identification of bird species based on sinusoidal modeling of syllables,” in Proceedings of IEEE International Conference on Acoustics, Speech,