語音合成的思路、語音的聲學特徵、聲音採樣的一些資料

語音合成:把語音波形文件重現,以一種靈活的方式,只用極少數的基礎數據,好比元音輔音的語音參數,那麼首先須要研究元音輔音的語音學性質。html

先從元音開始,根據相關資料,不一樣的元音是由相同的原始聲帶音經過不一樣的共振腔(由聲腔形狀的變化決定)產生不一樣的共振效果,致使其頻譜發生很大變化而得以區分。通常來講每一個頻譜都有三個振幅比較強的頻率區,在頻譜上呈現爲波峯狀,稱爲「共振峯」(formant),從低頻到高頻順序排列爲第一共振峯、第二共振峯和第三共振峯,簡稱爲F一、F二、F3,還能夠有F四、F5,不過與語音關係不大,所以忽略。前端

原始聲帶音的基本特色是,諧波的頻率越高,振幅就越小,頻譜的振幅曲線從高到低,造成明顯的斜坡,原始聲帶音的頻率稱爲基頻F0(疑問:原始聲帶音的頻譜圖中有多個頻率,哪個是基頻?難道都是?)ios

元音的共振峯頻率和基頻之間沒有相互依存的關係。基頻由聲帶顫動的頻率決定,共振峯頻率則取決於共振腔的形狀,兩種頻率的變化是彼此獨立的。git

要注意對頻譜圖和波形圖的對照使用:二維頻譜所表現的只是頻率和振幅的二維關係,並無包括時間因素,分析一個音段,不論切分得多麼小,都必然佔有一段時間,只有可以反映頻率、振幅、時間三維關係的頻譜,纔可以把一個音段的聲學特徵所有表現出來。好比現代語音學研究經常使用的語圖儀就是這樣一種動態頻譜儀,語圖儀輸出的語圖中,橫座標是時間,單位毫秒,縱座標是頻率,單位HZ,振幅的強弱經過圖形痕跡的濃度來表示,顏色越深,說明振幅越強,顏色越淺,說明振幅越小,振幅的單位是分貝dB。web

波形圖用來描述時域信號,橫軸爲時間(能夠直觀地看到波形週期),縱軸爲振幅;頻譜圖用來描述頻域信號,橫軸爲頻率,縱軸爲dB化的幅值,時域信號和頻域信號能夠經過FFT、IFFT算法來轉換(快速傅里葉變換和快速傅里葉變換的逆變換),有不少在時域沒法完成的信號處理算法能夠在頻域上輕鬆處理。缺點是使用FFT會出現頻譜泄露。算法

頻譜圖:數據庫

頻譜圖

頻譜圖來自 http://www.innovateasia.com/cn/win_2008/CN321.htmwindows

 

語圖(下面的圖,上面那個是波形圖):數組

語圖I

