• 沒有找到結果。

第四章 外加傳送與接收機制之設計 (Extra Transmitting / Receiving Functionalities)

在本章裡,我們會提出外加傳送與接收機制的架構。因為分散式 語音辨識系統的即時需求,我們捨棄 GPRS 設定的難免有不少時間延 遲(Time Delay)的錯誤控制機制,以外加傳送與接收機制的模式來保 護數據之傳輸。我們所選用的數據保護機制是外加 BCH 錯誤更正碼與 位元分散器(Interleaver),並且在伺服器端根據接收到的特徵參數 音框向量,進行錯誤補償的動作以增加整體系統的辨識效能。

圖 4-1 基於 GPRS 之主從式架構分散式語音辨識系統方塊圖

量化碼本 量化碼本

特徵參數的 抽取與壓縮

特徵參數的 反壓縮

外加傳送機制 外加接收機制

GPRS 連結層 GPRS 連結層

GPRS

4.1 外加傳送與接收機制簡介

圖 4-1 是架構在 GPRS 傳送下之分散式語音辨識系統的方塊圖。

本論文致力的地方在於前端(client)的特徵參數抽取與壓縮(在本章 與之後的章節,我們都只討論餘弦與向量量化壓縮法),並為了對抗 通 道 錯 誤 而 增 加 的 外 加 傳 送 機 制 ( 錯 誤 更正 與 偵 測 碼 ) , 在 後 端 (server),我們首先在外加接收機制裡利用錯誤更正碼將一些傳輸錯 誤的資料作更正,並藉由錯誤偵測碼與特徵參數間彼此的統計特性,

進行錯誤補償的動作,以提高整體系統的效能。

典型都市環境 傳送訊號雜訊比 15 dB 的平均位元錯誤率 行動速率 (km/hr) CS1 CS2 CS3 CS4

0 0.000119 0.00123 0.00484 0.00654 50 0.000315 0.00146 0.00415 0.00699 100 0.000586 0.001544 0.006622 0.007344 250 0.001053 0.00461 0.013426 0.012708 表 4-1 典型都市環境、訊號雜訊比 15 dB、各種行動速率下之平均位元錯

誤率

丘陵地勢環境 傳送訊號雜訊比 15 dB 的平均位元錯誤率 行動速率 (km/hr) CS1 CS2 CS3 CS4

0 5.2875E-05 0.000135 0.0023225 0.004222 50 5.4625E-05 0.000165 0.00203625 0.00412 100 6.2825E-05 0.00061125 0.00259 0.005185 250 7.0001E-05 0.00200875 0.0071275 0.009572 表 4-2 丘陵地勢環境、訊號雜訊比 15 dB、各種行動速率下之平均位元錯

誤率

由表 4-1、4-2 我們可以發現當傳送訊號雜訊比為 15 dB 時,只 有 CS1 的通道編碼在典型都市與丘陵地勢的環境下,行動速率由 0 km/hr 到 250 km/hr,都能符合平均位元錯誤率小於或等於

10

3的要 求;為了維持高辨識率的分散式語音辨識系統,對於 CS2、CS3 與 CS4 這三種通道編碼需要加入外加傳送與接收機制。

如同第二章所述,因為 CS2 與 CS3 這兩種通道編碼是將欲傳送的 數據串作旋積編碼保護,而 CS4 這種通道編碼則是直接將欲傳送的數 據不作任何保護;由通信原理【13】中,我們可以知道旋積編碼是使 用維特比解碼器(Viterbi Decoder),而它的錯誤產生是由於搜尋到 錯誤的解碼路徑,因此使用這一類的通道編碼它的位元錯誤情形會與 CS4 的位元錯誤情形有所不同,因此在後面的實驗中,我們的電腦模 擬實驗以 CS3 與 CS4 這兩種通道編碼為主。

4.2 錯誤更正碼與位元分散器的使用

為了考慮到整體系統的及時需求以及手持設備的計算能力,我們 使用在通訊系統中普遍使用的二位元 BCH Code【14】作為我們的錯 誤更正碼,並且配合外加分散器(Interleaver)幫助我們降低叢集錯 誤(Bursty Error)長度,使得 BCH Code 有更好的效果;並且對每個 壓縮後的資料串都配置 4 個位元的循環冗贅錯誤偵測碼(cyclic

redundant code),幫助我們在後端執行錯誤補償的動作。

圖 4-2 外加傳送機制方塊圖

