Profile - TW094


TW094

說的比做的容易-智慧型聲控系統



Semi-Finals


[print]


Project Paper - view as Preliminary(2010/07/21), Final(2010/11/01), Draft, Latest

1. 設計介紹 (Preliminary Paper)

語音是電腦最人性化的一種「人機介面」,其實早在1950年代開始,國外就已經在從事語音辨識的相關研究了,經過數十年的努力,語音辨識技術已有不錯的成就,並有產品在市場流通實用;至於語音辨識在台灣的發展,還處於萌芽的階段,像是手機、汽車導航、或是電燈電扇等各式家電的聲控系統,都是很實用,很有發展性的,相信未來還會有更大的突破。

 

因此本設計是以DE2-70板子來模擬一個語音辨識系統,透過語音方式去控制系統,以達到更方便、更實用的應用,更增添一些人機互動的有趣對談。主要的架構是由DE2-70板子、音響、麥克風和觸控式螢幕所組成如下圖。

 

 

 

說明:

首先麥克風會先偵測有沒有人講話,如果有人講話,就會開始錄音,然後把錄到的內容拿來進行辨識,觸控式螢幕就會有相對應的輸出,例如講電話簿就把畫面切到電話簿的頁面,而觸控式螢幕也會有選單可以選擇,你同樣可以藉由觸控式螢幕來點選需要的功能如”MP3”,聲音辨識和觸控式螢幕皆可以達到相同的輸出結果。如果選擇的功能是MP3 ,並在MP3頁面進行播放,則音響會有音樂撥出,或是在撥號的頁面撥號時例如按下0932…..時,也會有音效產生。

(Revision: 3 / 2010-09-16 18:31:47)

2. 功能描述 (Final Project Paper)

 

1.    功能介紹

(1)   NIOS嵌入式處理器設計

   本設計中,我們在Altera公司的Cyclone EP2C70F89 元件上實作NIOS嵌入式處理器。該處理器在整個系統中充當系統控制核心的角色。NIOS通過系統晶片匯流排(Avalon Bus)對各種周邊裝置進行操作。

(2)   即時錄音功能

  利用音效卡從MIC(麥克風)介面來的語音訊號隨時取樣,NIOS軟核心處理器透過Avalon BUS 取得音頻資料,隨時計算音頻能量,當能量高於一定標準後,將音頻資料存放到SDRAM中。

◎為了提升辨識的準確度,在能量未達標準時,音頻會在另外兩個 Buffer 交叉存取,最後配合Buffer存取在SDRAM的音頻資料會比較完整(包含未達音頻能量的前0.1)

(3)   語音辨識功能

     在開機時,會利用NIOS軟核在SDRAM建立語音資料庫。當新的音頻資料

     存放到SDRAM時,NIOS軟核會抓取SDRAM的音頻資料,然後利用漢明框

    (Hamming Windows)、快速傅利葉轉換(Fast Fourier Transform, FFT)

三角濾波器(Triangular Band-pass Filters)及梅爾倒頻譜系數

(Mel-scale Frequency Cepstral Coefficients, MFCC)等過程抓取語音

特徵三角濾波器。利用事先做好的語音特徵資料庫作動態時軸校正

(dynamic time warping, DTW)演算法,實現硬體語音辨識工作。NIOS

經由辨識的結果去設定整個系統( 如從主選單頁面轉到電話簿頁面 )

 

 

說明:

◎切割frame

-將整個音頻資料每256個資料切成一個Frame,預估每個錄音結果會產生 

 30~32frame

FFT

-簡單一句,傅立葉轉換的物理意義是:透過Fourier Transform,把時域和

 頻域互相轉換,取得想要的資訊。我們對整個音頻資料做快速傅立葉轉換,

 取得頻域資料。

AreaFreqComp

-取得頻域資料,將人耳聽不到的低頻率掉。

EnergyComputer

-利用時域跟頻域兩種資料進行能量計算及判斷,並且找出起始語音所在的

 Frame以及語音結束的Frame

MfccDCT

-計算對數能量,將對數能量 Ek帶入離散餘弦轉換,求出 12 階的 Mel-

 scale Cepstrum 參數。

DTWDistanceFun

-將計算出來的Mel- scale Cepstrum 參數與之前放在資料庫的語音參數利

 用動態時軸校正(dynamic time warping, DTW)演算法,實現硬體語音辨識

 工作。

(4)            LCD觸控面板套件顯示功能

利用LCD觸控面板來當作整個系統的螢幕。先把影像存取在 Flash RAM 裡面,利用硬體方式把Flash RAM 的資料複製到 SDRAMNIOS 軟核可以透過指令,經由Avalon Bus控制一個 Control Machine拿取新的影像(for flash),複製到SDRAM 輸出影像,達到控制面板的效果。

(5)   LCD觸控面板套件顯觸控功能

    利用一個 Verilog Core 接收觸控訊號,經由X軸跟Y軸訊號判斷位置,

 並且轉譯成指令透過 Avalon Bus NIOS軟核處理。

    

 

(6)   WMV音樂播放功能

NIOS軟核心處理器將SD Card中的WMV音頻資料讀入SDRAM,透過Avalon Bus 介面將資料傳給 Audio chip播放。

 

 

 

 

 

(Revision: 3 / 2010-09-15 21:39:51)

3. 效能參數 (Final Project Paper)

 本作品包含了在軟體部分一方面必須要去控制讀取SD Card、一方面還要去做錄音及語音辨識、而在硬體方面有LTM Core, 因此我們對整個系統的速度和同步非常講究,在Audio chip 裡面有四種頻率 8K 44.1K48K96K。因為在8K的情況下即可做語音辨識,而且語音辨識演算法複雜度不低,如果我們用96K的頻率,對於語音辨識演算法,用12倍的資料量及大量的時間來換取那一點點的辨識率是不太值得的,而且原本的辨識率也不低,所以我們選擇8K頻率來當我們的基礎,表一是各個頻率在語音辨識演算法所產生的 data 量以及辨識時間比。

 

