基于FPGA的說話人識別系統(tǒng),包含原理圖、源代碼
項(xiàng)目實(shí)施背景及可行性分析:
隨著網(wǎng)絡(luò)信息化技術(shù)的迅猛發(fā)展,身份驗(yàn)證的數(shù)字化、隱性化、便捷化顯得越來越重要。語言作為人類的自然屬性之一,說話人語言具有各自的生物特征,這使得通過語音分析進(jìn)行說話人識別(Speaker Recognition, RS)成為可能。人的語音可以非常自然的產(chǎn)生,訓(xùn)練和識別時(shí)并不需要特別的輸入設(shè)備,諸如個(gè)人電腦普遍配置的麥克風(fēng)和到處都有的電話都可以作為輸入設(shè)備,因此采用說話人語音進(jìn)行說話人識別和其他傳統(tǒng)的生物識別技術(shù)相比,具有更為簡便、準(zhǔn)確、經(jīng)濟(jì)及可擴(kuò)展性良好等眾多優(yōu)勢。
說話人識別的研究始于20世紀(jì)60年代,如今在特征提取、模型匹配、環(huán)境適應(yīng)性等方面的研究已臻于成熟,各種算法也趨于穩(wěn)定,說話人識別技術(shù)也正逐步進(jìn)入到實(shí)用化階段。因此,我們根據(jù)已有的特征提取算法基于FPGA工具搭建說話人識別系統(tǒng)是可行的。
項(xiàng)目目前進(jìn)度:
系統(tǒng)具體方案及模型已搭建成功,并采用最小距離算法對系統(tǒng)進(jìn)行說話人確認(rèn)和說話人辨認(rèn)的matlab仿真。 仿真結(jié)果顯示,識別成功。
項(xiàng)目實(shí)施方案:
1 項(xiàng)目基本框圖:
圖1 說話人識別基本框圖
圖1是一個(gè)典型的說話人識別框圖,包括訓(xùn)練和識別兩個(gè)部分,訓(xùn)練又分為訓(xùn)練語音預(yù)處理、特征提取、訓(xùn)練建模、獲取模型參數(shù)庫四個(gè)過程,識別部分分為測試語音預(yù)處理、特征提取、模式匹配、判決輸出四個(gè)過程。識別部分的模式匹配模塊是將測試語音的特征矢量同模型庫里的特征矢量進(jìn)行距離匹配。
2 具體步驟
2.1 預(yù)處理
無論是訓(xùn)練語音信號還是測試語音信號在進(jìn)行特征提取之前都要進(jìn)行預(yù)處理。預(yù)處理包括預(yù)加重、分幀加窗、端點(diǎn)檢測等。
(1)預(yù)加重:正常人的語音頻率范圍一般為40Hz~4000Hz,在求語音信號頻譜時(shí),頻率越高相應(yīng)的頻譜成分越小,高頻部分的頻譜比低頻部分的難求,預(yù)加重的目的是對語音信號的高頻部分(大約800Hz以上)加以提升,是信號的頻譜變得平坦,以便于頻譜分析。預(yù)加重在語音信號數(shù)字化之后進(jìn)行,用一階數(shù)字濾波器來實(shí)現(xiàn),公式為:
(1)
其中,為預(yù)加重系數(shù),它的值接近1,本項(xiàng)目取0.9375。
(2)分幀加窗:語音信號在很短的一個(gè)時(shí)間內(nèi)可以認(rèn)為是平穩(wěn)的,所以我們在對其處理時(shí),先對語音信號分幀,對每幀信號處理就相當(dāng)于對固定特性的持續(xù)語音進(jìn)行處理。一幀語音信號時(shí)長約10~30ms,本系統(tǒng)采樣頻率為22050Hz,所以,幀長N取256,幀移為128。.分幀后,對每幀信號采取加窗處理,為避免吉布斯效應(yīng),本系統(tǒng)采用長度為256的漢明窗,其表達(dá)式為:
(2)
其中表示該窗的中心坐標(biāo)。
(3)端點(diǎn)檢測:端點(diǎn)檢測的目的是從包含語音的一段信號中消除無聲段的噪音和減少處理語音段的時(shí)間,確定出語音的起點(diǎn)以及終點(diǎn)。本系統(tǒng)通過短時(shí)能量的大小來區(qū)分清音段和濁音段。設(shè)第n幀語音信號的短時(shí)能量為,其計(jì)算公式如下:
(3)
清音的能量較小,濁音的能量較大。
在進(jìn)行說話人語音端點(diǎn)檢測時(shí),首先根據(jù)背景噪聲確定一個(gè)短時(shí)能量的門限閾值,由于我們獲取說話人語音信息時(shí)是在安靜環(huán)境下進(jìn)行的的,所以僅根據(jù)此門限來確定語音的起點(diǎn)和終點(diǎn)也是可行的。但為了避免突發(fā)性的瞬時(shí)噪聲(其短時(shí)能量有時(shí)比較大)的干擾,我們在此基礎(chǔ)上,進(jìn)行了進(jìn)一步的限定,即,一旦檢測到某幀的短時(shí)能量超過了門限,我們再繼續(xù)檢測接下來的32(經(jīng)驗(yàn)值)幀,如果在這32幀里有3/4(經(jīng)驗(yàn)值)的幀其短時(shí)能量都超過了門限,我們才確定最初檢測的幀為語音起點(diǎn),否則繼續(xù)下一幀的檢測。實(shí)驗(yàn)仿真證明,這種方法相比于單純通過門限值判斷能更好地確定語音的起始點(diǎn)和終點(diǎn)。
2.2 特征提取、訓(xùn)練、識別
2.2.1 特征提取
語音信號的特征提取是說話人識別的關(guān)鍵問題。對一幀語音信號進(jìn)行某種變換以后產(chǎn)生的相應(yīng)矢量,如線性預(yù)測系數(shù)、LPC倒譜系數(shù)、線譜對參數(shù)、共振峰率、短時(shí)譜等。綜合考慮性能和硬件實(shí)現(xiàn)復(fù)雜度,在本系統(tǒng)中我們選擇語音信號的短時(shí)譜作為其特征參數(shù)。首先我們對分幀加窗后的語音信號進(jìn)行短時(shí)傅里葉變換,得到每幀語音信號頻譜的幅值分布,再根據(jù)這些頻譜幅值分布提取每一幀的特征矢量。
設(shè)加窗后的第n幀語音信號記為,其短時(shí)傅里葉變換表示為:
(4)
在本系統(tǒng),我們用DFT來等價(jià)短時(shí)傅里葉變換。對所求得的幀信號的頻譜幅值分布進(jìn)行分析:每4個(gè)樣本點(diǎn)求一次最大幅值,記錄下對應(yīng)最大幅值的那個(gè)樣本點(diǎn)標(biāo)號,這樣長256的一幀信號可以得到64個(gè)這樣的樣本點(diǎn)。取這64個(gè)樣本點(diǎn)組成的矢量向量為該幀的特征矢量。對輸入語音的所有幀特征矢量求平均,得該輸入語音的幀平均特征矢量,即該語音的特征矢量,記為。
2.2.2 訓(xùn)練建模
在訓(xùn)練建模部分,我們建立識別模型,所謂識別模型,是指用什么模型來描述說話人的語音特征在特征空間的分布。對于說話人識別系統(tǒng),特征參數(shù)被提取出來后,需要用識別模型為說話人建模,并對特征進(jìn)行分類,以確定屬于哪一個(gè)說話人。目前常用的識別模型有,最小距離模型,矢量量化模型,隱馬爾可夫模型,高斯混合模型。綜合考慮下,本系統(tǒng)采用最小距離模型對說話人語音進(jìn)行訓(xùn)練。
本系統(tǒng)實(shí)驗(yàn)時(shí)說話人訓(xùn)練次數(shù)取為10,首先對每次訓(xùn)練的輸入語音求特征矢量(),再對10次訓(xùn)練產(chǎn)生的特征矢量求平均得到的平均特征矢量,將此平均特征矢量作為說話人訓(xùn)練所得的模型特征矢量。
2.2.3 識別
說話人識別包括說話人辨別和說話人確認(rèn),說話人辨別是從多個(gè)說話人語音中辨認(rèn)出某個(gè)人的那一段語音信息,而說話人確認(rèn)是確定某段語音信息是不是某人所說。
我們用測試數(shù)據(jù)與訓(xùn)練數(shù)據(jù)的平均特征矢量之間的均方差作為一種距離度量。在說話人確認(rèn)中,我們設(shè)定一個(gè)判決閾值,如果測試者數(shù)據(jù)與訓(xùn)練數(shù)據(jù)的距離小于此閾值,我們就認(rèn)為確認(rèn)到了原說話人;在說話人辨認(rèn)中,我們把與測試說話人距離最小的說話人作為目標(biāo)說話人。
二、Matlab仿真結(jié)果
我們通過Windows自帶的錄音機(jī)得到聲音數(shù)字信號,采樣頻率為22050Hz,單聲道。說話人數(shù)為2,在訓(xùn)練階段,每個(gè)說話人說10次‘芝麻開門’。
圖2 說話人zx的測試語音‘zx316’的相關(guān)圖
圖3 語音信號‘zx316’第一幀的短時(shí)傅里葉頻譜幅值分布
圖4 語音信號‘bb13’第一幀的短時(shí)傅里葉頻譜幅值分布
測試語音‘zx316’第一幀的特征向量:
1 8 12 16 19 23 27 31 33 38 43 46 50 53 57 64 65 72 73 80 81 88 91 96 97 103 106 111 113 117 122 125 132 136 140 141 147 152 153 160 161 167 169 176 177 183 186 190 193 198 202 208 209 215 220 221 227 231 235 239 241 245 249 256
測試語音‘bb13’第一幀的特征向量:
1 7 12 16 17 21 26 29 34 37 44 47 49 56 58 61 65 70 73 80 81 85 92 93 98 104 105 110 115 117 121 128 130 136 138 143 145 150 154 157 162 166 169 176 177 181 188 191 193 200 202 205 211 213 220 221 228 232 233 239 242 245 249 256
測試語音‘zx316’平均特征向量avtzv1:
2.8056 6.6157 10.5185 14.3009 18.6667 22.5972 26.1296 30.2361 34.6435 38.7407 42.1389 46.4444 50.4907 54.1296 58.6250 62.9583 66.1296 70.7546 74.2824 78.0000 82.1759 86.5324 90.3472 94.4583 98.4352 102.5926 106.3102 110.3009 114.4722 117.9537 122.1065 126.3889 130.5139 134.8333 138.8056 142.4167 146.6852 150.9120 154.2685 158.4537 162.5926 166.6204 170.3241 174.8426 178.8333 182.7963 186.4815 190.8796 194.2222 198.3935 203.2130 206.5648 210.2824 214.7963 218.1852 222.0787 226.6944 231.3287 234.9676 238.6435 242.8565 246.7037 250.3102 253.9491
測試語音‘bb013’平均特征向量avtz2:
2.6385 7.3991 10.3756 14.8357 18.7324 22.0423 26.1455 30.1643 34.5493 38.0423 42.7746 46.9014 49.6432 54.0751 58.5305 62.5493 66.7324 70.8216 75.1502 78.0376 81.9718 86.4695 90.6432 93.7700 99.2347 101.9390 106.6291 110.4883 113.9296 118.6854 122.0329 126.2817 130.5211 134.7418 138.3897 143.1972 146.7371 150.3615 155.1080 158.0376 163.1080 166.3991 170.8920 175.2441 179.2300 181.8075 185.8404 189.8826 194.5915 198.5587 202.5446 206.9061 210.4413 214.3568 218.5915 222.6197 226.2629 230.9108 235.0939 238.4648 241.8732 246.7606 249.9249 253.8216
十次訓(xùn)練后,說話人zx的模型特征向量zxtzv:
2.6470 6.3738 10.4790 14.1162 18.7036 22.6037 26.2209 29.9523 34.3714 38.8523 42.3689 46.4702 50.5910 54.0536 58.4656 62.8491 66.2164 70.5120 74.2916 78.2231 82.2290 86.6381 90.4263 94.4608 98.5462 102.5562 106.3308 110.3999 114.2824 118.1380 122.1408 126.2868 130.6763 134.8471 138.7515 142.6162 146.6641 150.7192 154.2886 158.3545 162.5407 166.5522 170.2916 174.8380 178.7560 182.8976 186.5329 190.8797 194.2625 198.4912 203.1178 206.6151 210.4543 214.7273 218.0488 222.2090 226.7668 230.8650 234.7660 238.3485 242.7473 246.7412 250.4028 253.8851
訓(xùn)練所得說話人zx的確認(rèn)閾值為zxp:
0.0403
十次訓(xùn)練后,說話人bb的模型特征向量bbtzv:
2.5516 7.3047 10.2896 15.0233 18.7163 21.7753 25.8263 30.4965 34.4767 38.2047 42.6746 46.2591 49.9754 54.4766 58.5582 62.7232 66.4625 71.0343 74.8362 78.0749 82.2228 86.1855 90.2439 94.4314 98.5723 102.5504 106.2111 110.1579 114.2530 118.2325 122.2810 126.2972 130.5383 134.6598 138.7651 142.7511 146.8711 150.7495 154.4465 158.1874 162.6890 166.6006 170.9542 174.7016 179.1256 182.1497 186.1302 190.4031 194.2276 198.4698 202.4609 206.8553 210.8231 214.4258 218.5462 222.5539 226.4384 231.2354 235.0389 238.5223 241.7803 246.7281 249.9968 253.8746
訓(xùn)練所得說話人bb的確認(rèn)閾值為bbp:
0.0940
說話人確認(rèn)時(shí):
- 計(jì)算測試語音語音1(zx036)的特征向量avtzv1與說話人zx的模型特征向量zxtzv的距離,為0.0196,小于說話人zx的確認(rèn)閾值為zxp(0.0403),所以確認(rèn)測試語音1為zx所說;計(jì)算測試語音2(bb13)的特征向量avtzv2與說話人zx的模型特征向量zxtzv的距離,為0.2310,大于說話人zx的確認(rèn)閾值為zxp(0.0403),所以確認(rèn)測試語音2不是zx所說。
- 計(jì)算測試語音語音1(zx036)的特征向量avtzv1與說話人bb的模型特征向量bbtzv的距離,為0.1292,大于說話人bb的確認(rèn)閾值為bbp(0.0940),所以確認(rèn)測試語音1不是bb所說;計(jì)算測試語音2(bb13)的特征向量avtzv2與說話人bb的模型特征向量bbtzv的距離,為0.0932,小于說話人bb的確認(rèn)閾值為bbp(0.0940),所以確認(rèn)測試語音2是bb所說。
說話人辨認(rèn):
- 計(jì)算測試語音語音1(zx036)的特征向量avtzv1與說話人zx的模型特征向量zxtzv的距離,為0.0196;計(jì)算測試語音語音1(zx036)的特征向量avtzv1與說話人bb的模型特征向量bbtzv的距離,為0.1292。所以,將測試語音1辨認(rèn)為zx所說。
- 計(jì)算測試語音2(bb13)的特征向量avtzv2與說話人zx的模型特征向量zxtzv的距離,為0.2310;計(jì)算測試語音2(bb13)的特征向量avtzv2與說話人bb的模型特征向量bbtzv的距離,為0.0932。所以,將測試語音1辨認(rèn)為bb所說。
三、 Matlab仿真程序:
1. 說話人確認(rèn)主函數(shù)
%%####=============說話人確認(rèn)主函數(shù)(最小距離)==============####%%
clc;clear;
%============1 流程說明========%
%將測試語音與訓(xùn)練所得模板逐個(gè)進(jìn)行確認(rèn),先確定出要確認(rèn)的說話人的模板的訓(xùn)練判決閾值,
%再求出每個(gè)測試語音的平均特征向量與此說話人模板特征向量的距離,如果距離小于閾值,
%則確認(rèn)此測試語音為該說話人所說,否則不是。
%==========2 符號說明===========%
% N:說話人數(shù);K: 特征矢量的長度;
% TZV:N*K階的訓(xùn)練特征矢量矩陣,第nn行表示第nn個(gè)說話人的模型特征矢量;
% DTH: N長的訓(xùn)練判決門限向量,第nn個(gè)元素代表第nn個(gè)說話人的訓(xùn)練判決門限;
% S1: 說話人1的語音信號;S2:說話人2的語音信號;......;SN: 說話人N的語音信號
%=========3 主程序=======%
%===根據(jù)訓(xùn)練數(shù)據(jù),求出各個(gè)說話人的訓(xùn)練特征矢量和訓(xùn)練判決門限===%
N=2;
TIMES=10;%訓(xùn)練次數(shù)為10
load A1 A1; %A1為說話人zx的十次訓(xùn)練語音組成的cell
load A2 A2; %A2為說話人bb的十次訓(xùn)練語音組成的cell
%.......%
[mtzh1,p1]=xunlian(A1,TIMES);%調(diào)用訓(xùn)練子函數(shù),得說話人的模型特征矢量和模型判決門限
TZV(1,:)=mtzh1;
DTH(1)=p1;
[mtzh2,p2]=xunlian(A2,TIMES);
TZV(2,:)=mtzh2;
DTH(2)=p2;
%.......%
K=length(mtzh1);
%===說話人說話,輪流進(jìn)行確認(rèn)===%
%==確認(rèn)說話人1==%
nn=1;
S1=wavread(f:speakerzx3zx316);%%說話人x說話后語音信息被存儲,用函數(shù)讀出該語音信號
decisionf(S1,TZV,DTH,nn,K) %確認(rèn)說話人x是否為說話人1,是輸出‘yes’,不是輸出‘no’
S2=wavread(f:speakerbb1bb13);%%說話人y說話后語音信息被存儲,用函數(shù)讀出該語音信號
decisionf(S2,TZV,DTH,nn,K) %確認(rèn)說話人y是否為說話人1,是輸出‘yes’,不是輸出‘no’
%......%
%==確認(rèn)說話人2==%
nn=2;
S1=wavread(f:speakerzx3zx316);%%說話人x說話后語音信息被存儲,用函數(shù)讀出該語音信號
decisionf(S1,TZV,DTH,nn,K) %確認(rèn)說話人x是否為說話人2,是輸出‘yes’,不是輸出‘no’
S2=wavread(f:speakerbb1bb13);%%說話人2說話后語音信息被存儲,用函數(shù)讀出該語音信號
decisionf(S2,TZV,DTH,nn,K) %確認(rèn)說話人y是否為說話人2,是輸出‘yes’,不是輸出‘no’
%......%
%=====......=====%
2.說話人辨認(rèn)主函數(shù)
%%####=============說話人辨別主函數(shù)(最小距離)==============####%%
clc;clear;
%============1 流程說明========%
%對要進(jìn)行辨認(rèn)的測試說話人提取平均特征向量,和訓(xùn)練庫中的每個(gè)模板特征矢量進(jìn)行距離比較,我們把與測試說話人具有最小距離的說話人作為目標(biāo)說話人。
%==========2 符號說明===========%
% N:說話人數(shù);K: 特征矢量的長度;
% TZV:N*K階的訓(xùn)練特征矢量矩陣,第nn行表示第nn個(gè)說話人的模型特征矢量;
% DTH: N長的訓(xùn)練判決門限向量,第nn個(gè)元素代表第nn個(gè)說話人的訓(xùn)練判決門限;
% S1: 說話人1的語音信號;S2:說話人2的語音信號;......;SN: 說話人N的語音信號
%=========3 主程序=======%
%===根據(jù)訓(xùn)練數(shù)據(jù),求出各個(gè)說話人的訓(xùn)練特征矢量和訓(xùn)練判決門限===%
N=2;
load A1 A1;
load A2 A2;
TIMES=10;%訓(xùn)練次數(shù)為10
[mtzh1,p1]=xunlian(A1,TIMES);%調(diào)用訓(xùn)練函數(shù),得說話人的模型特征矢量和模型判決門限
TZV(1,:)=mtzh1;
[mtzh2,p2]=xunlian(A2,TIMES);
TZV(2,:)=mtzh2;
K=length(mtzh1);
%===說話人說話,進(jìn)行辨認(rèn)===%
%==辨認(rèn)說話人1==%
S1=wavread(f:speakerzx3zx316);%%說話人1說話后語音信息被存儲,用函數(shù)讀出該語音信號
identify(S1,TZV,N,K)
%==辨認(rèn)說話人2==%
S2=wavread(f:speakerbb1bb13);%%說話人2說話后語音信息被存儲,用函數(shù)讀出該語音信號
identify(S2,TZV,N,K)
3 .子函數(shù)1——輸入訓(xùn)練語音數(shù)據(jù),輸出訓(xùn)練所得模式訓(xùn)練特征矢量及判決閾值
function [mtzh,p]=xunlian(A,TIMES)
%===輸入為訓(xùn)練次數(shù)TIMES和每次的訓(xùn)練語音信號的合集A;輸出為訓(xùn)練所得模型特征矢量及模型判決門限===%
for tt=1:TIMES %10指每個(gè)說話人的訓(xùn)練次數(shù)
avertzvector(tt,:)=tzhvf(A{tt});
end
mtzh=sum(avertzvector)/TIMES;
%%==========確定判決門限dehood1=======%%
for ts=1:TIMES
chavec=mtzh-avertzvector(ts,:);
wucha(ts)=chavec*chavec/length(mtzh);
end
p=max(wucha);
4. 子函數(shù)2——特征特取子函數(shù)
輸入語音信號,輸出特征矢量
%===提取輸入語音信息的特征矢量===%
function avertzvector=tzhvf(x1)
lent1=length(x1);
%%=======預(yù)加重更新x1=======%%
u=0.9375;
for num=2:lent1
x1(num-1)=x1(num)-u*x1(num-1);
end
%%=======將語音信號進(jìn)行分幀得y1,加窗得winy1=======%%
framelen=256;%幀長
shift=128;%幀移
numframe=ceil(lent1/shift)-1;%%幀數(shù)
for numw=1:framelen
hw(numw)=0.54-0.46*cos(2*pi*(numw-1)/(framelen-1));%%漢明窗
end
for num1=1:numframe
a=(num1-1)*framelen/2+1;
b=(num1-1)*framelen/2+framelen;
if b=lent1
y1(num1,:)=x1(a:b);
else
y1(num1,:)=[(x1(a:lent1)),zeros(1,b-lent1)];
end
winy1(num1,:)=y1(num1,:).*hw;%%分幀加窗后的數(shù)據(jù)
end
%%=========求信號的短時(shí)能量e1==========%%
e1=sum(winy1.^2,2);%%sum(x,2)表示將矩陣x橫向相加,得到每行的和,為一個(gè)列向量
%%========利用短時(shí)能量進(jìn)行端點(diǎn)檢測得到起始幀號startnum和結(jié)束幀號endnum==========%%
menxian=9e-04;
duliang=32;
for startnum=1:length(e1)
if e1(startnum)>menxian
indc=find(e1(startnum+1:startnum+duliang)>menxian);
if length(indc)/duliang>=3/4
break;
end
end
end
for endnum=length(e1):-1:1
if e1(endnum)>menxian
indc=find(e1(endnum-duliang:endnum-1)>menxian);
if length(indc)/duliang>=3/4
break;
end
end
end
data1=winy1(startnum:endnum,:);%%data為去除無聲段的語音數(shù)據(jù)(分幀加窗后的)
%%===========短時(shí)傅里葉變換=============%%
newnumframe=endnum-startnum+1;
for num2=1:newnumframe
STFTdata1(num2,:)=abs(fft(data1(num2,:),framelen));
%SFTwindata1(num2,:)=abs(windata1(num2,:)*exp(-1j*2*pi/framelen*(0:255)*(0:255)));
end
%%=======對每幀求特征向量=========%%
jiange=4;%每四個(gè)點(diǎn)找一次頻譜幅度最大值
for k=1:newnumframe
for kk=0:framelen/jiange-1
aa=jiange*kk+1;
bb=jiange*kk+jiange;
[maximum,ind]=max(STFTdata1(k,aa:bb));
tzvector(k,kk+1)=ind+jiange*kk;%%特征向量
end
end
avertzvector=sum(tzvector)/newnumframe;%語音幀平均特征矢量
5. 子函數(shù)3——說話人確認(rèn)子函數(shù)
輸入測試語音,輸出確認(rèn)結(jié)果
function decisionf(S,TZV,DTH,nn,K)
%判決子函數(shù),輸入說話人語音S,模板特征向量矩陣TZV,模板判決門限D(zhuǎn)TH,說話人數(shù)N,特征向量長度K;輸出判決結(jié)果
avtzvS=tzhvf(S);%%調(diào)用子函數(shù)tzhvf提取該語音信息的特征矢量
if (TZV(nn,:)-avtzvS)*(TZV(nn,:)-avtzvS)/K=DTH(nn)
disp(Yes.);
else
disp(No.);
end
6.子函數(shù)4——說話人辨認(rèn)子函數(shù)
輸入測試語音,輸出辨認(rèn)結(jié)果
function identify(S,TZV,N,K)
%判決子函數(shù),輸入說話人語音S,模板特征向量矩陣TZV,模板判決門限D(zhuǎn)TH,說話人數(shù)N,特征向量長度K;輸出判決結(jié)果
avtzvS=tzhvf(S);%%調(diào)用子函數(shù)tzhvf提取該語音信息的特征矢量
for nn=1:N
distance(nn)=(TZV(nn,:)-avtzvS)*(TZV(nn,:)-avtzvS)/K;
end
[~,snum]=min(distance);
fprintf(The speaker is %dn,snum);
評論