如圖 4-2 所示,我們將特徵參數抽取並作壓縮後,將壓縮後的資 料串 A 形成一個傳送封包,並將它送至外加傳送機制—首先我們先對 資料串 A 配置 4 個位元的循環冗贅錯誤偵測碼形成資料串 B,其中循 環冗贅錯誤偵測碼用來偵測在通道傳輸過程中,傳送封包是否有錯誤 產生。之後再對資料串 B 依不同傳輸狀況作不同程度的編碼,最後將 編碼後的資料串 C 送至 GPRS 的連結層並將它傳送出去。因為若封包 內有錯誤,則經過特徵參數的反壓縮,錯誤會被擴散到 4 個音框的特 徵參數內,因此對於辨識器的影響將會比較大,因此錯誤控制將顯得 格外重要。

特徵參數的抽取與壓縮

循環冗贅錯誤偵測碼

BCH 編碼與位元分散

GPRS 連結層 8 kHz 語音

資料串 A

資料串 B

資料串 C

外部傳送機

4.2.1 BCH (Bose-Chaudhuri-Hocquenghem) 區塊碼

在這裡我們先來簡單介紹 BCH 區塊碼的錯誤更正原理。BCH 區塊 碼是由線性區塊編碼(linear block code)發展而來,線性區塊編碼 可分二位元與多位元的編碼方式,在我們的系統中,我們是使用二位 元的 BCH Code,因此在之後的討論,我們都只討論二位元的編碼方 式。

一個線性區塊編碼是將 k 個資訊位元(information bit)組成一 個資訊向量 Xm=[xm1 xm2 … xmk],其中 xmi是 0 或 1(如 Xm=[01101..]) 若一個長度為 n 的輸出向量為 Cm=[cm1 cm2 … cmn],其中 cmi也是 0 或 1(如 Cm=[01101..])則每個編碼的過程可以用(式 4-1)表示:

kj mk j

m j

m

mj

x g x g x g

c =

1 1

+

2 2

+ .... +

mod 2

where j=1,2,…,n (式 4-1) 因此我們可以將編碼過程以矩陣相乘表示:C

m

=X

m

G,其中編碼生 成矩陣(generator matrix) G 可以用式(4-2)表示:

⎥ ⎥

⎥ ⎥

⎢ ⎢

⎢ ⎢

=

⎥ ⎥

⎥ ⎥

⎢ ⎢

⎢ ⎢

=

kn k

k

n n

k

g g g

g g

g

g g

g

g g g G

...

...

...

...

2 1

2 22

21

1 12

11 2

1

M M

M

M

(式 4-2)

以長度為 n 的位元向量表示;這也就是說我們將

2

k 個資訊符號 (information symbol)重新分散到擁有

2

n 個資訊點的向量空間 中,其中每一個資訊點都代表一個碼符號(code symbol)這使得每一 個資訊點彼此間的漢明距離(Hamming distance)變大,參閱圖 4-3,

假設 k=2、n=3,且

⎢ ⎤

= ⎡ 1 1 1 0 0

G 1

,則每一個二元資訊符號 [00 01 10 11]

將分別對應成 [000 011 101 110] ,因為增加了一個同位元(parity bit),這使得原先資訊符號間的最小漢明距離為 1 個位元,經編碼 後,碼符號間的最小漢明距離變為 2 個位元。

圖 4-3 二位元線性區塊編碼表示圖

如同上述,對於每一個未經過編碼的二位元資訊符號而言,資訊 符號間的最小漢明距離只有 1 個位元。透過編碼的動作,將原本長度 為 k 的資訊位元向量,以長度為 n 的位元向量表示。而在解碼的過程 中,我們比較每個碼符號與待解碼的位元向量,以擁有最小漢明距離

1

1

編碼 2 2

的碼符號作為我們的答案,並且以它所代表的資訊符號作為解碼的輸 出。因此當有錯誤產生時,只要錯誤的數量不至於讓我們在解碼時誤 認為其它的碼符號,我們都可以順利解出正確的答安,因此若碼符號 間的最小漢明距離為 dmin,此編碼的錯誤更正能力為

( d

min

1 ) / 2

, 也就是我們這最多可以更正

( d

min

1 ) / 2

個錯誤。

在二位元線性區塊編碼中,有一種具有循環位移特性(cyclic shift property)的編碼方式,我們特別將它稱為循環碼(cyclic code)。循環碼的基本原理與一般線性區塊編碼相同,而它比較特別 的 地 方 在 於 它 的 編 碼 生 成 矩 陣 是 由 一 個 生 成 多 項 式 (generator polynomial)產生。若我們將位元向量以多項式表示,如 [1 0 1 1] ->

1

1

3

+ p +

p

, 假 設 一 個 (n=7,k=4) 的 循 環 碼 的 生 成 多 項 式 為

1

)

( p = p

3

+ p

2

+

g

則對於每一個碼符號是由(式 4-3)產生,因此它的 生成矩陣 G 可用(式 4-4)表示:

) ( ) ( )