語圖來自 中國社會科學院語言研究所語音研究室(http://ling.cass.cn/yuyin/spectrum/spectrum.htm)緩存


http://www.it9000.cn/tech/CTI/wav.html

WAV文件格式介紹

文件是Windows標準的文件格式,WAV文件做爲多媒體中使用的聲波文件格式之一,它是以RIFF格式爲標準的。RIFF是英文Resource Interchange FileFormat的縮寫,每一個WAV文件的頭四個字節即是「RIFF」。WAV文件由文件頭和數據體兩大部分組成。其中文件頭又分爲RIFF/WAV文件標識段和聲音數據格式說明段兩部分。WAV文件各部份內容及格式見附表。常見的聲音文件主要有兩種,分別對應於單聲道(11.025KHz採樣率、8Bit的採樣值)和雙聲道(44.1KHz採樣率、16Bit的採樣值)。採樣率是指:聲音信號在「模→數」轉換過程當中單位時間內採樣的次數。採樣值是指每一次採樣週期內聲音模擬信號的積分值。對於單聲道聲音文件,採樣數據爲八位的短整數(short int 00H-FFH); 而對於雙聲道立體聲聲音文件,每次採樣數據爲一個16位的整數(int),高八位和低八位分別表明左右兩個聲道。WAV文件數據塊包含以脈衝編碼調製(PCM)格式表示的樣本。WAV文件是由樣本組織而成的。在單聲道WAV文件中,聲道0表明左聲道,聲道1表明右聲道。在多聲道WAV文件中,樣本是交替出現的。

WAV文件格式說明表

文件頭 偏移地址 字節數 數據類型 內 容
00 H 4 char "RIFF"標誌
04 H 4 long int 文件長度
08 H 4 char "WAV"標誌
0C H 4 char "fmt"標誌
10 H 4   過渡字節(不定)
14 H 2 int 格式類別(10H爲PCM形式的聲音數據)
16 H 2 int 單聲道爲1,雙聲道爲2通道數
18 H 2 int 採樣率(每秒樣本數),表示每一個通道的播放速度
1C H 4 long 波形音頻數據傳送速率,其值爲通道數×每秒數據位數×每樣 本的數據位數/8。播放軟件利用此值能夠估計緩衝區的大小
22 H 2   每樣本的數據位數,表示每一個聲道中各個樣本的數據位數。若是有多 個聲道,對每一個聲道而言,樣本大小都同樣。 24H 4 char 數據標記符"data" 28H 4 long int 語音數據的長度

PCM數據的存放方式:

樣本1  樣本2

8位單聲道 0聲道 0聲道

8位立體聲 0聲道(左) 1聲道(右) 0聲道(左) 1聲道(右)

16位單聲道 0聲道低字節 0聲道高字節 0聲道低字節 0聲道高字節

16位立體聲 0聲道(左)低字節 0聲道(左)高字節 1聲道(右)低字節 1聲道(右)高字節

PCM數據的存放方式:

WAV文件的每一個樣本值包含在一個整數i中,i的長度爲容納指定樣本長度所需 的最小字節數。首先存儲低有效字節,表示樣本幅度的位放在i的高有效位上, 剩下的位置爲0,這樣8位和16位的PCM波形樣本的數據格式以下所示。

樣本大小 數據格式 最大值 最小值
8位PCM unsigned int 225 0
16位PCM int 327 67

 

http://210.28.216.200/cai/dmtjishu/course2/course2-1.htm#nowhere

一. 模擬音頻和數字音頻

  1.模擬音頻

  物體振動產生聲音,爲了記錄和保存聲音信號,前後誕生了機械錄音(以留聲機、機械唱片爲表明)、光學錄音(以電影膠片爲表明)、磁性錄音(以磁帶錄音爲表明)等模擬錄音方式,二十世紀7、八十年代開始進入了數字錄音的時代。

  聲音是機械振動在彈性介質中傳播的機械波。聲音的強弱體如今聲波壓力的大小上,音調的高低體如今聲音的頻率上。聲音用電錶示時,聲音信號在時間和幅度上都是連續的模擬信號。聲音信號的兩個基本參數是頻率和幅度。頻率是指信號每秒鐘變化的次數,用Hz表示。幅度是指信號的強弱。

  2.數字音頻

  數字音頻主要包括兩類:波形音頻和MIDI音頻。

  模擬聲音在時間和幅度上是連續的,聲音的數字化是經過採樣、量化和編碼,把模擬量表示的音頻信號轉換成由許多二進制數1和0組成的數字音頻信號。數字音頻是一個數據序列,在時間和幅度上是斷續的。

  計算機內的基本數制是二進制,爲此咱們要把聲音數據寫成計算機的數據格式。將連續的模擬音頻信號轉換成有限個數字表示的離散序列(即實現音頻數字化),在這一處理技術中,涉及到音頻的採樣、量化和編碼。

  二.數字音頻的採樣和量化

  聲音進入計算機的第一步就是數字化,數字化實際上就是採樣和量化。連續時間的離散化經過採樣來實現,若是每隔相等的一小段時間採樣一次,稱爲均勻採樣(uniform sampling);連續幅度的離散化經過量化(quantization)來實現,把信號的強度劃分紅一小段一小段,若是幅度的劃分是等間隔的,就稱爲線性量化,不然就稱爲非線性量化。

  在數字音頻技術中,把表示聲音強弱的模擬電壓用數字表示,如0.5V電壓用數字20表示,2V電壓是80表示。模擬電壓的幅度,即便在某電平範圍內,仍然能夠有無窮多個,如1.2V,1.21V,1.215V…。而用數字來表示音頻幅度時,只能把無窮多個電壓幅度用有限個數字表示。即把某一幅度範圍內的電壓用一個數字表示,這稱之爲量化。

  計算機內的基本數制是二進制,爲此咱們也要把聲音數據寫成計算機的數據格式,這稱之爲編碼,模擬電壓幅度、量化、編碼的關係舉例以下表。

模擬電壓、量化和編碼
電壓範圍(V)
量化(十進制數)
編碼(二進制數)
0.5~0.7
2
011
0.3~0.5
3
010
0.1~0.3
1
001
-0.1~0.1
0
000
-0.3~-0.1
-1
111
-0.5~-0.3
-2
110
-0.7~-0.5
-3
101
-0.9~-0.7
-4
100

聲音數字化須要回答兩個問題:①每秒鐘須要採集多少個聲音樣本,也就是採樣頻率(fs)是多少,②每一個聲音樣本的位數(bit per sample,bps)應該是多少,也就是量化精度。

  1. 採樣頻率

  採樣頻率是指將模擬聲音波形數字化時,每秒鐘所抽取聲波幅度樣本的次數,採樣頻率的計算單位是kHz。一般,採樣頻率越高聲音失真越小,但用於存儲音頻的數據量也越大。

  音頻其實是連續信號,或稱連續時間函數x(t)。用計算機處理這些信號時,必須先對連續信號採樣,即按必定的時間間隔(T)取值, 獲得x(nT)(n爲整數)。T稱採樣週期,1/T稱爲採樣頻率。稱x(nT)爲離散信號。離散信號 x(nT) 是從連續信號 x(t) 上取出的一部分值。

  採樣定理:設連續信號x(t)的頻譜爲x(f),以採樣間隔T採樣獲得離散信號x(nT),若是知足:

    當|f|≥fc時,fc是截止頻率

    T≤ 1/2fc 或fc≤ 1/2T

    則能夠由離散信號x(nT)徹底肯定連續信號x(t)。

    當採樣頻率等於1/(2T)時,即fN =1/2T,稱fN爲奈奎斯特頻率。

  採樣頻率的高低是根據奈奎斯特理論(Nyquist theory)和聲音信號自己的最高頻率決定的。奈奎斯特理論指出,採樣頻率不該低於聲音信號最高頻率的兩倍,這樣就能把以數字表達的聲音還原成原來的聲音,這叫作無損數字化(lossless digitization)。

  一般人耳能聽到頻率範圍大約在20Hz~20kHz之間的聲音,根據奈奎斯特理論,爲了保證聲音不失真,採樣頻率應在40kHz左右。經常使用的音頻採樣頻率有:8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等。


  2. 量化精度(也稱量化位數、量化級、樣本尺寸、採樣精度等)

  量化是將通過採樣獲得的離散數據轉換成二進制數的過程,量化精度是每一個採樣點可以表示的數據範圍,在計算機中音頻的量化位數通常爲四、八、1六、32位(bit)等。例如:量化精度爲8bit時,每一個採樣點能夠表示256個不一樣的量化值,而量化精度爲16bit時,每一個採樣點能夠表示65536個不一樣的量化值。量化精度的大小影響到聲音的質量,顯然,位數越多,量化後的波形越接近原始波形,聲音的質量越高,而須要的存儲空間也越多;位數越少,聲音的質量越低,須要的存儲空間越少。

  採樣精度的另外一種表示方法是信號噪聲比,簡稱爲信噪比(signal-to-noise ratio,SNR),並用下式計算:

   SNR= 10 log [(Vsignal)2 / (Vnoise)2]=20 log (Vsignal / Vnoise) 
   其中,Vsignal表示信號電壓,Vnoise表示噪聲電壓;SNR的單位爲分貝(db)

   例1:假設Vnoise=1,採樣精度爲1位表示Vsignal=21,它的信噪比SNR=6分貝。 
   例2:假設Vnoise=1,採樣精度爲16位表示Vsignal=216,它的信噪比SNR=96分貝。

  量化採樣的過程以下:先將整個幅度劃分紅爲有限個小幅度(量化階距)的集合,把落入某個階距內的樣值歸爲一類,並賦予相同的量化值。

  若是量化值是均勻分佈的,咱們稱之爲均勻量化,也稱爲線性量化。

均勻量化

  若是大輸入信號採用大的量化間隔,小輸入信號採用小的量化間隔,這樣就能夠在知足精度要求的狀況下使用較小的位數來表示。數據還原時採用相同的原則。量化值是非均勻分佈的,咱們稱之爲非均勻量化,也稱非線性量化。

 非均勻量化


  3. 聲道數  

  記錄聲音時,若是每次生成一個聲波數據,稱爲單聲道;每次生成兩個聲波數據,稱爲雙聲道。使用雙聲道記錄聲音,可以在必定程度上再現聲音的方位,反映人耳的聽覺特性。

  4. 聲音質量與數據率

  根據聲音的頻帶,一般把聲音的質量分紅5個等級,由低到高分別是電話(telephone)、調幅(amplitude modulation,AM)廣播、調頻(frequency modulation,FM)廣播、激光唱盤(CD-Audio)和數字錄音帶(digital audio tape,DAT)的聲音。在這5個等級中,使用的採樣頻率、樣本精度、通道數和數據率列於下表。
表: 聲音質量和數據率
質量

採樣頻率(kHz)

樣本精度(bit/s)

單道聲/立體聲

數據率(kB/s) (未壓縮)

頻率範圍

TEL

8

8

單道聲

8

200~3400 Hz

AM

11.025

8

單道聲

11.0

50~7000Hz

FM

22.050

16

立體聲

88.2

20~15000Hz

Adobe SystemsCD

44.1

16

立體聲

176.4

20~20000 Hz

DAT

48

16

立體聲

192.0

20~20000 Hz


  5. 數字音頻的存儲

  通常來講,採樣頻率、量化位數越高,聲音質量也就越高,保存這段聲音所用的空間也就越大。立體聲(雙聲道)是單聲道文件的兩倍。
  即:文件大小(B)=採樣頻率(Hz)×錄音時間(S)×(量化精度/8)×聲道數(單聲道爲1,立體聲爲2)

  如:錄製1分鐘採樣頻率爲44.1KHz,量化精度爲16位,立體聲的聲音(CD音質),文件大小爲:
    44.1×1000×60×(16/8)×2=10584000B≈10.09M

  三. 數字音頻的文件格式

  聲音數據有多種存儲格式,這裏咱們主要介紹WAV 文件、MIDI文件。

  1. WAV 文件  

  WAV 文件主要用在PC上,是微軟公司的音頻文件格式,又稱爲波形文件格式,它來源於對聲音模擬波形的採樣,用不一樣的採樣頻率對聲音的模擬波形進行採樣能夠獲得一系列離散的採樣點,以不一樣的量化位數把這些採樣點的值轉換成二進制數,而後存盤,就產生了聲音的WAV文件。

  聲音是由採樣數據組成的,因此它須要的存儲容量很大。用前面咱們介紹的公式能夠簡單的推算出WAV文件的文件大小。


  2. MIDI文件  

  MIDI是Musical Instrument Digital Interface的首寫字母組合詞,可譯成「電子樂器數字接口」。用於在音樂合成器(music synthesizers)、樂器(musical instruments)和計算機之間交換音樂信息的一種標準協議。MIDI是樂器和計算機使用的標準語言,是一套指令(即命令的約定),它指示樂器即MIDI設備要作什麼,怎麼作,如演奏音符、加大音量、生成音響效果等。MIDI不是聲音信號,在MIDI電纜上傳送的不是聲音,而是發給MIDI設備或其它裝置讓它產生聲音或執行某個動做的指令。當信息經過一個音樂或聲音合成器進行播放時,該合成器對系列的MIDI信息進行解釋,而後產生出相應的一段音樂或聲音。

  記錄MIDI信息的標準格式文件稱爲MIDI文件,其中包含音符、定時和多達16個通道的樂器定義以及鍵號、通道號、持續時間、音量和擊鍵力度等各個音符的有關信息。因爲MIDI文件是一系列指令而不是波形數據的集合,因此其要求的存儲空間較小。


  3. WAV文件和MIDI文件的區別


  WAV文件記錄的是聲音的波形,要求較大的數據空間;MIDI文件記錄的是一系列的指令,文件緊湊佔用空間小,預先裝載比WAV容易,設計播放所需音頻的靈活性較大。WAV文件可編輯性好於MIDI,音質飽滿。

  WAV文件適合於:
    (1) 計算機資源足夠處理數字文件。
    (2) 有語言會話的須要。 
    (3) 對回放設備沒有特定要求。

  MIDI文件適合於: 
    (1) 沒有足夠的RAM、硬盤空間或CPU處理能力 
    (2) 具有符合要求的回放設備 
    (3) 具備高質量的聲源 
    (4) 沒有語言對話的須要

表: 常見的數字聲音文件擴展名

文件的擴展名

說明

au

Sun和NeXT公司的聲音文件存儲格式(8位μ律編碼或者16位線性編碼)

Aif

Apple計算機上的聲音文件存儲格式(Audio Interchange File Format)

ape

Monkey's Audio

mid

Windows的MIDI文件存儲格式

mp3

MPEG Layer III

rm

RealNetworks公司的流放式聲音文件格式(RealMedia)

ra

RealNetworks公司的流放式聲音文件格式(RealAudio)

voc

聲霸卡存儲的聲音文件存儲格式(Creative Voice)

wav

Windows採用的波形聲音文件存儲格式

wrk

Cakewalk Pro軟件採用的MIDI文件存儲格式

四.音頻信號的特色

  音頻信號處理的特色以下:
  (1) 音頻信號是時間依賴的連續媒體。所以音頻處理的時序性要求很高,若是在時間上有 25ms 的延遲,人就會感到斷續。
  (2) 理想的合成聲音應是立體聲。因爲人接收聲音有兩個通道(左耳、右耳),所以計算機模擬天然聲音也應有兩個聲道,即立體聲。
  (3) 因爲語音信號不只僅是聲音的載體,同時情感等信息也包含其中,所以對語音信號的處理,要抽取語意等其它信息,如可能會涉及到語言學、社會學、聲學等。

  從人與計算機交互的角度來看音頻信號相應的處理以下:
  (1) 人與計算機通訊(計算機接收音頻信號)。音頻獲取,語音識別與理解。
  (2) 計算機與人通訊(計算機輸出音頻)。 音頻合成( 音樂合成,語音合成)、聲音定位(立體聲模擬、音頻/視頻同步)。
  (3) 人—計算機—人通訊:人經過網絡,與處於異地的人進行語音通訊,須要的音頻處理包括:語音採集、音頻編碼/解碼、音頻傳輸等。這裏音頻編/解碼技術是信道利用率的關鍵。

 

http://www.chinaaet.com/article/index.aspx?id=14965

語音信號產生模型的創建及應用

王莉華 時間:2009年06月09日

    摘 要:從人類語音產生的機理出發,介紹了語音信號的特徵和語音信號的語譜圖,引出了語音信號的產生模型。同時討論了在語音信號產生的模型應用中,線性預測編碼方法及語音產生模型在語音合成和語音識別中的應用原理,體現了語音產生模型在語音處理技術方面的重要地位。
    關鍵詞:模型;頻率;線性預測編碼

 

    語音由一連串的音所組成,這些音及其相互間的過渡就是表明信息的符號。這些符號的排列由語音的規則所控制。對這些規則及其在人類通訊中的含義的研究屬於語言學的範疇。但對語音信號加以處理以改善或提取信息時,有必要對語音產生的機理進行討論。
    圖1爲發音器官示意圖。聲道起始於聲帶的開口(即聲門處)而終止於嘴脣,它包含了咽喉(鏈接食道和口)和口(或稱爲口腔)。聲道的截面積取決於舌、脣、頜以及小舌的位置,它能夠從0 (徹底閉合)變化到約20 cm2,鼻道則從小舌開始到鼻孔爲止。當小舌下垂時,鼻道與聲道發生聲耦合而產生語音中的鼻音。另外,圖中還包含了由肺、支氣管、氣管組成的次聲門系統,這個次聲門系統是產生語音能量的源泉。當空氣從肺裏呼出時,呼出的氣流因爲聲道某一地方的收縮而受到擾動,語音就是這一系統在此時輻射出來的聲波。

 


    語音的聲音按其激勵形式的不一樣可分爲三類:濁音、摩擦音和爆破音。濁音:當氣流經過聲門時,若是聲帶的張力恰好使聲帶發生張弛振盪式的振動,就能產生準週期的空氣脈衝,這一空氣脈衝激勵聲道獲得濁音,如音標中的「U」、「d」、「w」、「i」、「e」等爲濁音。摩擦音或稱爲清音:若是聲道在某處(通常在接近嘴的那端)發生收縮,同時迫使空氣以高速衝過這一收縮部分而產生湍流,從而獲得摩擦音,此時創建的寬帶噪聲源激勵了聲道,如音標中的「∫」就是摩擦音;爆破音:若是使聲道前部徹底閉合,在閉合後創建起氣壓,而後忽然釋放,這樣就獲得了爆破音,如音標中的「t∫」就是爆破激勵產生的。
1 語音信號的特徵和語譜圖
    圖1中聲道和鼻道都表示爲非均勻截面的聲管,當聲音產生之後就順着聲管傳播,它的頻譜形狀會被聲管的選擇性所改變。這相似於人們在管風琴或管樂器中所看到的諧振現象。在此將聲道管的諧振頻率稱爲共振峯頻率。共振峯頻率和聲道的形狀與大小有關,每種形狀都有一套共振峯頻率做爲其特徵。改變聲道的形狀就產生不一樣的聲音,所以,當聲道形狀改變時,語音信號的譜特性也隨之改變。
    語譜圖是經過語譜儀畫出的、以顯示語音信號的通用圖。它的垂直方向表示頻率,水平方向表示時間。圖2表示了一段英語語句的語音信號。

 


    得到這些圖的原理大體以下:
    首先把語音信號拆成短的時段,通常爲2 ms~40 ms,而後在合適的窗口長度上使用FFT找每一短時段的頻譜。圖中每一點表示在給定時間和給定頻率範圍內頻譜的能量。段的長度是根據頻率分辨率和時間分辨率要求折中選擇的。目前數字信號處理技術水平已可以實時處理語音頻譜隨時間的變化,這就意味着, FFT和顯示處理可以在下一段數據捕獲前完成。例如,採樣頻率爲8 kHz(由採樣定理知,信號帶寬的上限爲4 kHz),一段長度內有256個採樣點,FFT和顯示處理時間必須小於32 ms。
    從英文字「rain」中字母a的實例代表:語音信號有周期的時域波形,如圖2(a)所示;它的頻譜相似於一串有間隔的諧波,如圖2(b)所示。一樣,字「storm」中的字母s的實例代表:摩擦音時域信號爲噪聲,如圖2(c)所示,它的頻譜如圖2(d)所示。這個頻譜證實對聲音的2個主要源都存在共振峯頻率的影響。
    在圖3中,圖的下半部分是相應的語譜圖,語音能量由顏色的深淺來表示,顏色越深,語音能量越強。

 


    由圖3可知,語音樣例「他去無錫市,我到黑龍江」的每個漢字的發音對應一組頻譜,有其基音和諧波。基音和諧波的寬度不等說明有共振峯頻率的影響。從短時穩定的頻譜存在說明語音信號存在短時間相關性,即儘管模擬聲道的數字濾波器參數是隨時間改變的,可是在很短的時間(如幾毫秒)內,因爲存在肯定的週期性頻譜,於是能夠認爲,在該段時間內,數字濾波器參數不隨時間而變化。能夠使用線性預測方法,即一個語音採樣值可以由前面若干個採樣值的組合逼近,故稱爲線性預測。所以,每個漢字語音對應一組線性預測係數,也就是對應一組肯定的聲道數字濾波器係數。
2  語音信號的產生模型
    根據上面的分析,能夠用近期全部語音合成和識別技術採用的人類語音模型來模擬語音信號的產生,如圖4所示。

 

 

    用隨機噪聲發生器產生噪聲源模擬摩擦音(漢語稱清音),利用音調或稱基音週期控制脈衝串產生器模擬元音(漢語稱濁音)。用增益函數表示聲音振幅。模擬聲道的數字濾波器是一個線性時變濾波器。
3  線性預測編碼(LPC)
    線性預測編碼LPC( Line Predictive Coding )方法在語音信號產生模型應用中是相當重要的,下面給出它的物理概念和方法。採樣後的語音是離散信號,能夠利用Z變換進行分析計算。設聲道濾波器爲一個全極點濾波器,其傳遞函數爲V(z),則輸出信號爲:
    S(z)=E(z)×V(z)=G×E(z)/A(z)                              (1)
式中,E(z)爲聲道濾波器的激勵e(n)的Z變換;A(z)爲聲道濾波器的逆濾波器,是全零點濾波器;G爲增益函數,表示聲音振幅的一個參數;S(z)爲合成的語音。在已知激勵和濾波器參數後,可獲得合成語音,故(1)式稱爲合成模型。由(1)式可得:
    E(z)=S(z)×A(z)                                           (2)
(2)式爲(1)式的逆運算,故稱爲語音分析模型。
    若逆濾波器爲A(z),輸入語音信號爲S(z),則輸出即爲激勵信號E(z)。然而,A(z)是未知的,須要使用線性預測的方法求得。
    由於A(z)是全零點濾波器,其結構如圖5所示。經過證實可得:
    
    即A(z)是由M節濾波器組成,式中i是濾波器的階數,ai是逆濾波器的係數,有待肯定。把(3)式代入(2)式,並將Z變換的式子轉換爲離散值來寫,則有:
    
    (4)式說明對樣本序列值S(n),n時刻序列值由它前面M個樣本線性預測獲得。即:
    
    同時表示,激勵信號e(n)是語音信號S(n)與預測信號之差,稱爲預測偏差。(5)式可寫爲Z變換形式:
    
式中,F(z)爲預測濾波器值,若輸入A(z),輸出即爲預測值,見圖5。

 

 

    可見,這裏存在2個濾波器,1個是預測濾波器F(z),可用來求預測值;另外一個爲逆濾波器,它等於1-F(z),可用來從激勵信號求出重建的語音信號。使用這2個濾波器關鍵是求係數ai。利用公式(4),預測偏差e(n)越小,預測值越接近信號值S(n)。可採用e(n)的最小均方偏差準則來肯定ai的係數。若S(n)已知,在短期範圍內(如20 ms),在8 kHz採樣頻率下就有160個S(n)樣本點,利用它來訓練預測濾波器A(z),係數ai就能夠肯定。係數ai是時變的,但在短的時限內是不變的。所以,在線性預測算法中,係數ai的計算每幀都要進行1次,當前幀係數ai計算值做爲下一次計算時用。
4  語音產生模型的應用
    語音產生模型說明一個短時的語音信號能夠用3個參數來定義:(1)從週期性波和隨機噪聲中選擇1個做爲激發態;(2)若是使用週期性波,必須選擇1個頻率做爲基音;(3)模擬聲道響應所使用的數字濾波器係數。
4.1 語音產生模型在語音合成技術中的應用
    早期產品中應用到的連續語音合成技術,是藉助於大約以每秒40次速度修改上述的短時語音信號的3個參數來實現的。如適合兒童學習的「說和拼音機」。因爲它僅僅採用26個英文字母做爲音庫,於是這種語音合成的聲音質量不高,聲音很是機械。
    此後,用漢字語音做爲庫,用波形拼接方法進行語音合成,效果有所改進,可是庫的存儲量太大。解決的方案是,使用語音分析方法,即利用語音產生模型概念,把一個語音信號分解成下列特性參數:線性預測系數(取10個)、基音週期範圍、基音週期數目(基音持續時間)和清音存在時間等。根據ITU-T G.729語音編碼方法,一幀語音信號特徵參數僅需80 bit,即80個16 bit樣本壓縮爲80 bit,縮小16倍。到合成須要該音時,再利用語音產生模型由所存的特徵參數實時轉換爲語音。
4.2 語音產生模型在語音識別技術中的應用
    與機器進行語音交流,讓機器明白你說什麼,這是人們長期以來求之不得的事情。語音識別技術就是讓機器經過識別和理解過程把語音信號轉變爲相應的文本或命令的技術。其原理是:因爲每個短時語音信號包含一串語音特性參數,不一樣的漢字音有不一樣的特徵參數,因此利用特徵參數的差異來識別不一樣的漢字音。
    近20年來,語音識別技術取得顯著進步,開始從實驗室走向市場。預計將來10年內,語音識別技術將進入工業、家電、通訊、汽車電子、醫療、家庭服務、消費電子產品等各個領域。
參考文獻
[1] 拉賓納  L R,謝弗  R W. 語音信號數字處理[M]. 北京:科學出版社,1983.
[2] 戴逸民,梁曉雯,裴小平. 基於DSP的現代電子系統設計[M]. 北京:電子工業出版社,2002.
[3] 奧本海姆. 信號與系統[M]. 劉樹棠,譯 . 西安:西安交通大學出版社,1998.

[4] 何蘇勤,王忠勇.TMS320C2000系列DSP原理及應用技術[M].北京:電子工業出版社,2003.



http://www.innovateasia.com/cn/win_2008/CN321.htm

Profile - CN321


CN321

基於語音識別及RFID的多重安防門禁監控系統

廣西師範大學
物理與電子工程學院






Advisor

Name: 王志高

Members

No. Name English Name
1 甘宇健 Gan Yujian
2 王明娟 Wang Mingjuan
3 彭宇林 Peng Yulin

Project Paper

1. 設計概述 (Preliminary Paper)

隨着生物識別產品的不斷問世,其在安防門禁系統的應用將愈來愈多,生物識別產品的高安全性和防盜等特性正被愈來愈多的客戶接受。由此可預見,在不久的未來,生物識別產品必將成爲安防門禁系統前端識別設備的強大力量,在安防領域必將發揮愈來愈大的做用。

生物識別技術是利用人體生物特徵進行身份認證的一種技術。生物特徵是識別人身體上惟一的與他人不一樣,能夠測量或可自動識別和驗證的生理特徵或行爲方式。

用於生物識別的生物特徵有指紋,掌紋,臉形,虹膜,視網膜,脈搏,耳廓等,行爲特徵有簽字,聲音,按鍵力度等,基於這些特徵,人們已經發展了指紋識別,掌紋識別,面部識別,發音識別,虹膜識別等多種生物識別技術,也相應地生產了各類生物識別產品。目前市場上使用的最可能是指紋儀,其次是臉形識別產品,掌紋儀,虹膜儀和聲紋儀,生物識別產品具備如下特色:

1)高安全性;