頻率

8K

44.1K

48K

96K

每一秒會產生的語音特徵參數資料

1492Byte

8206Byte

8952Byte

18KB

資料庫大小

30KB

164KB

180KB

360KB

辨識時間比

1

31

36

144

辨識率

極高

極高

極高

極高

表一

    硬體方面有LTM Core是利用Flash 讀圖片方式取出,而我們整個系統的demo需要印出電話號碼跟聲音大小,表二是 LTM Core 或要印出的張數及大小做比較。因為DE2-70內建的flash ram8M ,所以我們利用SEG7 LED 來當作輸出訊號,分別印出電話號碼以及聲音大小,而LTM Core 只負責印出系統所在頁面。

 

周邊設備

SEG7LED

沒有SEG7

沒有LED,SEG7

圖片張數

不到10

20

30

消耗flash ram大小

7.7MB

15MB

30MB

硬體

需要增加一塊硬體IP去整合數字與頁面輸出

需要增加一塊硬體IP去整合數字、聲音與頁面輸出

軟體

輸出控制處理必須設定SEG7LED的相關變數

輸出控制處理只需要對一個整合過的硬體IP下指令

輸出控制處理只需要對一個整合過的硬體IP下指令

效果

SEG7LED獨立顯示

在一個800*400像素的螢幕裡顯示數字及頁面

在一個800*400像素的螢幕裡顯示數字及聲音大小、頁面

表二

(Draft / 2010-09-15 21:51:18)

4. 設計架構 (Preliminary Paper)

1.硬體架構

SDRAM_u1       LCD觸控螢幕core主要記憶體

SDRAM_u2       NIOS的主記憶體

Flash Memory   :影像所存取的記憶體

SD Card        : 存放音樂(WMV)

LTM Core       : 觸控面板,影像輸出及觸控用

Codec          : 音訊輸入輸出用

SEG7           : 顯示電話號碼

LED            : 顯示音量大小

LCD            : 印出相關訊息

Button         : 控制音量大小

CPU1           : 主要核心,負責即時錄音、語音辨識、控制系統等功能

CPU2           : 次要核心,負責SD card 播放

Chip-on-Memory :兩個CPU的共用RAM,也是兩個CPU溝通用的唯一橋梁

 

    

 

 

 

 

 

2.軟體流程

     

                        

                 

(Revision: 3 / 2010-09-17 19:29:14)

5. 設計方法 (Final Project Paper)

 (1)  定義系統:包含微處理器、內部記憶體、外部設備與外部設備連接的腳位。

(2)  生成系統:利用SOPC Builder產生ptf系統文件。

(3)  硬體設計:利用硬體描述語言設計所需的元件與電路,並進行電路的編譯。

(4)  軟體設計:利用C code撰寫整個程式流程。

(5)  演算法設計:用PC去錄音成WMV檔去進行辨識及測試,最後去掉WMV

                 頭檔再放進NIOS程式中。

(6)  驗證:將軟硬體通過JTAG下載至DE2-70發展板上的RAM上做驗證。

 

在設計上所使用到的軟硬體設備分別如下:

硬體設備:

1. 麥克風

2. 喇叭

3. DE2-70開發板

4. 液晶觸控面板 (TRDB_LTM)

軟體工具:

1. Quartus II 9.1開發工具

2. NIOS II EDS開發整合工具

3. SOPC Builder

4. Windows XP

5. Visual C++

 

(Draft / 2010-09-15 21:50:20)

6. 設計特點 (Preliminary Paper)

即時錄音演算法能用最少量的空間去進行最佳化的錄音

利用並行多主設備匯流排結構,使得兩個CPU可以控制同一個 Audio chip

將系統分成雙NIOS II Core並行處理

l  NIOS II Core 1控制週邊組件如LEDLCDSEG7等等以及語音辨識演算法的實現

l  NIOS II Core 2主要是去控制SD CardAUDIO之間的結合,將SD Card中的資料輸入至AUDIO

利用強大的C2H可將運算重複性高的軟體程式轉為硬體提升性能。

藉由C 語言完成語音辨識演算法的部分,並藉由SOPC連接軟硬體,使得使用者可以藉由NIOS II IDE軟體去操控Quartus所產生硬體的行為如AUDIO、觸控螢幕等等

 

(Revision: 2 / 2010-09-15 21:44:31)

7. 總結 (Final Project Paper)

利用NIOSIISOPC設計靈活的特點,我們可以靈活的添加和改造周邊裝置,對於一般應用而言,添加NIOS軟核幾乎不用增加成本。由於我們做的是一個系統,需要用到許多周邊裝置,在SOPC裡面許多周邊裝置都有相對應的IF,而DE2-70的範例光碟對用得到的大多數周邊裝置都有寫一個應用軟體。讓我們可以很快的進行軟體發展以及硬體驗證。

   我們利用 Altera Quartus NIOS 的靈活性,使得硬體設計、核心設計、軟體設計可以同步完成,大大加快了設計速度。然而,對新工具使用不熟悉,讓我們在PC上可以順利模擬結果的語音辨識演算法,再透過DE2-70的驗證會失敗,所花的除錯時間太多,到後期會有時間不足的感覺。在本次作品裡,除了語音辨識的功能外,我們還需要把周邊設備整合到我們的系統裡,由於時間上的不足,目前我們主要整合 SDcard Audio 以及連接 GPIO 的觸控螢幕,其他周邊如 SEG7LED等等。希望未來能整合出網路及照相功能的系統。

(Draft / 2010-09-15 21:40:52)