( p X p g p

C

m

=

m mod 2 (式 4-3)

⎥ ⎥

⎥ ⎥

⎢ ⎢

⎢ ⎢

=

1 0 1 1 0 0 0

0 1 0 1 1 0 0

0 0 1 0 1 1 0

0 0 0 1 0 1 1

G

(式 4-4)

其中 Xm(p)表示為一個以多項式表式的資訊向量:假設 Xm = [100111] 則 Xm(p)為

P

5 +

P

2 +

P

+1。

BCH Code 是屬於循環碼的一個特別的集合,它包含了二位元與 多位元的編碼方式。二位元的 BCH Code 滿足如式(4-5)所示的數學特 性,所示:

1 2 −

=

m

n

mt k n − ≤

1

min

= t 2 + d

(式 4-5) 其中 t 表示為在長度為 n 的碼符碼,至多可以更正的錯誤位元 數。也就是說以 (n=15,k=7,t=2) 的 BCH 區塊碼為例,表示我們將長 度為 7 的資訊符號編碼成長度為 15 的碼符號,而我們的錯誤更正能 力為每 15 個位元向量可以更正 2 個錯誤位元。

另外,因為 BCH 區塊碼具有循環碼的特性,因此在編碼器的硬體 成本與佔用面積都很低。參考圖 4-4,BCH 區塊碼的編碼器的架構只 是簡單的線性回授平移暫存器(linear feedback shift register, LFSR)。其運作的流程是先清除暫存器內部的碼符號,再依照數位電 路的同步時脈(synchronous clock),依序送入資訊位元。編碼器上 一個時脈輸出的同等檢查輸出位元,會被回授回來,乘上編碼器的產 生多項式係數,與留在電路中暫存器的暫存位元相加,取相加結果的 第 2 模數(module 2)向右邊的暫存器平移。如此循環下去,直到編碼

器處理完最後的資訊位元後,電閘會由資訊位元端切換到輸出位元 端,此時的輸出位元將不再回授而是直接被當作同位元(parity bit) 輸出。

產生多項式

g

(

p

) =

g

nk

p

nk +

g

nk1

p

nk1 +...+

g

1

p

+

g

0

圖 4-4 BCH 區塊碼的編碼器架構:線性回授平移暫存器

4.2.2 位元分散器

由上述的討論中我們可以發現 BCH 區塊碼比較適合使用在錯誤 出現較為分散的情況,受限於區塊更正能力(t),若平均叢集錯誤長 度大於 t,則它的更正能力將會變的很差。因此我們必須在我們的系 統中加入分散器(Interleaver)幫助我們分散叢集錯誤,使每個區塊 中的錯誤位元數盡量小於錯誤更正能力(t)。

× × ×

D + +

D D D

g

1

g

2

g

n-k-1

輸出

資訊位元

輸入

串,將數據串輸入數據暫存器中以列(row)的方向進行暫存,在達到 分散深度(interleaving depth)後,再以行(column)的方向將暫存器 中的位元串傳送出去。圖中的暫存器大小為一個 8×5 的矩陣,其中 (10,7) 表示為在原本數據串中的第 10 個位元,經過分散器的分散動 作後,將成為第 7 個被傳送出去的位元。

(1,1) (2,6) (3,11) …… (7,31) (8,36) (9,2) (10,7) (11,12) …… (15,32) (16,37)

(33,5) (34,10) (35,15) …… (39,35) (40,40) 數據暫存器

圖 4-5 矩型外部分散器

當分散器的深度愈深、寬度愈廣,其分散叢集錯誤的能力愈佳,

但相對的系統延遲將會增加。以上述圖 4-5 為例,若我們的矩型分散 器是一個 8×5 的矩陣,原本應該在第一時間輸出的第 1 個資料位元,

它將在第 33 個資料位元進入暫存器後,才能被輸出;同理第 2 個資 料位元將等到第 34 個資料位元進入暫存器後,才會被分散器輸出。

因此在實際系統應用上,分散器的深度與寬度需要經過詳細的規畫。

使用 BCH 區塊碼配合位元分散器,將使得短 BCH 區塊碼(Short BCH Code)可以處理平均叢集錯誤長度大於錯誤更正能力 t 的情況。圖 4-6

輸入

輸出

為有使用短 BCH 區塊碼搭配位元分散器與未搭配位元分散器,在叢集 錯誤長度大於 t 的例子:

(a)有經過位元分散 (b)未經過位元分散 (a)的輸出順序:1-3-5-7-2-4-6-8-F-F-F-F-F-F-F-F (b)的輸出順序:1-2-F-F-3-4-F-F-5-6-F-F-7-8-F-F 其中 F 表示為編碼加入的同位元,_為出現錯誤的情形

圖 4-6 使用位元分散器對叢集錯誤的影響

假設我們使用的是一個(4,2,1)的錯誤更正碼,則以圖 4-6 (a) 的情形而言,雖然在傳送的過程中出現了連續 4 個錯誤,但經過位元 分散器之後,我們成功的將這 4 個錯誤分散在 4 個不同的區塊中,這 使得我們剛好可以利用外加的同位元,將錯誤的位元更正回來;相反 地,若我們在傳送的過程中沒有使用位元分散器,假設跟(a)一樣出 現了連續 4 個錯誤,則儘管我們有外加同位元,我們仍然無法將錯誤 的位元更正回來,這使得我們第 3 及第 4 個資訊位元將有錯誤產生。

因此如果我們能善加利用位元分散器來幫助我們分散叢集錯誤,則就 算使用的 BCH 區塊碼更正能力不強,也能處理一些平均叢集錯誤長度 較長的傳輸錯誤情形。

1 2 F F 3 4 F F 5 6 F F 7 8 F F 1 2 F F

3 4 F F 5 6 F F 7 8 F F

輸入 輸入

輸出 輸出

4.3 語音特徵參數的錯誤補償

圖 4-7 外加接收機制的設計

參考圖 4-7,我們為我們的系統提出了外加接收機制的資料串處 理流程圖。首先由 GPRS 連結層傳入的資料串 C 會先透過循環冗贅錯 誤偵測碼偵測封包是否有錯誤,並將偵測結果、資料串 C 與暫存器中 前後封包的資料作為事後解碼的資訊,在這裡我們透過錯誤補償公式 與 BCH 解碼器重新對接收到的資料串 C 進行解碼,並對解碼後的資料 串 A 進行特徵參數的反壓縮。

錯誤補償與 BCH 解碼器重新解碼

特徵參數的反壓縮 資料串 C

資料串 B

資料串 A BCH 解碼器

封包是否錯誤 封包錯誤偵測

暫存器

4.3.1 傳統的錯誤補償

圖 4-8 傳統錯誤補償法

參考圖 4-8,傳統上最常被使用的錯誤補償法可分成有時間暫存 與無時間暫存兩類,而無時間暫存類別裡最常被使用的為線性外插 法,這是利用相鄰音框內的特徵參數彼此間數值差異並不大,可以直 接用外插法估測錯誤的特徵參數。另一種有時間暫存類別裡最常被使 用的為線性內插法,如同之前所說的關係,相鄰音框內的特徵參數彼 此數值大小類似,因此取錯誤音框鄰近音框的特徵參數值作線性內 插,可以約略估測錯的特徵參數。

然而以上這些方法都只考慮到特徵參數的連續性與特徵參數數 值緩慢變化的特性,對於辨識率得提升幫助有限,因此我們必需重新 思考新的錯誤補償方法。在【15】中,對於使用分割式向量量化法作 為壓縮方法,前人發現對壓縮後的量化符號(quantization symbol) 建立它相鄰符號間的條件機率,有助於估測錯誤特徵參數的數值。

4.3.2 條件機率補償

A(t-1) A(t) A(t+1) A(t+2)

A(t-2) A(t-1) A(t) A(t+1)

後再進行壓縮量化。每個特徵參數向量(長度為 4)經過壓縮後將成為 一個量化符號,很顯然地它仍然保有此特徵參數向量的特性,因此對 於相鄰的量化符號,它們之間仍然存在有少許相關性。結合 BCH 解碼 與量化符號間的錯誤補償,可以使得我們更正確地估計有錯誤封包內 的量化符號。

參閱圖 4-9,以(a)的情況而言,當有錯誤產生於量化符號 Xn,t,

而其前後符號都沒有受到通道錯誤影響,我們可以利用它前後符號與 接收到的位元串進行符號估測。

圖 4-9 錯誤補償法之分類 (對時間=t 而言,灰色代表此量化符號有錯誤)

然而在我們的系統中,因為我們的循環冗贅偵測碼只能偵測第 t 個封包內是否有錯誤位元,封包內共有 13 個量化符號,我們仍然不 知道每一個量化符號 X

n,t

是對或是錯,因此我們必須利用一些其它

a t

Xn,1 Xnb,t Xnc,t+1 Xnd,t+2

(a) 前後量化符號都正確

a t

Xn,1 Xnb,t Xnc,t+1 Xnd,t+2

(b) 前量化符號正確

a t

Xn,1 Xnb,t Xnc,t+1 Xnd,t+2

(c) 後量化符號正確

相關文件