2)技術先進;

3)不易仿冒;

4)防盜取。

因爲生物識別產品具備技術先進,安全性能高,身份確認惟一等特色,目前愈來愈多的集成使用在安防門禁系統中,生物識別產品採用的技術不一樣於傳統的RFID技術的門禁系統,所以將生物識別產品集成使用在採用傳統RFID技術的門禁中,是一項合理且創新的嘗試。

鑑於實際應用,須要考慮人類特徵符合身份認證的要求,從安全性,可接受性,生產成本,實時性能方面, 本設計採用了一種易獲取的生物特徵——語音,並結合射頻識別技術的多重身份認證保障用戶的更高安全防範,從而確保人生財產的安全。相對於傳統的磁卡及IC卡技術,RFID具備非接觸、閱讀速度快、無磨損等特色,在最近幾年裏獲得快速發展。

本系統設計理念新穎,其軟硬件都可裁剪,主要分爲高端和低端兩種設計方案(實際系統設計製做以高端型爲製做藍本),故應用很是普遍。高端型系統具備語音識別、RFID卡識別、動態隨機密碼保護等多重安防功能。高端型系統設計主要面向安全級別要求較高的原子能實驗室,生產基地等場所。通過軟硬件裁剪,本系統也可應用於圖書館,住宅小區等安全要求相對較低的場所。

