基于DSP嵌入式說(shuō)話人識(shí)別系統(tǒng)的設(shè)計(jì)
1.2 選擇說(shuō)話人
該系統(tǒng)要訓(xùn)練10個(gè)人的語(yǔ)音,每個(gè)人的語(yǔ)音存放在FLASH ROM的不同位置。在訓(xùn)練的開(kāi)始階段,系統(tǒng)需確定當(dāng)前訓(xùn)練者的身份,以便對(duì)訓(xùn)練完成后說(shuō)話者模型參數(shù)存儲(chǔ)位置有準(zhǔn)確的判斷。對(duì)當(dāng)前訓(xùn)練者身份的選擇由系統(tǒng)中的4個(gè)Switch實(shí)現(xiàn)。若把每個(gè)Switch的開(kāi)關(guān)兩種狀態(tài)看成是二進(jìn)制數(shù)的0,1,則最終可形成16種組合,代表16個(gè)人。該系統(tǒng)選取前10個(gè)組合。
1.3 AIC23語(yǔ)音采集
考慮到系統(tǒng)的實(shí)用性,語(yǔ)音的輸入由mic in接口輸入。語(yǔ)音采集若設(shè)為雙聲道,則采集的左右聲道數(shù)據(jù)差別不大,對(duì)識(shí)別沒(méi)有太大的幫助,而且采集到的語(yǔ)音會(huì)占用太大存儲(chǔ)器空間,故采用單聲道采樣;對(duì)于采樣精度要求,TLV320AIC23可實(shí)現(xiàn)8~96 kHz,16 b,20 b,24 b,32 b,的不同采樣,隨著采樣頻率的提高,采樣間隔將相應(yīng)的縮短,要求更大的內(nèi)存空間和更長(zhǎng)的處理時(shí)間,實(shí)驗(yàn)表明,采樣率由16 kHz下降到8 kHz,所造成的識(shí)別率的微乎其微,但是可以節(jié)省50%的動(dòng)態(tài)存儲(chǔ)空間,并可減少大量的運(yùn)算。對(duì)于采樣位數(shù),16 b精度已能滿足該系統(tǒng)要求,故采樣精度設(shè)為8 kHz,16 b采樣。
1.4 數(shù)據(jù)的存儲(chǔ)
由TLV320AIC23獲得的語(yǔ)音信號(hào)的數(shù)據(jù),只有賦值給相應(yīng)的數(shù)組,才能在接下來(lái)的算法中有所應(yīng)用。為此在SDRAM中定義一片數(shù)組存儲(chǔ)區(qū)域。對(duì)于數(shù)組大小及類(lèi)型的選擇基于以下兩點(diǎn):
(1)數(shù)組大小選擇。該系統(tǒng)算法中包含訓(xùn)練和識(shí)別兩個(gè)內(nèi)容。語(yǔ)音信號(hào)的訓(xùn)練需要大量的數(shù)據(jù)才能準(zhǔn)確的提取語(yǔ)音的特征參量。該系統(tǒng)采用8 kHz采樣率的10 s的語(yǔ)音信號(hào),所需的數(shù)組空間大小為80 000個(gè)數(shù)據(jù)單位;語(yǔ)音信號(hào)的識(shí)別要求快速性,該系統(tǒng)采用時(shí)間較短的8 kHz 3 s語(yǔ)音信號(hào),所需數(shù)組空間大小為30 000個(gè)數(shù)據(jù)單位,為了減少數(shù)據(jù)空間,系統(tǒng)設(shè)定為與訓(xùn)練數(shù)組共用前30 000個(gè)數(shù)據(jù)單位的空間。
(2)數(shù)組類(lèi)型為浮點(diǎn)型,由于設(shè)定的采樣格式是16 b采樣,而采樣后數(shù)據(jù)類(lèi)型是Uint32,語(yǔ)音數(shù)據(jù)位于低16位,所以賦值過(guò)程中取低16位數(shù)據(jù)賦值給數(shù)組。
1.5 模型參數(shù)存入與參數(shù)調(diào)出
將模型參數(shù)存入FLASH ROM的目的是保存訓(xùn)練所得的參數(shù),以供識(shí)別時(shí)調(diào)用。訓(xùn)練可能用于多次識(shí)別,或者訓(xùn)練和識(shí)別可能處于不同的時(shí)間地點(diǎn),所以,保存參數(shù)的存儲(chǔ)器選定為具有掉電時(shí)數(shù)據(jù)不丟失特點(diǎn)的FLASH ROM。每個(gè)說(shuō)話者語(yǔ)音參數(shù)代表一個(gè)說(shuō)話者身份,所以每個(gè)說(shuō)話者模型參數(shù)應(yīng)存儲(chǔ)在FLASHROM中一個(gè)確定的位置。為此,該系統(tǒng)在FLASHROM中分配了10塊的區(qū)域,每個(gè)說(shuō)話者模型參數(shù)占有一塊特定的區(qū)域。
在FLASH ROM中存人數(shù)據(jù)格式為32 b無(wú)符號(hào)整數(shù)。而訓(xùn)練得到的是浮點(diǎn)型的數(shù)據(jù)。這就要求在數(shù)據(jù)存入之前將浮點(diǎn)數(shù)轉(zhuǎn)換為32 b無(wú)符號(hào)類(lèi)型的整數(shù),假設(shè)要轉(zhuǎn)換的數(shù)據(jù)為float x[M][N]則轉(zhuǎn)換方法如下:
(1)x[M][N]歸一化;
(2)對(duì)x[M][N]乘以一常數(shù)K得到有符號(hào)整型的數(shù)組y[M][N],即:
y[M][N]=x[M][N]×K (1)
(3)屏蔽第32位符號(hào)位,得到32 b無(wú)符號(hào)類(lèi)型的整數(shù)數(shù)組。方法如下:
z[i][j]=y[i][j]0x7FFFFFFF (2)
(4)將z[i][j]存入FLASH ROM。
通過(guò)統(tǒng)計(jì)實(shí)驗(yàn)數(shù)據(jù)發(fā)現(xiàn)歸一化后數(shù)據(jù)的范圍為10-5~1,故K選擇為108,既可以實(shí)現(xiàn)較大精度的轉(zhuǎn)化,又不會(huì)影響第31位的數(shù)值。轉(zhuǎn)換得到的有符號(hào)整型數(shù)組y[M][N]范圍為-108~108,在存儲(chǔ)器中正數(shù)為原碼表示,負(fù)數(shù)為補(bǔ)碼表示,通過(guò)計(jì)算發(fā)現(xiàn),該范圍的正數(shù)第31位為0,負(fù)數(shù)第31位為1,所以,上述第(3)步,將有符號(hào)數(shù)轉(zhuǎn)換為無(wú)符號(hào)數(shù)后,數(shù)值的正負(fù)改為使用第31位標(biāo)識(shí)。在識(shí)別階段,要將說(shuō)話者的GMM參數(shù)依次從FLASH ROM中讀出,逐個(gè)與待識(shí)別者語(yǔ)音的MFCC參數(shù)比較,求最大似然值。參數(shù)調(diào)出過(guò)程與以上存入過(guò)程相反。
評(píng)論