本發(fā)明涉及語(yǔ)音信號(hào)處理技術(shù)領(lǐng)域,特別是涉及一種嵌入式語(yǔ)音識(shí)別系統(tǒng)及方法。
背景技術(shù):
語(yǔ)音端點(diǎn)檢測(cè)是語(yǔ)音識(shí)別中的關(guān)鍵技術(shù)之一。語(yǔ)音端點(diǎn)檢測(cè)是指在連續(xù)聲音信號(hào)中找出語(yǔ)音部分的起始點(diǎn)和終止點(diǎn)。端點(diǎn)檢測(cè)準(zhǔn)確與否,會(huì)直接影響到語(yǔ)音識(shí)別系統(tǒng)的性能。
一般的語(yǔ)音識(shí)別系統(tǒng)都是將采集的語(yǔ)音信號(hào)存儲(chǔ)起來,當(dāng)一定時(shí)間之后,再通過歸一化計(jì)算,找出存儲(chǔ)的語(yǔ)音信號(hào)中是否有有效的語(yǔ)音信號(hào),然后再將有效的語(yǔ)音信號(hào)進(jìn)行特征提取及后續(xù)語(yǔ)音識(shí)別模塊。上述方法一方面需要較大的存儲(chǔ)空間,另一方面不利于信號(hào)的采集,有可能在一段時(shí)間內(nèi)存儲(chǔ)的語(yǔ)音信號(hào)中根本就沒有有效的語(yǔ)音信號(hào)。而在采集結(jié)束后,使用者又下達(dá)語(yǔ)音命令,很容易導(dǎo)致命令的丟失,不利于語(yǔ)音識(shí)別的實(shí)時(shí)性。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述語(yǔ)音識(shí)別系統(tǒng)的實(shí)時(shí)性差,占用較大存儲(chǔ)空間的問題,本發(fā)明的目的在于提供一種嵌入式語(yǔ)音識(shí)別系統(tǒng)及方法,語(yǔ)音信號(hào)的存儲(chǔ)空間占用小,且實(shí)時(shí)性高。
為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
一種嵌入式語(yǔ)音識(shí)別系統(tǒng),包括:
語(yǔ)音采集模塊,用于獲取語(yǔ)音信號(hào),并對(duì)獲取的所述語(yǔ)音信號(hào)進(jìn)行分幀處理;
第一存儲(chǔ)模塊,用于存儲(chǔ)所述語(yǔ)音信號(hào)的各個(gè)幀對(duì)應(yīng)的梅爾頻率倒譜系數(shù);
第二存儲(chǔ)模塊,用于存儲(chǔ)所述語(yǔ)音信號(hào)中包含的語(yǔ)音幀;
語(yǔ)音處理模塊,包括預(yù)處理子模塊、第一端點(diǎn)特征檢測(cè)子模塊、第一數(shù)據(jù)處理子模塊和第二數(shù)據(jù)處理子模塊;所述預(yù)處理子模塊用于對(duì)所述語(yǔ)音信號(hào)的當(dāng)前輸入幀進(jìn)行預(yù)處理;所述第一端點(diǎn)特征檢測(cè)子模塊用于計(jì)算所述當(dāng)前輸入幀的梅爾頻率倒譜系數(shù)和短時(shí)能量值,并將所述當(dāng)前輸入幀的梅爾頻率倒譜系數(shù)存儲(chǔ)在第一存儲(chǔ)模塊中;
所述第一數(shù)據(jù)處理子模塊用于根據(jù)所述當(dāng)前輸入幀的短時(shí)能量值判斷當(dāng)前輸入幀是否為語(yǔ)音幀;當(dāng)所述當(dāng)前輸入幀為語(yǔ)音幀時(shí),將所述當(dāng)前輸入幀對(duì)應(yīng)的梅爾頻率倒譜系數(shù)存儲(chǔ)至第二存儲(chǔ)模塊中;所述第二數(shù)據(jù)處理子模塊用于當(dāng)所述語(yǔ)音信號(hào)結(jié)束時(shí),根據(jù)所述第二存儲(chǔ)模塊中的語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別。
在其中一個(gè)實(shí)施例中,所述系統(tǒng)還包括先入先出陣列;
所述第一數(shù)據(jù)處理子模塊還用于當(dāng)所述當(dāng)前輸入幀的短時(shí)能量值大于或等于第一能量閾值時(shí),輸出第一狀態(tài)信號(hào)至所述先入先出陣列中;當(dāng)所述當(dāng)前輸入幀的短時(shí)能量值小于所述第一能量閾值時(shí),輸出第二狀態(tài)信號(hào)至所述先入先出陣列中;并當(dāng)所述先入先出陣列中所述第一狀態(tài)信號(hào)的個(gè)數(shù)大于或等于第一預(yù)設(shè)個(gè)數(shù)時(shí),則判定當(dāng)前輸入幀為語(yǔ)音幀。
在其中一個(gè)實(shí)施例中,所述第一數(shù)據(jù)處理子模塊還用于當(dāng)下一輸入幀的短時(shí)能量值小于或等于第二能量閾值時(shí),輸出第三狀態(tài)信號(hào)至所述先入先出陣列中;當(dāng)所述下一輸入幀的短時(shí)能量值大于所述第二能量閾值時(shí),輸出第四狀態(tài)信號(hào)至所述先入先出陣列中;當(dāng)所述先入先出陣列中所述第三狀態(tài)信號(hào)的個(gè)數(shù)大于或等于第二預(yù)設(shè)個(gè)數(shù)時(shí),則判定當(dāng)前輸入幀為非語(yǔ)音幀。
在其中一個(gè)實(shí)施例中,所述語(yǔ)音處理模塊還包括第二端點(diǎn)特征檢測(cè)子模塊和第三數(shù)據(jù)處理子模塊,所述第二端點(diǎn)特征檢測(cè)子模塊用于根據(jù)連續(xù)輸出的非語(yǔ)音幀的幀長(zhǎng)獲得非語(yǔ)音幀的持續(xù)時(shí)間;
所述第三數(shù)據(jù)處理子模塊用于判斷所述非語(yǔ)音幀的持續(xù)時(shí)間是否大于或等于第一預(yù)設(shè)時(shí)間;當(dāng)所述非語(yǔ)音幀的持續(xù)時(shí)間大于或等于第一預(yù)設(shè)時(shí)間時(shí),則判定所述語(yǔ)音信號(hào)結(jié)束,并將所述語(yǔ)音信號(hào)結(jié)束的信號(hào)傳送至所述第二數(shù)據(jù)處理子模塊和所述語(yǔ)音采集模塊。
在其中一個(gè)實(shí)施例中,所述語(yǔ)音處理模塊還包括運(yùn)算子模塊和第四數(shù)據(jù)處理子模塊;
所述運(yùn)算子模塊用于當(dāng)所述語(yǔ)音信號(hào)結(jié)束后,根據(jù)所述第二存儲(chǔ)模塊中一個(gè)或多個(gè)語(yǔ)音幀的幀長(zhǎng),獲得所述語(yǔ)音信號(hào)的語(yǔ)音段的持續(xù)時(shí)間;
第四數(shù)據(jù)處理子模塊用于判斷所述語(yǔ)音段的持續(xù)時(shí)間是否大于或等于第二預(yù)設(shè)時(shí)間;當(dāng)所述語(yǔ)音段的持續(xù)時(shí)間大于或等于第二預(yù)設(shè)時(shí)間時(shí),則調(diào)用所述第二數(shù)據(jù)處理子模塊進(jìn)行語(yǔ)音特征識(shí)別;當(dāng)所述語(yǔ)音段的持續(xù)時(shí)間小于所述第二預(yù)設(shè)時(shí)間時(shí),則清空所述第一存儲(chǔ)模塊和所述第二存儲(chǔ)模塊。
在其中一個(gè)實(shí)施例中,所述語(yǔ)音處理模塊還包括判斷子模塊,用于判斷所述第二存儲(chǔ)模塊是否滿載;
所述第二數(shù)據(jù)處理子模塊還用于當(dāng)所述第二存儲(chǔ)模塊滿載時(shí),根據(jù)所述第二存儲(chǔ)模塊中的語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別,并停止獲取語(yǔ)音信號(hào)。
在其中一個(gè)實(shí)施例中,所述系統(tǒng)還包括語(yǔ)音識(shí)別模塊;
所述第二數(shù)據(jù)處理子模塊還包括歸一化計(jì)算單元和差分計(jì)算單元;
所述歸一化單元用于對(duì)所述第二存儲(chǔ)模塊中的一個(gè)或多個(gè)語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行歸一化處理,獲得歸一化參數(shù);
所述差分計(jì)算單元用于根據(jù)所述第二存儲(chǔ)模塊中的一個(gè)或多個(gè)語(yǔ)音幀的梅爾頻率倒譜系數(shù)計(jì)算獲得一階差分參數(shù)和二階差分參數(shù);
所述語(yǔ)音識(shí)別模塊用于根據(jù)所述歸一化參數(shù)、所述一階差分參數(shù)和所述二階差分參數(shù)進(jìn)行語(yǔ)音特征識(shí)別。
此外,本發(fā)明還提供了一種嵌入式語(yǔ)音識(shí)別方法,包括如下步驟:
獲取語(yǔ)音信號(hào),并對(duì)獲取的所述語(yǔ)音信號(hào)進(jìn)行分幀處理;
對(duì)所述語(yǔ)音信號(hào)的當(dāng)前輸入幀進(jìn)行預(yù)處理;
計(jì)算所述當(dāng)前輸入幀的梅爾頻率倒譜系數(shù),并將所述當(dāng)前輸入幀的梅爾頻率倒譜系數(shù)存儲(chǔ)在第一存儲(chǔ)模塊中;
計(jì)算所述當(dāng)前輸入幀的短時(shí)能量值;
根據(jù)所述當(dāng)前輸入幀的短時(shí)能量值判斷當(dāng)前輸入幀是否為語(yǔ)音幀;
當(dāng)所述當(dāng)前輸入幀為語(yǔ)音幀時(shí),將所述當(dāng)前輸入幀對(duì)應(yīng)的梅爾頻率倒譜系數(shù)存儲(chǔ)至第二存儲(chǔ)模塊中;
當(dāng)所述語(yǔ)音信號(hào)結(jié)束時(shí),根據(jù)所述第二存儲(chǔ)模塊中的語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別。
在其中一個(gè)實(shí)施例中,根據(jù)所述當(dāng)前輸入幀的短時(shí)能量值判斷當(dāng)前輸入幀是否為語(yǔ)音幀的步驟包括:
判斷當(dāng)前輸入幀的短時(shí)能量值是否大于或等于第一能量閾值;
當(dāng)所述當(dāng)前輸入幀的短時(shí)能量值大于或等于第一能量閾值時(shí),輸出第一狀態(tài)信號(hào)至先入先出陣列中;
當(dāng)所述當(dāng)前輸入幀的短時(shí)能量值小于所述第一能量閾值時(shí),輸出第二狀態(tài)信號(hào)至所述先入先出陣列中;
當(dāng)所述先入先出陣列中所述第一狀態(tài)信號(hào)的個(gè)數(shù)大于或等于第一預(yù)設(shè)個(gè)數(shù)時(shí),則判定當(dāng)前輸入幀為語(yǔ)音幀。
在其中一個(gè)實(shí)施例中,所述方法還包括如下步驟:
判斷所述當(dāng)前輸入幀的短時(shí)能量值小于或等于第二能量閾值;
當(dāng)所述當(dāng)前輸入幀的短時(shí)能量值小于或等于第二能量閾值時(shí),輸出第三狀態(tài)信號(hào)至所述先入先出陣列中;
當(dāng)所述當(dāng)前輸入幀的短時(shí)能量值大于所述第二能量閾值時(shí),輸出第四狀態(tài)信號(hào)至所述先入先出陣列中;
當(dāng)所述先入先出陣列中所述第三狀態(tài)信號(hào)的個(gè)數(shù)大于或等于第二預(yù)設(shè)個(gè)數(shù)時(shí),則判定當(dāng)前輸入幀為非語(yǔ)音幀。
在其中一個(gè)實(shí)施例中,所述方法還包括如下步驟:
根據(jù)連續(xù)輸出的非語(yǔ)音幀的幀長(zhǎng)獲得非語(yǔ)音幀的持續(xù)時(shí)間;
判斷所述非語(yǔ)音幀的持續(xù)時(shí)間是否大于或等于第一預(yù)設(shè)時(shí)間;
當(dāng)所述非語(yǔ)音幀的持續(xù)時(shí)間大于或等于第一預(yù)設(shè)時(shí)間時(shí),則判定所述語(yǔ)音信號(hào)結(jié)束,根據(jù)所述第二存儲(chǔ)模塊中的語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別,并重新獲取下一個(gè)語(yǔ)音信號(hào)。
在其中一個(gè)實(shí)施例中,當(dāng)判定所述語(yǔ)音信號(hào)結(jié)束后,所述方法還包括如下步驟:
根據(jù)所述第二存儲(chǔ)模塊中一個(gè)或多個(gè)語(yǔ)音幀的幀長(zhǎng),獲得所述語(yǔ)音信號(hào)的語(yǔ)音段的持續(xù)時(shí)間;
判斷所述語(yǔ)音段的持續(xù)時(shí)間是否大于或等于第二預(yù)設(shè)時(shí)間;
當(dāng)所述語(yǔ)音段的持續(xù)時(shí)間大于或等于第二預(yù)設(shè)時(shí)間時(shí),則根據(jù)所述第二存儲(chǔ)模塊中的語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別;
當(dāng)所述語(yǔ)音段的持續(xù)時(shí)間小于所述第二預(yù)設(shè)時(shí)間時(shí),則清空所述第一存儲(chǔ)模塊和所述第二存儲(chǔ)模塊。
在其中一個(gè)實(shí)施例中,所述方法還包括如下步驟:
判斷所述第二存儲(chǔ)模塊是否滿載;
當(dāng)所述第二存儲(chǔ)模塊滿載時(shí),根據(jù)所述第二存儲(chǔ)模塊中的語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別,并停止獲取語(yǔ)音信號(hào)。
在其中一個(gè)實(shí)施例中,對(duì)獲取的所述語(yǔ)音信號(hào)進(jìn)行特征識(shí)別的步驟包括:
對(duì)所述第二存儲(chǔ)模塊中的一個(gè)或多個(gè)語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行歸一化處理,獲得歸一化參數(shù);
根據(jù)所述第二存儲(chǔ)模塊中的一個(gè)或多個(gè)語(yǔ)音幀的梅爾頻率倒譜系數(shù)計(jì)算獲得一階差分參數(shù)和二階差分參數(shù)。
本發(fā)明的有益效果是:
本發(fā)明的嵌入式語(yǔ)音識(shí)別系統(tǒng)及方法,通過將語(yǔ)音信號(hào)的各個(gè)幀對(duì)應(yīng)的梅爾頻率倒譜系數(shù)存儲(chǔ)在第一存儲(chǔ)模塊,當(dāng)判定當(dāng)前輸入幀為語(yǔ)音幀時(shí),再將該語(yǔ)音幀對(duì)應(yīng)的梅爾頻率倒譜系數(shù)復(fù)制到第二存儲(chǔ)模塊中,這樣可以保證第二存儲(chǔ)模塊中存儲(chǔ)的信號(hào)均為語(yǔ)音幀,從而可以優(yōu)化第二存儲(chǔ)模塊的存儲(chǔ)資源,節(jié)省第二存儲(chǔ)模塊的存儲(chǔ)空間;同時(shí),根據(jù)第二存儲(chǔ)模塊中的語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別,可以保證語(yǔ)音特征識(shí)別的實(shí)時(shí)性,避免了語(yǔ)音信號(hào)丟失的情況,進(jìn)一步保證了語(yǔ)音信號(hào)識(shí)別的可靠性。
附圖說明
圖1為本發(fā)明的嵌入式語(yǔ)音識(shí)別系統(tǒng)一實(shí)施例的結(jié)構(gòu)框圖;
圖2為本發(fā)明的嵌入式語(yǔ)音識(shí)別系統(tǒng)另一實(shí)施例的結(jié)構(gòu)框圖;
圖3為本發(fā)明的嵌入式語(yǔ)音識(shí)別方法一實(shí)施例的流程圖;
圖4為本發(fā)明的嵌入式語(yǔ)音識(shí)別方法中判斷語(yǔ)音與非語(yǔ)音一實(shí)施例的流程圖;
圖5為本發(fā)明的嵌入式語(yǔ)音識(shí)別方法另一實(shí)施例的流程圖。
具體實(shí)施方式
為了使本發(fā)明的技術(shù)方案更加清楚,以下結(jié)合附圖,對(duì)本發(fā)明的嵌入式語(yǔ)音識(shí)別系統(tǒng)及方法作進(jìn)一步詳細(xì)的說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明并不用于限定本發(fā)明。需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。
如圖1所示,本發(fā)明一實(shí)施例的嵌入式語(yǔ)音識(shí)別系統(tǒng)包括語(yǔ)音采集模塊100、語(yǔ)音處理模塊200、第一存儲(chǔ)模塊300、第二存儲(chǔ)模塊400和語(yǔ)音識(shí)別模塊500。其中,語(yǔ)音采集模塊100用于獲取語(yǔ)音信號(hào),并對(duì)獲取的語(yǔ)音信號(hào)進(jìn)行分幀處理。本實(shí)施例中,語(yǔ)音采集模塊100可以是麥克風(fēng)或語(yǔ)音采集芯片等語(yǔ)音信號(hào)拾取裝置。同時(shí),根據(jù)語(yǔ)音的短時(shí)平穩(wěn)特性,語(yǔ)音可以以幀為單位進(jìn)行處理,語(yǔ)音采集模塊100可以選取20毫秒~30毫秒作為語(yǔ)音分幀的幀長(zhǎng),10毫秒~20毫秒作為幀疊,將獲取的語(yǔ)音信號(hào)分隔為多個(gè)幀。
第一存儲(chǔ)模塊300用于存儲(chǔ)語(yǔ)音信號(hào)的各個(gè)幀對(duì)應(yīng)的梅爾頻率倒譜系數(shù),其中,語(yǔ)音信號(hào)的多個(gè)幀可以分為語(yǔ)音幀和非語(yǔ)音幀(靜音幀等等)。本實(shí)施例中,第一存儲(chǔ)模塊300采用臨時(shí)存儲(chǔ)器,如緩存等等。進(jìn)一步地,該第一存儲(chǔ)模塊300采用的是FIFO(First In First Out,先進(jìn)先出)結(jié)構(gòu)的臨時(shí)存儲(chǔ)器。第二存儲(chǔ)模塊400用于存儲(chǔ)語(yǔ)音信號(hào)中包含的語(yǔ)音幀,第二存儲(chǔ)模塊400可以為RAM(Ramdom Access Memory,隨機(jī)存取存儲(chǔ)器)或Flash等等。
如圖2所示,語(yǔ)音處理模塊200可以包括預(yù)處理子模塊210、第一端點(diǎn)特征檢測(cè)子模塊220、第一數(shù)據(jù)處理子模塊230和第二數(shù)據(jù)處理子模塊240。其中,預(yù)處理子模塊210用于對(duì)語(yǔ)音信號(hào)的當(dāng)前輸入幀進(jìn)行預(yù)處理,具體的,預(yù)處理子模塊210可以對(duì)獲取的語(yǔ)音信號(hào)進(jìn)行去直流、A/D變換以及預(yù)加重處理。去直流處理及對(duì)語(yǔ)音信號(hào)進(jìn)行預(yù)濾波的過程,在模擬語(yǔ)音信號(hào)進(jìn)行離散化采集前,通過低通濾波器等濾除語(yǔ)音信號(hào)中包含的直流成分。A/D變換即將獲取的模擬語(yǔ)音信號(hào)轉(zhuǎn)換為數(shù)字語(yǔ)音信號(hào)。預(yù)加重處理即通過一個(gè)一階激勵(lì)響應(yīng)高通濾波器,使語(yǔ)音信號(hào)的頻譜變得平坦,不易受到有限字長(zhǎng)效應(yīng)的影響。
第一端點(diǎn)特征檢測(cè)子模塊220用于計(jì)算當(dāng)前輸入幀的梅爾頻率倒譜系數(shù)(MFCC,Mel Frequency Cepstrum Coefficient)和短時(shí)能量值,并將當(dāng)前輸入幀的梅爾頻率倒譜系數(shù)存儲(chǔ)在第一存儲(chǔ)模塊300中。其中,梅爾頻率倒譜系數(shù)的計(jì)算過程如下:第一端點(diǎn)特征檢測(cè)子模塊220對(duì)預(yù)加重處理后的當(dāng)前輸入幀進(jìn)行加窗運(yùn)算、時(shí)頻轉(zhuǎn)換、梅爾濾波器組濾波、對(duì)數(shù)運(yùn)算、離散余弦變換等一系列的處理后可以獲得梅爾頻率倒譜系數(shù)。本實(shí)施例中,可以采用哈明窗對(duì)當(dāng)前輸入幀進(jìn)行加窗處理,以減小吉布斯效應(yīng)的影響。之后,對(duì)加窗后的當(dāng)前輸入幀進(jìn)行快速傅里葉變換,將時(shí)域信號(hào)轉(zhuǎn)換為信號(hào)的功率譜。然后,可以采用一組梅爾頻標(biāo)上線性分布的濾波器對(duì)信號(hào)的功率譜進(jìn)行濾波。然后,對(duì)上述梅爾濾波器輸出的結(jié)果求對(duì)數(shù),從而得到近似于同態(tài)變換的結(jié)果。最后,通過離散余弦變換去除各維信號(hào)之間的相關(guān)性,如可以取離散余弦變換后的第2個(gè)到第13個(gè)系數(shù)作為梅爾頻率倒譜系數(shù)。
其中,短時(shí)能量值表示當(dāng)前輸入幀的振幅的大小,因此,可以通過短時(shí)能量值來過濾掉語(yǔ)音信號(hào)中的噪聲。具體地,第一數(shù)據(jù)處理子模塊230用于根據(jù)當(dāng)前輸入幀的短時(shí)能量值判斷當(dāng)前輸入幀是否為語(yǔ)音幀;若當(dāng)前輸入幀為語(yǔ)音幀時(shí),將當(dāng)前輸入幀對(duì)應(yīng)的梅爾頻率倒譜系數(shù)存儲(chǔ)至第二存儲(chǔ)模塊400中。具體地,若當(dāng)前輸入幀為語(yǔ)音幀時(shí),則將當(dāng)前輸入幀對(duì)應(yīng)的梅爾頻率倒譜系數(shù)從第一存儲(chǔ)模塊300中復(fù)制到第二存儲(chǔ)模塊400中,從而使得語(yǔ)音幀保存至第二存儲(chǔ)模塊400中。若當(dāng)前輸入幀為非語(yǔ)音幀時(shí),則不會(huì)將當(dāng)前輸入幀對(duì)應(yīng)的梅爾頻率倒譜系數(shù)復(fù)制到第二存儲(chǔ)模塊400中。這樣,第二存儲(chǔ)模塊400僅用于存儲(chǔ)語(yǔ)音幀信號(hào),提高了第二存儲(chǔ)模塊400的存儲(chǔ)空間利用率,優(yōu)化了第二存儲(chǔ)模塊400的存儲(chǔ)資源。進(jìn)一步地,若當(dāng)前輸入幀為非語(yǔ)音幀時(shí),第一數(shù)據(jù)處理子模塊230可以直接將當(dāng)前輸入幀對(duì)應(yīng)的梅爾頻率倒譜系數(shù)從第一存儲(chǔ)模塊300中刪除。
第二數(shù)據(jù)處理子模塊240用于當(dāng)上述語(yǔ)音信號(hào)結(jié)束后,根據(jù)第二存儲(chǔ)模塊400中的語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別,獲得該語(yǔ)音信號(hào)的特征參數(shù),以便于進(jìn)行語(yǔ)音信號(hào)的識(shí)別等操作。這樣保證語(yǔ)音特征識(shí)別的實(shí)時(shí)性,避免了語(yǔ)音信號(hào)丟失的情況,進(jìn)一步保證了語(yǔ)音信號(hào)識(shí)別的可靠性。
在一個(gè)實(shí)施例中,上述系統(tǒng)還包括先入先出(FIFO,F(xiàn)irst In First Out)陣列,該先入先出陣列可以具有N(N≥1,N為正整數(shù))幀存儲(chǔ)空間。第一數(shù)據(jù)處理子模塊230用于判斷當(dāng)前輸入幀是否為語(yǔ)音幀。具體地,第一數(shù)據(jù)處理子模塊230首先判斷當(dāng)前輸入幀的短時(shí)能量值是否大于或等于第一能量閾值。在當(dāng)前輸入幀的短時(shí)能量值大于或等于預(yù)設(shè)的第一能量閾值時(shí),則第一數(shù)據(jù)處理子模塊230將輸出第一狀態(tài)信號(hào)(如第一狀態(tài)信號(hào)可以為“1”)至先入先出陣列。在當(dāng)前輸入幀的短時(shí)能量小于預(yù)設(shè)的第一能量閾值時(shí),則第一數(shù)據(jù)處理子模塊230可以輸出第二狀態(tài)信號(hào)(如第二狀態(tài)信號(hào)可以為“0”)至先入先出陣列。
同時(shí),第一數(shù)據(jù)處理子模塊230還可以根據(jù)多幀語(yǔ)音信號(hào)對(duì)應(yīng)的狀態(tài)信號(hào)判斷當(dāng)前輸入幀是否為語(yǔ)音幀。當(dāng)上述先入先出陣列中第一狀態(tài)信號(hào)的個(gè)數(shù)大于或等于第一預(yù)設(shè)個(gè)數(shù)時(shí),則可以判定當(dāng)前輸入幀為語(yǔ)音幀。本實(shí)施例中,系統(tǒng)會(huì)首先初始化語(yǔ)音信號(hào)的狀態(tài)為非語(yǔ)音信號(hào),當(dāng)?shù)谝粩?shù)據(jù)處理子模塊230判定當(dāng)前輸入幀為語(yǔ)音幀時(shí),將把默認(rèn)的非語(yǔ)音信號(hào)修改為語(yǔ)音信號(hào)。同時(shí),為進(jìn)一步判斷語(yǔ)音信號(hào)的終止點(diǎn),第一數(shù)據(jù)處理子模塊230在判定當(dāng)前輸入幀為語(yǔ)音幀后,清空上述先入先出陣列。
之后,第一數(shù)據(jù)處理子模塊230還用于繼續(xù)檢測(cè)下一輸入幀是否為非語(yǔ)音幀。具體地,在下一輸入幀的短時(shí)能量值小于或等于第二能量閾值時(shí),輸出第三狀態(tài)信號(hào)(如第三狀態(tài)信號(hào)可以為“1”)至先入先出陣列中。在下一輸入幀的短時(shí)能量值大于第二能量閾值時(shí),輸出第四狀態(tài)信號(hào)(如第四狀態(tài)信號(hào)可以為“0”)至先入先出陣列中。當(dāng)先入先出陣列中第三狀態(tài)信號(hào)的個(gè)數(shù)大于或等于第二預(yù)設(shè)個(gè)數(shù)時(shí),則判定下一輸入幀為非語(yǔ)音幀。
進(jìn)一步地,還可以通過第一端點(diǎn)檢測(cè)子模塊220計(jì)算當(dāng)前輸入幀的短時(shí)過零率。通過當(dāng)前輸入幀的短時(shí)能量值和短時(shí)過零率結(jié)合的方式,判斷當(dāng)前輸入幀是否為語(yǔ)音幀。
在一個(gè)實(shí)施例中,語(yǔ)音處理模塊200還包括用于檢測(cè)語(yǔ)音信號(hào)終止點(diǎn)的第二端點(diǎn)特征檢測(cè)子模塊250和第三數(shù)據(jù)處理子模塊260。其中,第二端點(diǎn)特征檢測(cè)子模塊250用于檢測(cè)語(yǔ)音信號(hào)的終止點(diǎn),具體的,第二端點(diǎn)特征檢測(cè)子模塊250用于根據(jù)連續(xù)輸出的非語(yǔ)音幀的幀長(zhǎng)獲得非語(yǔ)音幀的持續(xù)時(shí)間,此處的非語(yǔ)音幀的持續(xù)時(shí)間可以為一個(gè)非語(yǔ)音幀的幀長(zhǎng),也可以是連續(xù)的多個(gè)非語(yǔ)音幀的幀長(zhǎng)之和。
第三數(shù)據(jù)處理子模塊260用于判斷非語(yǔ)音幀的持續(xù)時(shí)間是否大于或等于第一預(yù)設(shè)時(shí)間;當(dāng)非語(yǔ)音幀的持續(xù)時(shí)間大于或等于第一預(yù)設(shè)時(shí)間時(shí),則判定語(yǔ)音信號(hào)結(jié)束,并將語(yǔ)音信號(hào)結(jié)束的信號(hào)傳送至第二數(shù)據(jù)處理子模塊240和語(yǔ)音采集模塊100。第二數(shù)據(jù)處理子模塊240可以根據(jù)接收到的語(yǔ)音信號(hào)結(jié)束的信號(hào),根據(jù)第二存儲(chǔ)模塊400中存儲(chǔ)的當(dāng)前語(yǔ)音信號(hào)的語(yǔ)音幀對(duì)應(yīng)的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別。同時(shí),第三數(shù)據(jù)處理子模塊260將當(dāng)前語(yǔ)音信號(hào)結(jié)束的信號(hào)傳送至語(yǔ)音采集模塊100,從而,語(yǔ)音采集模塊100可以根據(jù)其接收到的信號(hào)進(jìn)行下一個(gè)語(yǔ)音信號(hào)的采集操作。
在一個(gè)實(shí)施例中,語(yǔ)音處理模塊200還包括運(yùn)算子模塊270和第四數(shù)據(jù)處理子模塊280。其中,當(dāng)檢測(cè)到語(yǔ)音信號(hào)結(jié)束后,運(yùn)算子模塊270用于根據(jù)第二存儲(chǔ)模塊400中一個(gè)或多個(gè)語(yǔ)音幀的幀長(zhǎng),獲得語(yǔ)音信號(hào)的語(yǔ)音段的持續(xù)時(shí)間。此處的語(yǔ)音段的持續(xù)時(shí)間可以為第二存儲(chǔ)模塊400中一個(gè)或多個(gè)語(yǔ)音幀的幀長(zhǎng)之和。
第四數(shù)據(jù)處理子模塊280用于判斷語(yǔ)音段的持續(xù)時(shí)間是否大于或等于第二預(yù)設(shè)時(shí)間;當(dāng)語(yǔ)音段的持續(xù)時(shí)間大于或等于第二預(yù)設(shè)時(shí)間時(shí),則可以說明當(dāng)前語(yǔ)音段為有效的語(yǔ)音,調(diào)用第二數(shù)據(jù)處理子模塊240進(jìn)行語(yǔ)音特征識(shí)別。當(dāng)語(yǔ)音段的持續(xù)時(shí)間小于第二預(yù)設(shè)時(shí)間時(shí),則上述語(yǔ)音段可能為噪聲,此時(shí)第四數(shù)據(jù)處理子模塊280將清空上述第一存儲(chǔ)模塊300和第二存儲(chǔ)模塊400,從而可以節(jié)省第二存儲(chǔ)模塊400的存儲(chǔ)空間,優(yōu)化存儲(chǔ)空間。之后,語(yǔ)音采集模塊100可以根據(jù)上述刪除信號(hào)繼續(xù)采集下一個(gè)語(yǔ)音信號(hào),重新開始下一個(gè)語(yǔ)音信號(hào)的端點(diǎn)檢測(cè)。
在一個(gè)實(shí)施例中,語(yǔ)音處理模塊200還可以包括判斷子模塊290,用于判斷第二存儲(chǔ)模塊400是否滿載。本實(shí)施例中,可以根據(jù)第二存儲(chǔ)模塊400的存儲(chǔ)空間大小計(jì)算獲得該第二存儲(chǔ)模塊400最多能存儲(chǔ)的語(yǔ)音幀的幀數(shù)(下稱“第二存儲(chǔ)模塊400的最大幀數(shù)”)。當(dāng)?shù)诙鎯?chǔ)模塊400中存儲(chǔ)的語(yǔ)音幀的幀數(shù)等于第二存儲(chǔ)模塊400的最大幀數(shù)時(shí),則可以說明該第二存儲(chǔ)模塊400已經(jīng)滿載。第二數(shù)據(jù)處理子模塊240還用于當(dāng)?shù)诙鎯?chǔ)模塊400滿載時(shí),根據(jù)第二存儲(chǔ)模塊400中的語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別,并停止獲取語(yǔ)音信號(hào)。這樣,當(dāng)?shù)诙鎯?chǔ)模塊400滿載時(shí),停止獲取語(yǔ)音信號(hào),從而可以避免語(yǔ)音信號(hào)的丟失,可以語(yǔ)音識(shí)別的實(shí)時(shí)性。
在一個(gè)實(shí)施例,在語(yǔ)音信號(hào)結(jié)束或第二存儲(chǔ)模塊400滿載時(shí),第二數(shù)據(jù)處理子模塊240開始工作,根據(jù)第二存儲(chǔ)模塊400中的語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別。具體的,第二數(shù)據(jù)處理子模塊240還包括歸一化計(jì)算單元241和差分計(jì)算單元242。其中,歸一化計(jì)算單元241用于對(duì)第二存儲(chǔ)模塊400中的一個(gè)或多個(gè)語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行歸一化處理,獲得歸一化參數(shù),并將上述歸一化參數(shù)傳送至語(yǔ)音識(shí)別模塊500。其中,上述歸一化參數(shù)可以用來反映該語(yǔ)音信號(hào)的靜態(tài)特性。差分計(jì)算單元242用于根據(jù)第二存儲(chǔ)模塊400中的一個(gè)或多個(gè)語(yǔ)音幀的梅爾頻率倒譜系數(shù)計(jì)算獲得一階差分參數(shù)和二階差分參數(shù),并將上述一階差分參數(shù)和二階差分參數(shù)傳送至語(yǔ)音識(shí)別模塊500。其中,一階差分參數(shù)即為相鄰兩個(gè)語(yǔ)音幀的梅爾頻率倒譜系數(shù)之差。二階差分參數(shù)上述相鄰兩個(gè)一階差分之差。本實(shí)施例中,可以通過一階差分參數(shù)和二階差分參數(shù)可以用來反映該語(yǔ)音信號(hào)的動(dòng)態(tài)特性。語(yǔ)音識(shí)別模塊500用于根據(jù)歸一化參數(shù)、一階差分參數(shù)和二階差分參數(shù)進(jìn)行語(yǔ)音特征識(shí)別。
以下結(jié)合附圖簡(jiǎn)要說明本發(fā)明的工作原理:
首先,語(yǔ)音采集模塊100采集一段語(yǔ)音信號(hào),并將采集到的語(yǔ)音信號(hào)進(jìn)行分幀處理,之后,將上述分幀后的語(yǔ)音信號(hào)按幀輸入至語(yǔ)音處理模塊200中。
針對(duì)每一幀語(yǔ)音信號(hào),語(yǔ)音處理模塊200均按照如下方式進(jìn)行信號(hào)處理。具體地,語(yǔ)音處理模塊200的預(yù)處理子模塊210首先對(duì)當(dāng)前輸入幀進(jìn)行去直流和預(yù)加重等預(yù)處理過程,之后,將預(yù)處理后的當(dāng)前輸入幀傳送至第一端點(diǎn)特征檢測(cè)子模塊220。第一端點(diǎn)特征檢測(cè)子模塊220計(jì)算預(yù)加重后的當(dāng)前輸入幀的梅爾頻率倒譜系數(shù)和短時(shí)能量值,并將上述當(dāng)前輸入幀的梅爾倒譜系數(shù)存儲(chǔ)在第一存儲(chǔ)模塊300(臨時(shí)存儲(chǔ)器)中。同時(shí),第一數(shù)據(jù)處理子模塊230根據(jù)當(dāng)前輸入幀的短時(shí)能量值判斷當(dāng)前輸入幀是否為語(yǔ)音幀。例如,第一數(shù)據(jù)處理子模塊230在當(dāng)前輸入幀的短時(shí)能量值大于或等于第一能量閾值時(shí),輸出第一狀態(tài)信號(hào)至先入先出陣列中;并當(dāng)先入先出陣列中所述第一狀態(tài)信號(hào)的個(gè)數(shù)大于或等于第一預(yù)設(shè)個(gè)數(shù)時(shí),則判定當(dāng)前輸入幀為語(yǔ)音幀。當(dāng)?shù)谝粩?shù)據(jù)處理子模塊230判定當(dāng)前輸入幀為語(yǔ)音幀時(shí),第一數(shù)據(jù)處理子模塊230可以將當(dāng)前輸入幀對(duì)應(yīng)的梅爾頻率倒譜系數(shù)從第一存儲(chǔ)模塊300轉(zhuǎn)存至第二存儲(chǔ)模塊400中。之后,第一數(shù)據(jù)處理子模塊230清空上述先入先出陣列,并繼續(xù)判斷下一輸入幀是否為非語(yǔ)音幀。
之后,語(yǔ)音處理模塊200中的第三數(shù)據(jù)處理子模塊260可以根據(jù)非語(yǔ)音幀的持續(xù)時(shí)間判斷該語(yǔ)音信號(hào)是否結(jié)束。當(dāng)該語(yǔ)音信號(hào)結(jié)束時(shí),語(yǔ)音采集模塊100停止獲取語(yǔ)音信號(hào)。同時(shí),當(dāng)語(yǔ)音信號(hào)結(jié)束時(shí),語(yǔ)音處理模塊200中的第四數(shù)據(jù)處理子模塊280可以根據(jù)第二存儲(chǔ)中存儲(chǔ)的一個(gè)或多個(gè)語(yǔ)音幀形成的語(yǔ)音段的持續(xù)時(shí)間判斷該語(yǔ)音段是否為有效語(yǔ)音。具體地,當(dāng)?shù)谒臄?shù)據(jù)處理子模塊280判定語(yǔ)音段的持續(xù)時(shí)間大于或等于第二預(yù)設(shè)時(shí)間時(shí),則說明該語(yǔ)音段為有效的語(yǔ)音段。否則,則說明該語(yǔ)音段可能為噪音,第四數(shù)據(jù)處理子模塊280將上述語(yǔ)音段從第二存儲(chǔ)模塊400中刪除,即當(dāng)語(yǔ)音段的持續(xù)時(shí)間小于第二預(yù)設(shè)時(shí)間時(shí),同時(shí)清空第一存儲(chǔ)模塊300和第二存儲(chǔ)模塊400。
進(jìn)一步地,語(yǔ)音處理模塊200中的判斷子模塊290還可以判斷上述第二存儲(chǔ)模塊400是否滿載。當(dāng)語(yǔ)音信號(hào)結(jié)束或第二存儲(chǔ)模塊400滿載時(shí),語(yǔ)音處理模塊200中的第二數(shù)據(jù)處理子模塊240將根據(jù)第二存儲(chǔ)模塊400中存儲(chǔ)的語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別,并將獲得語(yǔ)音信號(hào)的特征參數(shù)(歸一化參數(shù)、一階差分參數(shù)及二階差分參數(shù))傳送至語(yǔ)音識(shí)別模塊500,語(yǔ)音識(shí)別模塊500對(duì)語(yǔ)音信號(hào)進(jìn)行更進(jìn)一步的處理。
此外,如圖3所示,本發(fā)明還提供了一種嵌入式語(yǔ)音識(shí)別方法,包括如下步驟:
S110、獲取語(yǔ)音信號(hào),并對(duì)獲取的語(yǔ)音信號(hào)進(jìn)行分幀處理;具體地,可以通過語(yǔ)音采集模塊100獲取語(yǔ)音信號(hào),同時(shí)語(yǔ)音采集模塊100可以選取20毫秒~30毫秒作為語(yǔ)音分幀的幀長(zhǎng),10毫秒~20毫秒作為幀疊,將獲取的語(yǔ)音信號(hào)分隔為多個(gè)幀。
S120、對(duì)語(yǔ)音信號(hào)的當(dāng)前輸入幀進(jìn)行預(yù)處理;具體的,預(yù)處理子模塊210可以對(duì)獲取的語(yǔ)音信號(hào)進(jìn)行去直流、A/D變換以及預(yù)加重處理。
S130、計(jì)算當(dāng)前輸入幀的梅爾頻率倒譜系數(shù),并將當(dāng)前輸入幀的梅爾頻率倒譜系數(shù)存儲(chǔ)在第一存儲(chǔ)模塊300中;其中,梅爾頻率倒譜系數(shù)可以用來表示語(yǔ)音信號(hào)的特征,第一存儲(chǔ)模塊300采用的是FIFO(First In First Out,先進(jìn)先出)結(jié)構(gòu)的臨時(shí)存儲(chǔ)器。
S140、計(jì)算當(dāng)前輸入幀的短時(shí)能量值;其中,短時(shí)能量值表示當(dāng)前輸入幀的振幅的大小,因此,可以通過短時(shí)能量值來過濾掉語(yǔ)音信號(hào)中的噪聲。
S150、根據(jù)當(dāng)前輸入幀的短時(shí)能量值判斷當(dāng)前輸入幀是否為語(yǔ)音幀;
在當(dāng)前輸入幀為語(yǔ)音幀時(shí),則執(zhí)行步驟S160,將當(dāng)前輸入幀對(duì)應(yīng)的梅爾頻率倒譜系數(shù)存儲(chǔ)至第二存儲(chǔ)模塊400中;這樣,第二存儲(chǔ)模塊400僅用于存儲(chǔ)語(yǔ)音幀信號(hào),提高了第二存儲(chǔ)模塊400的存儲(chǔ)空間利用率,優(yōu)化了第二存儲(chǔ)模塊400的存儲(chǔ)資源。在當(dāng)前輸入幀為非語(yǔ)音幀(如靜音幀)時(shí),則此時(shí)可以不做任何操作,直接返回步驟S110,進(jìn)行下一幀語(yǔ)音信號(hào)的處理。即在當(dāng)前輸入幀為非語(yǔ)音幀時(shí),不會(huì)將當(dāng)前輸入幀對(duì)應(yīng)的梅爾頻率倒譜系數(shù)存儲(chǔ)至第二存儲(chǔ)模塊400中,從而可以優(yōu)化第二存儲(chǔ)模塊的存儲(chǔ)空間。
S170、當(dāng)上述語(yǔ)音信號(hào)結(jié)束時(shí),根據(jù)第二存儲(chǔ)模塊400中的語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別。本實(shí)施例中,針對(duì)同一個(gè)語(yǔ)音信號(hào),重復(fù)執(zhí)行上述步驟S150至步驟S160,直至該語(yǔ)音信號(hào)結(jié)束后,再執(zhí)行步驟S170。之后,返回步驟S110,重新采集下一個(gè)語(yǔ)音信號(hào),進(jìn)行下一個(gè)語(yǔ)音信號(hào)的處理。這樣保證語(yǔ)音特征識(shí)別的實(shí)時(shí)性,避免了語(yǔ)音信號(hào)丟失的情況,進(jìn)一步保證了語(yǔ)音信號(hào)識(shí)別的可靠性。
在一個(gè)實(shí)施例中,如圖4所示,上述步驟S150具體包括如下步驟:
S151、判斷當(dāng)前輸入幀的短時(shí)能量值是否大于或等于第一能量閾值。
在當(dāng)前輸入幀的短時(shí)能量值大于或等于第一能量閾值時(shí),則執(zhí)行步驟S152,輸出第一狀態(tài)信號(hào)至先入先出陣列中;其中,第一狀態(tài)信號(hào)可以為“1”,該先入先出陣列可以具有N(N≥1,N為正整數(shù))幀存儲(chǔ)空間。在當(dāng)前輸入幀的短時(shí)能量值小于第一能量閾值時(shí),輸出第二狀態(tài)信號(hào)至先入先出陣列中;其中,第二狀態(tài)信號(hào)可以為“0”。
S153、判斷先入先出陣列中第一狀態(tài)信號(hào)的個(gè)數(shù)是否大于或等于第一預(yù)設(shè)個(gè)數(shù);可以通過先入先出陣列中存儲(chǔ)的多幀語(yǔ)音信號(hào)的狀態(tài)信號(hào)判斷當(dāng)前輸入幀是否為語(yǔ)音幀。
當(dāng)先入先出陣列中第一狀態(tài)信號(hào)的個(gè)數(shù)大于或等于第一預(yù)設(shè)個(gè)數(shù)時(shí),則執(zhí)行步驟S154,判定當(dāng)前輸入幀為語(yǔ)音幀。
當(dāng)判定當(dāng)前輸入幀為語(yǔ)音幀之后,執(zhí)行步驟S155,清空上述先入先出陣列。同時(shí)將系統(tǒng)默認(rèn)的非語(yǔ)音信號(hào)修改為語(yǔ)音信號(hào)。之后,通過判斷下一幀語(yǔ)音信號(hào)是否為非語(yǔ)音幀,判斷語(yǔ)音信號(hào)是否結(jié)束。
進(jìn)一步地,上述步驟S150還包括如下步驟:
S156、判斷下一輸入幀的短時(shí)能量值小于或等于第二能量閾值;
當(dāng)下一輸入幀的短時(shí)能量值小于或等于第二能量閾值時(shí),則執(zhí)行步驟S157,輸出第三狀態(tài)信號(hào)至先入先出陣列中;其中,第三狀態(tài)信號(hào)可以為“1”。在下一輸入幀的短時(shí)能量值大于第二能量閾值時(shí),輸出第四狀態(tài)信號(hào)至先入先出陣列中,其中,第四狀態(tài)信號(hào)可以為“0”。
S158、判斷先入先出陣列中第一狀態(tài)信號(hào)的個(gè)數(shù)是否大于或等于第一預(yù)設(shè)個(gè)數(shù);可以通過先入先出陣列中存儲(chǔ)的多幀語(yǔ)音信號(hào)的狀態(tài)信號(hào)判斷當(dāng)前輸入幀是否為非語(yǔ)音幀。
當(dāng)先入先出陣列中第三狀態(tài)信號(hào)的個(gè)數(shù)大于或等于第二預(yù)設(shè)個(gè)數(shù)時(shí),則執(zhí)行步驟S159,判定下一輸入幀為非語(yǔ)音幀。
作為進(jìn)一步的改進(jìn),如圖5所示,上述方法還包括如下步驟:
S210、根據(jù)連續(xù)輸出的非語(yǔ)音幀的幀長(zhǎng)獲得非語(yǔ)音幀的持續(xù)時(shí)間;其中,非語(yǔ)音幀的持續(xù)時(shí)間可以為一個(gè)非語(yǔ)音幀的幀長(zhǎng),也可以是連續(xù)的多個(gè)非語(yǔ)音幀的幀長(zhǎng)之和。
S220、判斷非語(yǔ)音幀的持續(xù)時(shí)間是否大于或等于第一預(yù)設(shè)時(shí)間;
當(dāng)非語(yǔ)音段的持續(xù)時(shí)間大于或等于第一預(yù)設(shè)時(shí)間時(shí),則判定語(yǔ)音信號(hào)結(jié)束。此時(shí),可以執(zhí)行步驟S170,根據(jù)第二存儲(chǔ)模塊400中的語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別,獲得當(dāng)前語(yǔ)音信號(hào)的特征參數(shù)。同時(shí),當(dāng)判定語(yǔ)音信號(hào)結(jié)束時(shí),執(zhí)行步驟S260,重新獲取下一個(gè)語(yǔ)音信號(hào),進(jìn)行下一個(gè)語(yǔ)音信號(hào)的處理。否則,當(dāng)非語(yǔ)音段的持續(xù)時(shí)間小于第一預(yù)設(shè)時(shí)間,此時(shí)可以判定該語(yǔ)音信號(hào)尚未結(jié)束,繼續(xù)進(jìn)行下一幀語(yǔ)音信號(hào)的處理,直至該語(yǔ)音信號(hào)結(jié)束。
在一個(gè)實(shí)施例中,上述方法還包括如下步驟:
S230、根據(jù)第二存儲(chǔ)模塊400中一個(gè)或多個(gè)語(yǔ)音幀的幀長(zhǎng),獲得語(yǔ)音信號(hào)的語(yǔ)音段的持續(xù)時(shí)間;其中,語(yǔ)音段的持續(xù)時(shí)間可以為第二存儲(chǔ)模塊400中一個(gè)或多個(gè)語(yǔ)音幀的幀長(zhǎng)之和。
S240、判斷語(yǔ)音段的持續(xù)時(shí)間是否大于或等于第二預(yù)設(shè)時(shí)間;
當(dāng)語(yǔ)音段的持續(xù)時(shí)間大于或等于第二預(yù)設(shè)時(shí)間時(shí),則可以說明當(dāng)前語(yǔ)音段為有效的語(yǔ)音,此時(shí)執(zhí)行步驟S170,根據(jù)第二存儲(chǔ)模塊400中的語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別,以獲得該語(yǔ)音信號(hào)的特征參數(shù)。
當(dāng)語(yǔ)音段的持續(xù)時(shí)間小于第二預(yù)設(shè)時(shí)間時(shí),則上述語(yǔ)音段可能為噪聲,此時(shí),執(zhí)行步驟S250,清空第一存儲(chǔ)模塊300和第二存儲(chǔ)模塊400,從而可以優(yōu)化存儲(chǔ)空間。
在一個(gè)實(shí)施例中,上述方法還包括如下步驟:
S270、判斷第二存儲(chǔ)模塊400是否滿載;本實(shí)施例中,可以根據(jù)第二存儲(chǔ)模塊400的存儲(chǔ)空間大小計(jì)算獲得該第二存儲(chǔ)模塊400最多能存儲(chǔ)的語(yǔ)音幀的幀數(shù)(下稱“第二存儲(chǔ)模塊400的最大幀數(shù)”)。當(dāng)?shù)诙鎯?chǔ)模塊400中存儲(chǔ)的語(yǔ)音幀的幀數(shù)等于第二存儲(chǔ)模塊400的最大幀數(shù)時(shí),則可以說明該第二存儲(chǔ)模塊400已經(jīng)滿載。
當(dāng)?shù)诙鎯?chǔ)模塊400滿載時(shí),則執(zhí)行步驟S170,根據(jù)第二存儲(chǔ)模塊400中的語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別,并停止獲取語(yǔ)音信號(hào)。即當(dāng)?shù)诙鎯?chǔ)模塊400滿載時(shí),即使該語(yǔ)音信號(hào)尚未結(jié)束,也不再接收該語(yǔ)音信號(hào)的其他幀,從而可以避免語(yǔ)音信號(hào)的丟失,可以語(yǔ)音識(shí)別的實(shí)時(shí)性。當(dāng)?shù)诙鎯?chǔ)模塊未滿載時(shí),說明第二存儲(chǔ)模塊中還有剩余的存儲(chǔ)空間可以用來存儲(chǔ)該語(yǔ)音信號(hào)的語(yǔ)音幀,此時(shí),繼續(xù)接收下一幀語(yǔ)音信號(hào)。
在一個(gè)實(shí)施例中,上述步驟S170具體可以包括如下步驟:
S171、對(duì)第二存儲(chǔ)模塊400中的一個(gè)或多個(gè)語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行歸一化處理,獲得歸一化參數(shù),并將上述歸一化參數(shù)傳送至語(yǔ)音識(shí)別模塊。其中,上述歸一化參數(shù)可以用來反映該語(yǔ)音信號(hào)的靜態(tài)特性。
S172、根據(jù)第二存儲(chǔ)模塊400中的一個(gè)或多個(gè)語(yǔ)音幀的梅爾頻率倒譜系數(shù)計(jì)算獲得一階差分參數(shù)和二階差分參數(shù),并將上述一階差分參數(shù)和二階差分參數(shù)傳送至語(yǔ)音識(shí)別模塊。其中,一階差分參數(shù)即為相鄰兩個(gè)語(yǔ)音幀的梅爾頻率倒譜系數(shù)之差。二階差分參數(shù)上述相鄰兩個(gè)一階差分之差。本實(shí)施例中,可以通過一階差分參數(shù)和二階差分參數(shù)可以用來反映該語(yǔ)音信號(hào)的動(dòng)態(tài)特性。語(yǔ)音識(shí)別模塊500用于根據(jù)歸一化參數(shù)、一階差分參數(shù)和二階差分參數(shù)進(jìn)行語(yǔ)音特征識(shí)別。
應(yīng)當(dāng)清楚的是,上述方法的各個(gè)執(zhí)行步驟與上述系統(tǒng)的工作原理基本一致,具體可參見上文中的描述。
本發(fā)明的嵌入式語(yǔ)音識(shí)別系統(tǒng)及方法,通過將語(yǔ)音信號(hào)的各個(gè)幀對(duì)應(yīng)的梅爾頻率倒譜系數(shù)存儲(chǔ)在第一存儲(chǔ)模塊,當(dāng)判定當(dāng)前輸入幀為語(yǔ)音幀時(shí),再將該語(yǔ)音幀對(duì)應(yīng)的梅爾頻率倒譜系數(shù)復(fù)制到第二存儲(chǔ)模塊中,這樣可以保證第二存儲(chǔ)模塊中存儲(chǔ)的信號(hào)均為語(yǔ)音幀,從而可以優(yōu)化第二存儲(chǔ)模塊的存儲(chǔ)資源,節(jié)省第二存儲(chǔ)模塊的存儲(chǔ)空間;同時(shí),根據(jù)第二存儲(chǔ)模塊中的語(yǔ)音幀的梅爾頻率倒譜系數(shù)進(jìn)行語(yǔ)音特征識(shí)別,可以保證語(yǔ)音特征識(shí)別的實(shí)時(shí)性,避免了語(yǔ)音信號(hào)丟失的情況,進(jìn)一步保證了語(yǔ)音信號(hào)識(shí)別的可靠性。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access Memory,RAM)等。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。