本系統總體設計基於DE2開發平臺,採用基於Nios IISOPC技術。Nios II 軟核集成在FPGA內部,採用這種解決方案的優勢是實現了片上系統,減小了系統的物理體積和整體功耗;同時系統控制核心都在FPGA內部實現,能夠極爲方便地更新和升級系統,大大地提升了系統的通用性和可維護性。此外,因爲本系統須要大量的高速數據運算,在設計中咱們充分利用了Cyclone II 芯片的豐富的硬件乘法器,實現了語音信號的端點檢測模塊,FFT快速傅立葉變換模塊,DCT離散餘弦變換模塊等硬件設計模塊。爲了提升系統的總體性能,咱們充分利用了FPGA的高速並行的優點,以及配套開發環境中的Avalon總線自定義硬件外設,使系統處理數字信號的能力大大提升,其性能遠優於傳統的微控制器和普通DSP芯片。綜上所述,咱們採用了基於Cyclone II的系統設計方案。

 

(Revision: 4 / 2008-06-15 17:48:54)

2. 功能描述 (Final Project Paper)

    本系統採用SOPC系統設計,控制方式靈活。如下爲本系統在實際運用中的示例圖(如圖1所示)。

 

 1  實際應用示範圖

本系統採用SOPC系統設計實現了語音識別及RFID的多重安防門禁監控系統:一方面主要對 語音信號實時採集,存儲,並經過各類DSP運算模塊進行分析和處理;另外一方面主要實現射頻識別。

其功能描述以下:
1 .實時語音信號採集模塊
話筒線入輸入,語音經過音頻編解碼芯片 WM8731 ,以 8KHZ A/D 採樣率轉換成 16 PCM 碼緩存。 
 
2 .語音信號預處理模塊
算法處理的一部分,主要功能是把緩存區的數據歸一化,一階高通濾波,分幀,按幀計算短時能量和短時過零量,去除首尾的靜音和噪聲,獲得有效語音幀,存入 SRAM 。爲語音特徵提取作準備。
 
3 .語音信號特徵提取模塊
按幀讀取 SRAM 中的語音數據,通過 FFT 模塊獲得一幀數據的功率譜,功率譜在 24 MEL 濾波器組加權後取對數,再通過 DCT 離散餘弦變換模塊,獲得 12 維倒譜域特徵矢量,做爲測試模版。這樣把一幀多維時域數據壓縮至 12 維倒譜域數據,爲模板匹配提供了高效處理,下降了識別的難度和計算量。
 
4 .隨機密碼模塊
爲了提升安全防範,用戶將限制在系統的指示範圍內錄音,隨機密碼模塊每次都會給出三個隨機碼的排列組合,用戶只能按照提示,錄製語音數據,避免了他人盜取客戶聲音錄製數據而非法闖入系統。 
 
5 .語音識別模塊
用戶預先錄製語音樣本,並運用PC機上的MATLAB平臺對這些語音樣本進行特徵參數提取,最終以文件形式存入SD卡。Nios II控制SD卡驅動獲取全部用戶模板,在Nios II上實現軟件算法DTW動態時間規整,將測試模板與SD卡中的用戶模板比較歐式距離,獲得設置的語音密碼識別結果。
 
6 .LCD液晶屏顯示模塊
完成菜單顯示,提示用戶進行ID卡鑑別,進而回顯系統產生的隨機密碼,提示用戶根據隨機密碼進行語音輸入操做,待處理完成,送識別結果回顯,提示用戶的合法性。
 
7 .射頻識別模塊
      射頻識別系統由兩部分組成:射頻卡和讀卡器。射頻卡用做承載用戶信息載體,讀卡器具備讀 / 寫功能,本系統經過 Nios II 處理器讀 / 寫射頻識別模塊的數據信息,在語音識別前開啓門禁系統的第一重身份認證,再經過語音識別控制門禁控制器最終開啓門禁系統, 突破傳統安防系統單一射頻識別的缺點,提升安防性能。
 
 8 .監控模塊
監控模塊包括有溫度,煙霧等受監控環境的常見參數監控。經過 CAN 總線遠程與 Nios II 進行數據交互,再通過以太網爲監控中心提供環境參數,便於調整受控環境。
(Revision: 19 / 2008-09-14 22:45:35)

3. 性能參數 (Final Project Paper)

 1. 資源使用狀況

(1)  系統設計資源使用狀況如圖:
圖2  系統資源利用率
(2) Frequency:116.75MHZ(fmax)
 
2.  做品性能參數
 
2.1  系統語音識別率
試驗用戶數:10個
試驗次數: 20次/人
識別率: 93%
拒識率: 7%
 
2.2 系統運行速度對比
爲了顯示本系統設計性能的優越性,咱們選擇 PC 機與之對比。 PC 的配置性能以下:
表1 PC機配置

品牌
CPU
時鐘(主頻)
內存
軟件平臺
聯想
Inter Pentium D 940
雙核處理器
3.2Ghz
1024 Mbyte
DDR2
MATLAB 6.5

 
2.2.1 語音 MFCC 特徵提取:
PC  MATLAB 6.5 上運行耗時截圖:
 
圖3  PC  MATLAB 6.5 上計算一次MFCC耗時截圖
在本系統中, MFCC 係數提取採用純硬件描述語言實現,其工做在 50Mhz 下時,計算一幀 MFCC 係數所用的時間約爲 60us 。運行速度對好比下表:
表2 PC與DE2平臺運行MFCC係數提早速度對比

測試平臺
處理對象
時鐘
處理耗時
DE2 平臺性能提高
PC
MFCC 係數提取
3.2Ghz
47ms
783
DE2 開發平臺
50Mhz
60us

 
2.2.2 語音端點檢測:
運行速度對好比下表:
表3 PC與DE2平臺運行端點檢測速度對比

測試平臺
處理對象
時鐘
處理耗時
DE2 平臺性能提高
PC
語音端點檢測
3.2Ghz
62ms
33.2
DE2 開發平臺
50Mhz
27Mhz
1.87ms

 
2.2.3  從語音錄入到識別結果輸出:
語音識別的運行時間與端點檢測後截取出來的語音幀長有關,在本系統中,將語音信號以 256 個語音採樣數據爲一幀( 8Khz 採樣率)。如下運行時間對比是基於三段分別爲 13 13 16 幀的語音數據進行的運行時間對比:
運行速度對好比下表:
表4 PC與DE2平臺對三段語言識別運行時間對比

測試平臺
處理對象
時鐘
處理耗時
DE2 平臺性能提高
PC
三段語音識別
3.2Ghz
2.45s
6.2
DE2 開發平臺
50Mhz
397ms

MFCC 係數提取中,包含大量的複雜運算: FFT 運算、取對數、浮點乘除法等等,儘管 PC 機的主頻很高,但其在這些複雜的數字信號處理中運算效率不夠高,計算一次須要幾個時鐘週期,而咱們設計的基於 FPGA 的數字信號處理採用並行處理方式,以較少的資源消耗換取了較大的性能提高。
而在端點檢測中,只有 Fir 濾波部分須要大量的乘法運算,其餘部分大體都是加法和判斷處理狀態轉移過程,此時 PC 主頻高的優點得以發揮,拉近了與硬件實現方法的差距。
在最後的性能對比中,因爲識別算法 DTW 是基於 Nios II 實現,並不是全硬件實現,因此最終二者性能差距大體在 6 倍左右,這已經是一個很是好的成績,徹底知足本系統設計的要求了。
 
2.3  與競爭方案的性能對比
咱們選擇了較爲有說服力的:國家天然科學基金資助項目 ( 90407017)  、北京市教委基金資助項目 (KP2701200201) ,來與咱們實現的方案進行對比。該項目在《小型微型計算機系統》 2007 8 月第 8 期,發表的論文《基於 FPGA  的嵌入式語音識別控制系統》展現其設計的系統。該系統基於 Xilinx 公司的 Virtex II Pro50 FPGA 芯片,處理器爲芯片內部的硬核 Power PC 405 。咱們將兩個方案進行對比:
表5 本方案與競爭方案對比
 
本系統設計方案
同類競爭方案
價格
功耗
較高
特徵提取時間(模板造成時間)
 短  (0.003s)
長  (0.69s)
DTW計算時間
較長 (0.39s)
短  (0.02s)
總體響應時間
短   (0.4s)
稍長 (0.7s)
分析兩方案的異同,本方案採用相對流行的 MFCC 語音特徵提取辦法,而對比方案採用 LPCC 語音特徵提取辦法。就計算複雜程度而言, MFCC 的運算量較多。本系統充分利用 Cyclone II 的資源和 SOPC 的設計理念,設計了基於 Avalon 總線的 MFCC 係數提取模塊,並用 DMA 進行數據搬運。這使得更爲複雜的語音特徵提取時間較競爭方案的時間更短。
在識別部分,兩方案均採用 DTW 識別算法。而競爭方案採用了硬件實現的方法,性能較咱們好。
就整體狀況而言,若同爲 10 個參考模板,本方案模板造成與識別的總時間在 0.4s 左右,而競爭方案模板造成與識別的總時間在 0.7s 左右。咱們以合理的設計思路、較低的設計成本取得了良好的性能參數。
 
2.4  系統偏差分析
 
2.4.1  MFCC 特徵提取偏差分析:
爲了驗證 MFCC 模塊運算正確,咱們構造了一個 256 元素的一維數組進行 MFCC 係數提取: [1,2,3,4,0,0,0,0 …… ,0,0,0] ;如下爲該矩陣分別在 MATLAB Nios IDE 平臺運算後提取出來的數據:
            

       圖4  MATLAB運算結果                                                     圖5  MFCC模塊運算結果

左圖爲在 MATLAB 6.5 上對上述矩陣進行 MFCC 係數提取後的截圖,而右圖爲在 Nios IDE 軟件平臺上採用 Nios 處理器從 AVALON 總線上讀取上述矩陣進行 MFCC 係數提取後的數據截圖。從圖中的數據能夠看到,二者間的絕對偏差大約保持在 0.0001 左右,這個精度已經能夠知足本系統的要求。
 
2.4.2  CORIC 對數運算單元偏差分析:
CORIC 對數運算是屬於 MFCC 係數提取模塊的一個部分,儘管上文已經對 MFCC 特徵提取偏差範圍作出了評價,但因爲在整個 MFCC 係數提取中,只有對數運算沒有采用標準的直接求取法來求解(事實上也很難採用直接求解法在硬件平臺上求解對數),因此對其作偏差評價也是頗有必要的。
根據 CORDIC 的計算原理,咱們在 MATLAB 上創建了一個 CORDIC 對數運算的仿真模型,該仿真模型的計算結構與 FPGA 端一致。
下圖爲 CORDIC 對數運算模型與 MATLAB 標準對數運算函數結果對比圖:
圖6  CORDIC對數運算偏差分析圖
圖中藍線爲標準對數運算的結果,而紅線爲咱們在 FPGA 端設計的對數運算結果。從圖中能夠看出,咱們設計的 CORDIC 對數算法僅在約 2.97—3.03 的範圍內產生偏差,其最大偏差產生在輸入值爲 3 的時候,此時: ln(3) = 1.0986 , 而咱們設計的 CORDIC 對數運算爲: 1.1080 ,其絕對偏差爲 0.0094 ;相對偏差爲 0.86% 。這個精度已經知足本設計的需求,並且除了 2.97—3.03 這個範圍外的 CORDIC 對數運算與實際的對數運算相比基本上沒有偏差。
注:在此只進行 2.000 —— 3.999 數據的效驗是由於 CORDIC 對數運算的數據輸入範圍爲: (2.000 —— 3.999)*2n ln(x*2n)=ln(x)+n*ln(2) ,因此只需驗證 2.000 —— 3.999 CORDIC 對數運算結果便可。詳細的設計論證請參考本文第四部分的設計方法。

 

(Revision: 4 / 2008-09-15 17:59:14)

4. 設計結構 (Preliminary Paper)

1.系統主要框架設計:

系統設計充分利用Cyclone II芯片及DE2開發板硬件資源。系統主要硬件模塊爲:射頻識別模塊,SD卡讀寫模塊,音頻採集模塊,RS232通訊模塊,以太網控制模塊,液晶顯示屏等。而系統主要軟件模塊包括:基於Verilog HDL的高速語音信號預處理模塊,基於Nios II的語音信號匹配識別模塊,RFID識別模塊,液晶顯示控制模塊,以太網控制模塊,SD卡文件系統控制模塊等。系統主要框圖(如圖7所示):

 

系統整體結構

2.主要算法流程設計:

高速語音信號處理模塊由如下幾部分組成:語音端點檢測模塊,語音特徵提取模塊。語音端點檢測模塊主要包括:FIR濾波器的設計,能量的計算,過零率的計算。語音提取模塊主要包括:基2256FFT模塊設計,MEL濾波器組的設計,DCT離散餘弦變換模塊等。

這部分處理採用Verilog HDL設計,應用流水線和乒乓操做,實現了數據的高速處理。

網絡模塊經過以太網技術,利用TCP/IP通訊協議實現DE2實驗板與監控中心的PC機系統終端的網絡傳輸。系統終端利用.NET應用軟件實現網絡通訊GUI接口,以實現上位機與下位機的網絡通訊,以便管理系統用戶數據庫。算法主要流程(如圖8所示):

 

8  算法流程圖

 

(Revision: 4 / 2008-09-14 21:58:14)

5. 設計方法 (Final Project Paper)

           本系統基於DE2開發板進行設計,充分利用了DE2板上豐富的資源,系統的TCP/IP網絡通訊基於DM9000A芯片,語音採集基於WM8731語音編解碼芯片,語音的加密數據保存於SD卡,並採用了板上的LCD 做人機友好交互。同時系統利用DE2的外擴插槽擴展本身設計的射頻識別讀卡器和CAN總線接收器。

在設計過程當中,充分考慮SOPC系統的特點,充分發揮了SOPC系統在數字信號處理中的並行運算優點和Nios自定義指令加快程序運行速度的優點。下圖爲本系統的SOPC builder定製圖:

圖9  系統SOPC builder定製圖
系統硬件設計
 
1.1  識別模塊設計實現方法
RFID 識別模塊採用的是ZLG500B系列的射頻識別模塊,而Mifare 卡則採用NXP公司的MF1S50系列射頻卡。該模塊基於NXP高集成度讀卡芯片MFRB500。當讀卡模塊初始化工做完成後,便開始監測 Mifare卡,Mifare卡一共有五種狀態,如下是Mifare卡的狀態轉移圖。

圖10  Mifare卡的狀態轉移圖
ID  卡是客戶身份卡,裝載客戶的ID信息和自行設定的48bit密碼,當客戶刷卡成功,蜂鳴器提示一重認證經過,開啓語音識別認證,確保門禁系統的安全。
 
1.2  環境參數監控模塊設計實現方法
本模塊模擬監控實驗室溫度的過程,因爲在實際實驗室中,各類干擾信號及通信距離較遠,故本模塊採用CAN總線進行通信。CAN(Controller Area Net)是一種現場總線,主要用於各類過程檢測及控制,其具備抗干擾性強、通訊距離較遠等優勢。在本模塊的設計框圖以下:

圖11  環境參數監控模塊原理圖
本模塊採用SJA1000作爲CAN總線控制器,CAN總線收發器則採用CTM1050T高速隔離收發器。在實物設計中,咱們選擇對環境的溫度進行實時監控,若是要對其餘的環境參數進行監控,只需更換傳感器便可。
環境參數實時採集卡的設計基於AT89S51單片機,單片機採集溫度數據後,將溫度h數據經過CAN總線發送到Nios II。下圖爲環境參數採集卡CAN總線網絡鏈接圖:

 

 

圖12  CAN總線網絡鏈接圖
 
1.3  語音採集與預處理模塊
本模塊要實現的功能是採集語音信號,並對其進行FIR濾波、語音數據歸一化、語音的端點檢測處理。
 
1.3.1 語音採集單元:
語音採集部分採用DE2板上的WM8731進行設計,經過I2C總線設置後,WM8731就會一直工做在設定的模式中。語音採集單元包含一個PLL,一個I2C總線控制器、一個左對齊模式下的語音採集控制器。
PLL 給予WM8731工做在18.4Mhz的時鐘頻率下,經過I2C總線控制器設置WM8731工做在8Khz的採樣頻率下。下圖爲在嵌入式邏輯分析儀(SignalTap II Logic Analyzer)下圖語音採集控制器的採樣圖:

圖13  語音採集控制器的採樣圖
從圖中可見,左對齊語音採集過程一共有19個脈衝,其中前16個脈衝爲有效語音數據提取脈衝,後三個脈衝爲未來處理擴展預留。有效語音提取出來以後便存入SRAM中。本模塊經過計數器,從啓動錄音開始,自動錄製4s的語音信號。
 
1.3.2 語音歸一化處理單元:
語音歸一化處理典型的計算公式爲:DATA/MAX(DATA),若是按照這種標準歸一化處理,則須要消耗2個硬件乘法器資源。本着節約片上資源的設計理念,咱們創新地提出了一種通過簡化的歸一化處理模型,該模型只需移位便可實現歸一化運算。流程以下:
第一步:先取語音數據的最大值MAX(DATA)。
第二步:令m>= MAX(DATA)且m=2^n(n>=8),尋找一個最小值n。
第三步:將歸一化運算由DATA/MAX(DATA)改成DATA/m。在數字電路中除以2^n只需簡單的移位便可實現。
鑑於咱們這裏將16位的原始語音歸一化爲8位的小數,因此只要將每個語音數據右移(n-8)位便可。當n小於8時,則無需再移位。
通過修改後的歸一化運算,運行速度更快,資源消耗更少,其不足在於犧牲一點採樣精度而已。
 
1.3.3  Fir 濾波器運算單元:
因爲原始錄入的語音高頻部分的頻譜比低頻部分的成分少,爲此要在預處理中加入預加劇處理,預加劇的目的是提高高頻,使得信號的頻譜變得平坦。通常採用的是一階高通濾波器,系統函數爲 。咱們利用了DSP Builder設計了一階FIR濾波器。方法以下:
第一步:由系統函數獲得差分表達式:
第二步:在DSP Builder 中生成 Simulink 系統仿真圖,並生成VHDL代碼。
設計的FIR模型頂層文件以下:

圖14  FIR模型頂層文件
從DSP builder的截圖能夠看出,Fir濾波器的輸入是16位的Q8定點小數,運算後輸出也取16位Q8定點小數。下圖爲Fir在Quartus II的仿真圖:

圖15  Fir仿真圖
咱們在MATLAB對該仿真結果進行驗證:

圖16  Fir仿真結果驗證
 
1.3.4 語音端點檢測運算單元:
因爲原始數據中含有噪聲和無聲段以及靜音段,爲了獲取有效語音數據,必須從原始數據中截取有效的語音數據。在端點檢測中,咱們把語音分爲:靜音段,過渡段,語音段,結束段。語音端點檢測狀態轉移圖以下所示:

 

圖17  語音的端點檢測狀態圖
端點檢測後的語音數據仍保存於SRAM中。咱們將DE2板上的512KB的SRAM劃分爲5個區:地址0——0x7fff爲原始語音數據保存區,0x8000——0xffff爲經端點檢測後的第一段語音數據(在端點檢測以前已對該段語音數據進行歸一化處理與Fir濾波處理)保存區。0x10000——0x17fff爲經端點檢測後的第二段語音數據保存區。0x18000——0x1ffff爲經端點檢測後的第三段語音數據保存區。0x20000——0x3ffff(0x3ffff 是SRAM的最終地址)爲未來擴展而預留。
下圖爲語音預處理模塊處理咱們錄進去的「你們好「效果圖。本圖是經過DE2控制面板軟件讀取SRAM前256KB數據(地址:0——0x1ffff)在MATLAB軟件上畫出來的圖形:
圖18 語音的端點檢測效果圖
從圖中能夠看出語音預處理模塊能夠很好地完成Fir濾波、語音歸一化、語音端點檢測的任務。
 
1.4 MFCC 特徵提取模塊
在設計之初,咱們曾計劃將MFCC模塊作成一個Nios II的指令,以此加快其對語音數據的處理速度。可是每次MFCC運算的輸入數據爲256Byte,若是將MFCC作成Nios II的指令,這就意味着須要Nios II從SRAM讀取(搬運)這大量的語音數據。此時Nios II的工做效率和最終系統的運行速度將會大大下降,因此咱們將MFCC模塊作成了一個Avalon總線的從設備,使用DMA來爲它搬運數據。設計結構圖以下:

圖19  識別部分總體設計結構圖
在介紹MFCC中各運算單元實現步驟以前,有必要詳細說明一下本系統的數據格式變換,數據變換的緣由下文會有講解。在上文中提到,語音通過歸一化處理後,成爲16位的Q8格式小數語音信號,整個MFCC數據格式變化以下圖所示:

 

圖20  FPGA中數據格式變化
MFCC 特徵提取模塊包含:FFT運算、數據取模運算、Mel濾波器運算、對數運算、DCT離散餘弦變換、一階倒譜提高。因爲篇幅的關係,在此僅選擇其中最複雜的三個部分進行介紹。
 
1.4.1  FFT 運算單元
 
(1) FFT 設計方案對比
在FFT運算單元設計之初,咱們有兩個設計方案:浮點型FFT和定點型FFT。二者的區別在於:前者計算的值的範圍大,然後者所能計算的範圍較小。在前文咱們提到,在本系統中語音歸一化處理後變爲8位有效數據,若是採用浮點FFT,則得將原來的八位數據擴展爲32位,而採用定點的FFT則只需在原來數據位寬的基礎上擴充一倍便可。不管邏輯資源的消耗、乘法器資源的消耗仍是FPGA內部存儲資源的消耗都是定點型FFT比浮點型FFT來得少。基於上述緣由,本系統採用定點FFT。
 
(2)  定點FFT的設計方法
定點FFT設計的關鍵就在於蝶形結單元的設計和地址產生邏輯的設計。蝶形結是FFT處理器的基本運算單元,本模塊的蝶形結消耗了8個硬件乘法器,一半用於數據的實部相乘,另外一半用於數據的虛部相乘。鑑於Cyclone II的乘法器均爲9bit,所以咱們在蝶形運算單元將原來的8位小數擴充爲10位,組成高8位爲整數位,低10位爲小數位的Q10格式數據。這樣即充分利用了現有資源又提升了FFT運算的精度。蝶形結采用流水線設計,數據輸入到輸出有6個時鐘週期的延遲,因爲蝶形運算數據的連續輸入,因此每計算一次蝶形結只需一個時鐘週期。
FFT 模塊設計的難度主要在地址產生邏輯,地址產生邏輯的設計直接影響FFT模塊的性能和FFT運算結構。咱們的FFT地址產生模塊按照標準FFT地址跳變方式設計並知足蝶形運算單元流水線運算的須要。爲了獲得高速的FFT處理速度,咱們在FFT模塊中開闢了兩個RAM數據存儲區,以此組成典型的乒乓操做模式:在FFT第一級運算中,數據從RAM1經蝶形單元計算存入RAM2,在第二級中則正好相反,依次類推……下圖爲FFT總體設計框圖:

 

圖21  FFT結構功能圖
在這種設計結構下,計算一次蝶形運算只須要一個時鐘,處理速度達到同類設計結構的最高極限。經Quartus II綜合後FFT模塊的時鐘可達162Mhz,消耗的邏輯資源約爲700多。在100Mhz時鐘下,計算一個256點FFT的時間不到11us,達到了數據高速處理的目的。如下爲FFT模塊仿真圖:

圖22  Q10格式256點FFT時序仿真
對上面Q10格式的FFT仿真結果進行驗證:從圖中能夠看到FFT運算結果的頭幾個數爲:0x0A0000000,0x09FD3FE0C,0x09F0FFC19……按照Q10格式,這三個數分別爲:十、9.9882-0.48828i、9.9404-0.97460i。而MATLAB計算的結果爲:十、9.9849 - 0.49054i、9.9399 - 0.97911i,二者相差不大,定點FFT運算模塊與MATLAB計算的結果相比存在小小偏差。
爲了更直觀地驗證FFT模塊計算的正確性,對一幀實際語音數據進行FFT計算:下圖中藍色表明FFT 模塊對一幀語音數據通過FFT 運算後的頻譜圖,紅色表明一樣的語音數據是用MATLAB 指令fft(data)運行的仿真圖,能夠看到咱們自行設計的模塊能達到應用的要求,而且與MATLAB軟件有一樣的效果。

圖23  一幀語音數據的頻譜圖
 
1.4.2  MEL 濾波器的設計
MFCC (Mel-Frequency Cepstral Cofficients)的分析着眼於人耳的聽覺特性,由於,人耳所聽到的聲音的高低與聲音的頻率並不成線性正比關係,而Mel頻率尺度則更符合人耳的聽覺特性。所謂Mel 頻率尺度,它的值大致上對應於實際頻率的對數分佈關係。Mel頻率與實際頻率的具體關係可用下式表示:
Mel(f)=2595lg(1+f/700)
這裏,實際頻率f 的單位是Hz。根據Zwicher 的工做,臨界頻率帶寬隨着頻率的變化而變化,並與Mel頻率的增加一致,在1000Hz 如下,大體呈線性分佈,帶寬爲100Hz左右;在1000Hz 以上呈對數增加。相似於臨界頻帶的劃分,能夠將語音頻率劃分紅一系列海明窗濾波器序列,即Mel 濾波器組。
在本系統中,此MEL濾波器組是一個24階的海明窗濾波器,此濾波器係數是一個24X128的矩陣,而在這個濾波器係數組中,有許多的係數都是0,以下圖示:

圖24   部分MEL濾波係數在MATLAB軟件上的截圖
從圖中能夠清晰看到,MEL濾波係數組大部分元素均爲0。對該係數組在MATLAB下調用plot函數繪圖能夠看到Mel濾波器係數組的圖形:

圖25  MEL24 階的海明窗濾波係數組
從上圖能夠發現Mel濾波係數組每一階的非零數據是不相同的。也就是說想在FPGA上構造一個與C語音相似的稀疏矩陣,難度很大。而若是將整個濾波係數矩陣的24*128個係數均存入FPGA的存儲區中,又會形成很是大存儲資源浪費。
爲了以最少的資源、最快的速度實現Mel濾波器,咱們將Mel濾波係數組設計成單一狀態轉移結構。即採用一個計數器,給予每一級Mel濾波一個特定的值,從Mel濾波計算開始,該計數器便開始計數,利用該計數器即可決定Mel濾波器的計算狀態。採用這種設計方式即可在FPGA中僅僅保存Mel濾波係數中的非零係數,且綜合後的運行速度可達180多Mhz。下圖爲Mel濾波器第一階計算的結果:

圖26  Mel濾波器第一階計算仿真結果
 
1.4.3 對數運算單元設計
MFCC  中語音信號的幅度譜在每個濾波器組中累加將獲得一個較大的加權值,算法中須要對各個加權值取對數來達到壓縮數據的目的。
 
(1)FPGA對數算法運算方案對比
一般狀況下FPGA實現對數運算的方法通常採用一下三個:
方法一:採用查表的方式來實現
方法二:採用泰勒級數來近似這個函數,也就是:

方法三:基於座標旋轉數字式計算機(Coordinate Rotation Digital Computer,CORDIC)的算法。
對比三個方法,其中方法一的實現最爲簡單。可是方法一的計算精度與所製做的表的大小成正比,也就是說採用方法一實現較高精度的對數運算將要耗費巨大的存儲器資源。顯然在本系統中並不適用。
而方法二和方法三,在其收斂區間上都可以取得較好計算結果。在方法二中,每個級數的計算須要3到4個的硬件乘法器。若是採用各級共享乘法器的設計方法,則計算一次對數須要較長的時間。而若是使用流水線結構設計,又會消耗大量的乘法器資源。
採用方法三的CORDIC算法具備突出的優點:不須要硬件乘法器,全部運算只有移位累加;能夠使用流水線方法,以提升工做頻率與效率;也能夠使用循環迭代方法,以節約硬件資源。其計算精度與運算迭代次數成正比(也就是邏輯資源)。咱們設計的15次流水線迭代的CORDIC對數運算單元消耗的LE約爲1100左右。
對比方案二和方案三,顯然方案三在各個方面都具備突出的優點。故本系統採用CORDIC算法實現對數運算。
 
(2)CORDIC對數運算實現方法
三角函數的CORDIC算法最初由Jack Volder提出,應用與實時導航的數字處理,John Walther等人將CORDIC理論進行了擴展。如今CORDIC算法已經應用與衆多領域。
本文不涉及過多的理論,關於CORDIC的資料能夠參考《A survey of CORDIC algorithms for FPGA based computers》一文。要實現CORDIC對數運算的關鍵就是找到它的迭代多項式。本系統採用的是利用CORDIC結構實現雙曲線座標變換,而雙曲線函數能夠很方便轉換爲對數函數,在本系統中採用的迭代方程推導以下:

進一步分析這一迭代方程,對該多項式迭代後的結果爲:咱們所需的ln(t)等於2* 。爲了省去乘2這一步,咱們再將迭代多項式優化爲:

在此迭代多項式下,只需令x的初值等於t+1,y的初值等於t-1,z的初值等於0。通過n次迭代後,ln(t)= 。
經過對後一個多項式的迭代運算,咱們就能夠獲得所需的對數運算結果。須要注意的是,在這個CORDIC迭代方程中沒法知足整個天然域的實數運算,此時能夠經過簡化公式進行化簡:
 
能夠發現, 正好是浮點格式數據。也就是說,只要輸入CORDIC對數運算的數據爲浮點格式,就能夠輕鬆處理大範圍的實數。
爲了對數運算的方便,本處沒有采用標準浮點格式,而是針對CORDIC對數運算的須要設計了一個簡單的浮點格式。該浮點格式表示規定爲: 且 。這樣定義的緣由是:CORDIC對數運算方程y的初始輸入變量爲:t-1,當t趨近於1時,y趨於0,這樣迭代結果就會產生較大偏差。因此在此直接規定了t的取值範圍,防止y=0的狀況發生。又MEL濾波器輸出的數據恆爲正數,因此浮點的符號位也可忽略。最終這種簡化的浮點格式爲: 20bit 爲t,後12bit爲2的指數位(指數位爲有符號數據)。
下圖爲對數運算在Quartus II仿真結果:

圖27 CORDIC對數運算仿真
浮點格式0x20000800 = 2.0*2^(-2048),ln(2.0*2^(-2048))= -1418.87228,而CORDIC對數運算的仿真結果採用Q16定點小數表示,0xA752172 = -1418.86936 二者的絕對偏差:0.003。
對後一個仿真結果的驗證:浮點格式0x22000000 = 2.125*2^(0)=2.125,ln(2.125)= 0.7537718,仿真結果Q16定點數據:0xC106 =0.7539978 二者的絕對偏差:0.0002。
 
(3)定點小數轉浮點格式小數的實現方法
上文提到,在對數運算單元中,輸入的數據爲浮點制的格式。但咱們以前的數據一直都採用定點小數格式,因此必須在對數運算以前將定點格式的數據轉換成浮點格式的數據。
定點轉浮點格式採用狀態機的方法設計,下圖是其狀態轉移圖:

圖28  定點轉浮點格式狀態轉移圖
按照這一流程即可將原來的32位Q16格式數據轉換爲CORDIC對數運算設計的浮點格式數據。
下圖爲定點格式轉浮點格式的Quartus II仿真結果:

圖29  定點格式轉浮點格式仿真結果
從圖中能夠看到,輸入32位Q16格式0x00011000=1.0625,
0x22000fff=2.125*2^(-1)=1.0625 。同理對後一個仿真結果驗證:輸入Q16格式0x12345678=4660.3377,0x2468A00B=2.275542*2^(11)=4660.3125。結果均在偏差範圍以內。
 
1.5  隨機密碼產生模塊
隨機密碼產生模塊採用僞隨機序列(也稱爲m序列)的原理進行設計。僞隨機序列在通訊、雷達、導航以及密碼學等重要的技術領域中得到了普遍的應用。在本系統中,隨機密碼起到了很是重要的做用,在每次語音識別以前,系統經過隨機序列獲得隨機數,要求用戶錄入相對應的語音密碼,這就至關於擴大了系統密碼庫。即至關於將10個語音密碼擴展爲1000個語音密碼。僞隨機序列採用移位反饋寄存器設計,下圖爲設計頂層結構圖:

圖30  隨機密碼產生頂層結構
在僞隨機序列產生的這些移位寄存器中,不容許全零的狀態出現。因此咱們設置了一個延時復位單元,在系統上電後一段微小的時間後,圖中的全部移位寄存器都會被置1。下圖爲隨機密碼模塊仿真圖:

圖31  隨機密碼模塊仿真
 
1.6  自定義指令
在本系統中,定製了基於Nios II的DTW計算指令,DTW的計算結果取值範圍較大,通常從幾百到幾十萬,而用於計算DTW的MFCC係數的值大多從0到正負十幾之間,若是此時繼續採用定點數據,顯然已經沒法知足系統要求。因此,咱們本身設計定製了計算DTW的浮點Nios指令。
定製的指令包括:
1 )定點Q16格式數據轉浮點格式數據
2 )浮點相加指令
3 )浮點歐式距離計算指令
4 )浮點數據大小比較指令
5 )浮點數相乘指令
指令定製截圖:

圖32  自定義指令
經過這些指令的定製,使得本系統在DTW識別算法的計算時間縮短了4.12倍:
表6  自定義指令運行時間對比
實現方法
運行時間
自定義指令速度提高
直接採用程序實現 DTW
1429ms
 
4.12
採用自定義指令實現 DTW
346ms
可見在Nios中自定義指令能夠得到很好的性能提高幅度。須要注意的是,在Nios IDE中,若是直接定義浮點型變量沒法直接輸入到自定義指令中進行運算,因此本系統採用alt_u32型變量來「裝載」浮點變量。固然,這樣處理後,就不能在Nios IDE中直接採用+-*/等運算符直接對這些變量進行運算了,只能採用自定義的指令來操做。
 
2 .系統軟件設計
本系統採用了兩個Nios II處理器,一個負責識別算法實現,另外一個則負責與上位機的TCP/IP網絡通訊等。
 
2.1  識別算法的程序流程(CPU_1)
系統上電覆位後,液晶屏上將顯示系統初始化成功,將等待用戶刷卡,由串口接受合法用戶的ID號,非法用戶將沒法進入下一步語音識別,並在液晶屏上顯示非法ID,驗證ID 合法後,產生隨機密碼並液晶回顯,並開始採集四秒鐘語音數據,進入語音識別驗證。最後系統經過TCP/IP網絡發送識別結果給遠程監控中心。下圖爲CPU_1的程序流程圖:

圖33   CPU_1的程序流程圖
 
2.1.1  DTW 識別程序設計
在孤立詞語音識別中,最爲經常使用的方法就是DTW 動態時間規整算法,它與其它識別算法如HMM算法在相同環境條件下,識別效果相差不大,但HMM算法的實現要複雜得多,這主要體如今HMM 算法在訓練階段須要提供大量的語音數據,經過反覆計算才能獲得模型參數,而DTW算法的訓練中幾乎不須要額外的計算。在本系統中考慮到算法複雜程度以及對系統速度性能的要求,選擇兼顧識別效果和低複雜度的高效算法DTW。
算法實現流程:
(1)首先讀取SD卡里面的語音模板庫,客戶的語音參數模板都是以通過特殊處理的二進制文件存放在SD卡內。Nios II讀入文件,做爲語音特徵矢量R。
(2) 特徵參數提取模塊組件處理獲得的實時採集的測試客戶模板,做爲語音特徵矢量T。
(3) 比較T和R之間的類似度,即便計算累積距離,距離越小則類似度越高。這一失真距離,可採用動態規劃的方法。下圖是把測試模板的各個幀號在一個二維直角座標系中的橫軸標出,把參考模板的各個幀號在縱軸標出,經過這些幀號的整數座標畫出一些縱橫線便可造成一個網絡,交叉點表示測試模式中某一幀與訓練模式中某一幀的交匯點。DP算法能夠歸結爲尋找一條經過此網格中若干格點的路徑,路徑經過的格點即爲測試和參考模板中進行距離計算的幀號。路徑的選擇必須從左下角出發,在右上角結束,且生長點的斜率必須在1/2到1之間。以下圖所示。

圖34  DTW搜索路徑
如下是算法流程圖:

圖35  DTW 算法流程圖
 
2.1.2  FAT 文件系統的移植與實現
FAT 是Microsoft推出的文件系統,具備高度兼容性,目前仍然普遍應用。FAT(File Allocation Table)是「文件分配表」的意思。顧名思義,就是用來記錄文件所在位置的表格,它對於存儲盤的使用是很是重要的,倘若丟失文件分配表,那麼存儲盤上的數據就會因沒法定位而不能使用了。
在本系統中,FAT文件系統在一張1G的SD卡中實現,因此選擇移植FAT16文件系統。FAT16使用了16位的空間來表示每一個扇區(Sector)配置文件的情形,故稱之爲FAT16。
要實現FAT16文件系統,最關鍵就是對FAT16目錄項32個字節的操做,下表爲該目錄項32個字節的定義:
表7  FAT16目錄項32個字節的定義
字節偏移(16進制)
字節數
定義
0x0~0x7
8
文件名
0x8~0xA
3
擴展名
0xB
1
屬性字節
0xC~0x15
10
系統保留
0x16~0x17
2
文件的最近修改時間
0x18~0x19
2
文件的最近修改日期
0x1A~0x1B
2
表示文件的首簇號
0x1C~0x1F
4
表示文件的長度
在SD卡中進行讀取二級目錄文件的程序流程圖:

圖36  SD卡操做流程圖
若是要進行三級目錄文件讀寫,只需重複上述黃色部分的流程便可。而若是要進行根目錄下文件讀寫,則只需去掉黃色部分流程。因而可知,其實文件夾在FAT16文件系統中將會佔1個簇的存儲空間。
 
2.2  網絡通訊的程序框架圖(CPU_0)
CPU_0 負責的工做在實時操做系統下以多任務的形式是與電腦進行TCP/IP網絡通訊、收集實驗室環境數據和門禁識別結果等。程序總體框架以下圖所示:

圖37 CPU_0程序總體框架
 
2.2.1  uC/Os II  操做系統的實現
Altera 公司已經爲用戶移植好了uC/Os-II實時操做系統,並將其像外設驅動同樣看成一個軟件模塊集成到了Nios II IDE,在Nios II IDE環境下,用戶不用修改其源文件對uC/Os-II的配置,只需經過圖形界面就能夠實現,使用起來很是方便。正是這些緣由,在Nios系統中使用uC/Os-II操做系統很是方便。
 
2.2.2  LWIP 網絡通訊實現與應用
LWIP 全稱爲Lightweight IP TCP/IP stack,是一個輕量級的TCP/IP協議棧,其主要特性是以最小的資源佔用實現完整的TCP/IP協議,所以特別適用於嵌入式系統。Altera公司已經在Nios處理器上爲用戶移植好了LWIP,並內嵌到Nios IDE中。因此在本系統的軟件設計中,咱們很方便地將uC/Os-II和LWIP結合到咱們的系統中,並大大減小了系統開發的時間。
網絡通訊採用DE2板載DM9000A以太網控制器芯片。它集成了介質訪問控制子層(MAC)和物理層的功能,它爲嵌入式系統實現的以太網鏈接提供了良好、便捷的解決方案。
 
1 )DM9000A驅動與LWIP的銜接
DM9000A 與LWIP的銜接經過LWIP提供的幾個重要的結構體實現,以下圖所示:

圖38 DM9000A與LWIP的銜接
例如:netif結構體做爲LWIP中網絡接口的基礎數據類型,描述了網絡接口的基本屬性以及輸入、輸出函數。alt_lwip_dev結構體描述了符合LWIP規範的網絡端口設備。alt_lwip_dev_list:設備鏈表。在LWIP定義的這些結構體類型的基礎上,咱們在主程序中定義了針對DM9000網絡接口的一個結構體:alt_avalon_dm9k_if。有了這個結構體,DM9000的寄存器讀寫操做開始與LWIP的工做機制發生了聯繫。
總的設計思路是這樣的:LWIP定義了一個全局變量alt_lwip_device_list,全部LWIP提供的API都可以對這一變量進行操做。而DM9000經過ALTERA_AVALON_DM9K_INSTANCE宏指令將DM9000做爲alt_lwip_device_list中的一個alt_lwip_dev,使得LWIP的API函數的操做將轉換爲對DM9000的寄存器讀寫操做。
 
2 )網絡應用程序的開發
移植成功LWIP後,就可以利用socket API來完成應用程序的設計。本系統基於Nios IDE提供的simple_socket_server模板進行網絡應用擴展。這使得TCP/IP網絡通訊的實現更加簡單。
網絡Socket通信過程:先初始化Socket,而後與端口綁定(bind),對端口進行監聽(listen),調用accept阻塞,等待客戶端鏈接。在這時若是有個客戶端初始化一個Socket,而後鏈接服務器(connect),若是鏈接成功,這時客戶端與服務器端的鏈接就創建了。
當鏈接創建後,咱們就能夠在sss_handle_receive()函數中創建自已在TCP/IP鏈接中所需的任務。以下圖所示:

圖39 TCP/IP新建任務流程圖
當TCP/IP鏈接斷開後,再把在TCP/IP鏈接中創建的任務刪除便可。
 
2.2.3  RFID 射頻識別的程序設計
RFID 選擇如今最爲常見的MF1S50系列。系統上電覆位,讀卡芯片裝載正確的密鑰到非易失性密匙存儲器,等待有RFID卡的到來,啓動卡的驗證 ,將驗證命令發送到卡,當從卡接收到第一個報文令牌後,微控制器必須檢測通訊狀態標誌。若是通訊到目前爲止保持成功,則啓動卡驗證的第二部分。卡將會以第二個報文令牌進行響應。而後微控制器必須檢測通訊狀態標誌。若是驗證已成功,則與MIFARE卡繼續進行CRYPTO1加密下的通訊,讀出ID,卡置爲掛起狀態,蜂鳴器響,發送ID號。 在RFID射頻識別的設計中,須要注意的是:RFID射頻識別的流程以下圖所示:

圖40  RFID射頻識別的流程圖
 
2.3  環境參數採集卡程序設計
在實際設計中,環境參數採集卡是安裝在離主控板(DE2板)較遠的地方,直接採用主控板進行數據採集顯然不合理。因此在此我選擇低價、應用廣泛的89S51單片機完成環境參數採集的任務。採集卡的任務就是經過相應的傳感器採集環境參數,再經過CAN總線將環境參數發送到主控模塊中去。
其程序流程以下圖所示:

圖41  環境參數採集卡程序流程
 
2.4 . 上位機監控軟件設計
本系統設計了一個簡單的監控軟件,對門禁系統實時進行遠程監控。監控軟件上能夠看到門禁監控系統採集的環境參數變量和門禁識別結果。下圖爲軟件運行截圖:

圖42  上位機監控軟件運行截圖
除了使用監控軟件進行遠程監控外,也能夠使用Windows自帶的遠程登陸命令登陸到監控系統中。下圖爲採用windows自帶的telnet命令登陸本系統後的截圖:

圖43  DOS 命令截圖
 
2.5  雙Nios通訊的實現方法
CPU1  和CPU2有各自的存儲區,爲了他們之間通訊的方便,添加了一個共享的存儲區以此來交換數據,爲了不兩個CPU 同時訪問共享的存儲單元時引發資源衝突,而致使系統崩潰,這裏添加了互斥核,在訪問共享區時,任何一個CPU 都必需先打開互斥核,這時能夠實現消息傳遞,而後關閉互斥核。另外一CPU 一樣能夠經過這樣的操做獲取消息。設計框圖以下圖所示:

圖44  雙Nios II共享存儲區交換數據
3.  系統整合與效果
本系統在語音識別部分的綜合後時鐘可達130Mhz左右,但在這一部分咱們僅使用50Mhz的時鐘,由於如今的處理速度已經能知足咱們的要求,並且每次綜合所得電路存在隨機性,不管從穩定性仍是系統功耗考慮,都是採用較低時鐘。若是更換更高時鐘,性能參數還能繼續增長。
下面是做品在軟硬件整合後運行的演示圖:

 

圖45  做品實物照片

 

(Revision: 13 / 2008-09-14 23:34:05)

6. 設計特色 (Preliminary Paper)

1.咱們採用Nios II搭配本身設計的外設邏輯進行語音識別及RFID的多重安防門禁監控系統的設計和開發,利用FPGA的並行優點,控制系統所有集成於一片FPGA實現。這與使用MCU方案相比,系統更加小型化,集成度高、運行速度更快。除此以外,本系統設計減小了物理鏈接和節約了PCB面積,這樣不只下降了功耗,還加強了系統的穩定性。

2.因爲咱們的系統須要進行大量的數據運算,僅使用CPU進行軟件計算遠遠沒法知足速度的要求,所以咱們採用Verilog HDL設計了語音識別的處理模塊,本模塊充分利用了Cyclone II芯片中的豐富的乘法器資源,而且在設計的過程當中採用合理的流水線設計和乒乓操做,其運行處理速度徹底優於如今流行的DSP處理平臺。

3.咱們把語音識別和無線電識別巧妙的結合在一塊兒共同實現安全系統的防範技術,這是市場上正剛剛興起的新型技術的結合應用,使得社會價值和市場效益將會有很大的發展空間,也是本系統設計的最大亮點,很是具備社會效益和經濟價值。

4.咱們充分利用了DE2板上豐富的接口資源,例如網絡接口,音頻接口,SD卡接口,串口,外部擴展接口等,這樣解決了獨立外設帶來的接線複雜與互相干擾等問題,有利於咱們針對性地基於FPGA設計功能強大的系統。

 

(Draft / 2008-06-12 18:09:22)

7. 總結 (Final Project Paper)

        首先感謝Altera 公司提供了本次比賽的機會,以及在比勝過程中對咱們所遇到的問題所提供的幫助和支持。通過連續兩個多月的學習,咱們對SOPC系統有了更加深刻的瞭解。在系統設計中使用了SOPC Builder中提供的經常使用IP 核,大大節省了系統開發時間,讓咱們的設計工做變得更加有針對性。SOPC Builder靈活的自定義組件功能充分發揮了咱們的系統性能,針對咱們的語音識別系統,須要實時採集大量的語音數據,也須要實時對它們處理,咱們把最重要也是難度要求最高的數字語音預處理,特徵提取,所有用硬件實現,並經過SOPC Builder 的友好自定義圖形用戶嚮導輕鬆構建了合適的SOPC 系統。

        經過這次比賽,咱們對基於Nios的SOPC系統有了更深刻的瞭解,深入感覺到了SOPC系統設計構架的博大精深。在短暫的學習過程當中,咱們完成了複雜的系統構架,充分利用了Altera 公司提供給咱們的自由空間,好比雙核協同工做,複雜IP設計,操做系統的移植,自定義指令加速軟件運行時間等等。

         另外,在這次比勝過程中,咱們瞭解到團隊合做的重要性,正是由於咱們在設計過程當中的分工合做,每一個人都負責本身熟悉的部分,並及時交流溝通,使得咱們收到了事半功倍的效果,最後順利完成了預期的整個系統。

        最後,感謝指導老師對咱們的指導,也感謝全部在這段時間給予咱們支持的老師和同窗。

(Draft / 2008-09-14 17:38:39)
相關文章
相關標籤/搜索