国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Android本地語(yǔ)音識(shí)別
本帖最后由 xi4y0z 于 2014-1-2 14:14 編輯

這幾天研究Android本地語(yǔ)音識(shí)別,我們先了解一下基礎(chǔ)知識(shí)
語(yǔ)音識(shí)別技術(shù)就是讓機(jī)器通過識(shí)別和理解過程把語(yǔ)音信號(hào)轉(zhuǎn)變?yōu)橄鄳?yīng)的文本或命令的技術(shù)。
       基于語(yǔ)音識(shí)別芯片的嵌入式產(chǎn)品也越來越多,如Sensory公司的RSC系列語(yǔ)音識(shí)別芯片、Infineon公司的Unispeech和Unilite語(yǔ)音芯片等,這些芯片在嵌入式硬件開發(fā)中得到了廣泛的應(yīng)用。在軟件上,目前比較成功的語(yǔ)音識(shí)別軟件有:Nuance、IBM的Viavoice和Microsoft的SAPI以及開源軟件HTK,這些軟件都是面向非特定人、大詞匯量的連續(xù)語(yǔ)音識(shí)別系統(tǒng)。
        語(yǔ)音識(shí)別本質(zhì)上是一種模式識(shí)別的過程,未知語(yǔ)音的模式與已知語(yǔ)音的參考模式逐一進(jìn)行比較,最佳匹配的參考模式被作為識(shí)別結(jié)果。
        語(yǔ)音識(shí)別的目的就是讓機(jī)器賦予人的聽覺特性,聽懂人說什么,并作出相應(yīng)的動(dòng)作。目前大多數(shù)語(yǔ)音識(shí)別技術(shù)是基于統(tǒng)計(jì)模式的,從語(yǔ)音產(chǎn)生機(jī)理來看,語(yǔ)音識(shí)別可以分為語(yǔ)音層和語(yǔ)言層兩部分。
        當(dāng)今語(yǔ)音識(shí)別技術(shù)的主流算法,主要有基于動(dòng)態(tài)時(shí)間規(guī)整(DTW)算法、基于非參數(shù)模型的矢量量化(VQ)方法、基于參數(shù)模型的隱馬爾可夫模型(HMM)的方法、基于人工神經(jīng)網(wǎng)絡(luò)(ANN)和支持向量機(jī)等語(yǔ)音識(shí)別方法。
語(yǔ)音識(shí)別分類:
根據(jù)對(duì)說話人的依賴程度,分為:
(1)特定人語(yǔ)音識(shí)別(SD):只能辨認(rèn)特定使用者的語(yǔ)音,訓(xùn)練→使用。
(2)非特定人語(yǔ)音識(shí)別(SI):可辨認(rèn)任何人的語(yǔ)音,無須訓(xùn)練。
根據(jù)對(duì)說話方式的要求,分為:
(1)孤立詞識(shí)別:每次只能識(shí)別單個(gè)詞匯。
(2)連續(xù)語(yǔ)音識(shí)別:用者以正常語(yǔ)速說話,即可識(shí)別其中的語(yǔ)句。
        語(yǔ)音識(shí)別系統(tǒng)的模型通常由聲學(xué)模型和語(yǔ)言模型兩部分組成,分別對(duì)應(yīng)于語(yǔ)音到音節(jié)概率的計(jì)算和音節(jié)到字概率的計(jì)算。
[size=14.44444465637207px]

Sphinx是由美國(guó)卡內(nèi)基梅隆大學(xué)開發(fā)的大詞匯量、非特定人、連續(xù)英語(yǔ)語(yǔ)音識(shí)別系統(tǒng)。一個(gè)連續(xù)語(yǔ)音識(shí)別系統(tǒng)大致可分為四個(gè)部分:特征提取,聲學(xué)模型訓(xùn)練,語(yǔ)言模型訓(xùn)練和解碼器。
(1)預(yù)處理模塊:
       對(duì)輸入的原始語(yǔ)音信號(hào)進(jìn)行處理,濾除掉其中的不重要的信息以及背景噪聲,并進(jìn)行語(yǔ)音信號(hào)的端點(diǎn)檢測(cè)(找出語(yǔ)音信號(hào)的始末)、語(yǔ)音分幀(近似認(rèn)為在10-30ms內(nèi)是語(yǔ)音信號(hào)是短時(shí)平穩(wěn)的,將語(yǔ)音信號(hào)分割為一段一段進(jìn)行分析)以及預(yù)加重(提升高頻部分)等處理。
(2)特征提取:
        去除語(yǔ)音信號(hào)中對(duì)于語(yǔ)音識(shí)別無用的冗余信息,保留能夠反映語(yǔ)音本質(zhì)特征的信息,并用一定的形式表示出來。也就是提取出反映語(yǔ)音信號(hào)特征的關(guān)鍵特征參數(shù)形成特征矢量序列,以便用于后續(xù)處理。
        目前的較常用的提取特征的方法還是比較多的,不過這些提取方法都是由頻譜衍生出來的。Mel頻率倒譜系數(shù)(MFCC)參數(shù)因其良好的抗噪性和魯棒性而應(yīng)用廣泛。在sphinx中也是用MFCC特征的。MFCC的計(jì)算首先用FFT將時(shí)域信號(hào)轉(zhuǎn)化成頻域,之后對(duì)其對(duì)數(shù)能量譜用依照Mel刻度分布的三角濾波器組進(jìn)行卷積,最后對(duì)各個(gè)濾波器的輸出構(gòu)成的向量進(jìn)行離散余弦變換DCT,取前N個(gè)系數(shù)。
       在sphinx中,用幀frames去分割語(yǔ)音波形,每幀大概10ms,然后每幀提取可以代表該幀語(yǔ)音的39個(gè)數(shù)字,這39個(gè)數(shù)字也就是該幀語(yǔ)音的MFCC特征,用特征向量來表示。
(3)聲學(xué)模型訓(xùn)練:
      根據(jù)訓(xùn)練語(yǔ)音庫(kù)的特征參數(shù)訓(xùn)練出聲學(xué)模型參數(shù)。在識(shí)別時(shí)可以將待識(shí)別的語(yǔ)音的特征參數(shù)同聲學(xué)模型進(jìn)行匹配,得到識(shí)別結(jié)果。
      目前的主流語(yǔ)音識(shí)別系統(tǒng)多采用隱馬爾可夫模型HMM進(jìn)行聲學(xué)模型建模。聲學(xué)模型的建模單元,可以是音素,音節(jié),詞等各個(gè)層次。對(duì)于小詞匯量的語(yǔ)音識(shí)別系統(tǒng),可以直接采用音節(jié)進(jìn)行建模。而對(duì)于詞匯量偏大的識(shí)別系統(tǒng),一般選取音素,即聲母,韻母進(jìn)行建模。識(shí)別規(guī)模越大,識(shí)別單元選取的越小。(關(guān)于HMM,網(wǎng)上有很多經(jīng)典的解說,例如《HMM學(xué)習(xí)最佳范例》和《隱馬爾科夫模型(hmm)簡(jiǎn)介》等,不了解的可以去看看)
         HMM是對(duì)語(yǔ)音信號(hào)的時(shí)間序列結(jié)構(gòu)建立統(tǒng)計(jì)模型,將其看作一個(gè)數(shù)學(xué)上的雙重隨機(jī)過程:一個(gè)是用具有有限狀態(tài)數(shù)的Markov鏈來模擬語(yǔ)音信號(hào)統(tǒng)計(jì)特性變化的隱含(馬爾可夫模型的內(nèi)部狀態(tài)外界不可見)的隨機(jī)過程,另一個(gè)是與Markov鏈的每一個(gè)狀態(tài)相關(guān)聯(lián)的外界可見的觀測(cè)序列(通常就是從各個(gè)幀計(jì)算而得的聲學(xué)特征)的隨機(jī)過程。
        人的言語(yǔ)過程實(shí)際上就是一個(gè)雙重隨機(jī)過程,語(yǔ)音信號(hào)本身是一個(gè)可觀測(cè)的時(shí)變序列,是由大腦根據(jù)語(yǔ)法知識(shí)和言語(yǔ)需要(不可觀測(cè)的狀態(tài))發(fā)出的音素的參數(shù)流(發(fā)出的聲音)。HMM合理地模仿了這一過程,是較為理想的一種語(yǔ)音模型。用HMM刻畫語(yǔ)音信號(hào)需作出兩個(gè)假設(shè),一是內(nèi)部狀態(tài)的轉(zhuǎn)移只與上一狀態(tài)有關(guān),另一是輸出值只與當(dāng)前狀態(tài)(或當(dāng)前的狀態(tài)轉(zhuǎn)移)有關(guān),這兩個(gè)假設(shè)大大降低了模型的復(fù)雜度。
       語(yǔ)音識(shí)別中使用HMM通常是用從左向右單向、帶自環(huán)、帶跨越的拓?fù)浣Y(jié)構(gòu)來對(duì)識(shí)別基元建模,一個(gè)音素就是一個(gè)三至五狀態(tài)的HMM,一個(gè)詞就是構(gòu)成詞的多個(gè)音素的HMM串行起來構(gòu)成的HMM,而連續(xù)語(yǔ)音識(shí)別的整個(gè)模型就是詞和靜音組合起來的HMM。
[size=14.44444465637207px]

(4)語(yǔ)言模型訓(xùn)練:
       語(yǔ)言模型是用來計(jì)算一個(gè)句子出現(xiàn)概率的概率模型。它主要用于決定哪個(gè)詞序列的可能性更大,或者在出現(xiàn)了幾個(gè)詞的情況下預(yù)測(cè)下一個(gè)即將出現(xiàn)的詞語(yǔ)的內(nèi)容。換一個(gè)說法說,語(yǔ)言模型是用來約束單詞搜索的。它定義了哪些詞能跟在上一個(gè)已經(jīng)識(shí)別的詞的后面(匹配是一個(gè)順序的處理過程),這樣就可以為匹配過程排除一些不可能的單詞。
       語(yǔ)言建模能夠有效的結(jié)合漢語(yǔ)語(yǔ)法和語(yǔ)義的知識(shí),描述詞之間的內(nèi)在關(guān)系,從而提高識(shí)別率,減少搜索范圍。語(yǔ)言模型分為三個(gè)層次:字典知識(shí),語(yǔ)法知識(shí),句法知識(shí)。
         對(duì)訓(xùn)練文本數(shù)據(jù)庫(kù)進(jìn)行語(yǔ)法、語(yǔ)義分析,經(jīng)過基于統(tǒng)計(jì)模型訓(xùn)練得到語(yǔ)言模型。語(yǔ)言建模方法主要有基于規(guī)則模型和基于統(tǒng)計(jì)模型兩種方法。統(tǒng)計(jì)語(yǔ)言模型是用概率統(tǒng)計(jì)的方法來揭示語(yǔ)言單位內(nèi)在的統(tǒng)計(jì)規(guī)律,其中N-Gram模型簡(jiǎn)單有效,被廣泛使用。它包含了單詞序列的統(tǒng)計(jì)。
          N-Gram模型基于這樣一種假設(shè),第n個(gè)詞的出現(xiàn)只與前面N-1個(gè)詞相關(guān),而與其它任何詞都不相關(guān),整句的概率就是各個(gè)詞出現(xiàn)概率的乘積。這些概率可以通過直接從語(yǔ)料中統(tǒng)計(jì)N個(gè)詞同時(shí)出現(xiàn)的次數(shù)得到。常用的是二元的Bi-Gram和三元的Tri-Gram。
         Sphinx中是采用二元語(yǔ)法和三元語(yǔ)法的統(tǒng)計(jì)語(yǔ)言概率模型,也就是通過前一個(gè)或兩個(gè)單詞來判定當(dāng)前單詞出現(xiàn)的概率P(w2| w1),P(w3| w2, w1)。
(5)語(yǔ)音解碼和搜索算法:
       解碼器:即指語(yǔ)音技術(shù)中的識(shí)別過程。針對(duì)輸入的語(yǔ)音信號(hào),根據(jù)己經(jīng)訓(xùn)練好的HMM聲學(xué)模型、語(yǔ)言模型及字典建立一個(gè)識(shí)別網(wǎng)絡(luò),根據(jù)搜索算法在該網(wǎng)絡(luò)中尋找最佳的一條路徑,這個(gè)路徑就是能夠以最大概率輸出該語(yǔ)音信號(hào)的詞串,這樣就確定這個(gè)語(yǔ)音樣本所包含的文字了。所以解碼操作即指搜索算法:是指在解碼端通過搜索技術(shù)尋找最優(yōu)詞串的方法。
        連續(xù)語(yǔ)音識(shí)別中的搜索,就是尋找一個(gè)詞模型序列以描述輸入語(yǔ)音信號(hào),從而得到詞解碼序列。搜索所依據(jù)的是對(duì)公式中的聲學(xué)模型打分和語(yǔ)言模型打分。在實(shí)際使用中,往往要依據(jù)經(jīng)驗(yàn)給語(yǔ)言模型加上一個(gè)高權(quán)重,并設(shè)置一個(gè)長(zhǎng)詞懲罰分?jǐn)?shù)。當(dāng)今的主流解碼技術(shù)都是基于Viterbi搜索算法的,Sphinx也是。
       基于動(dòng)態(tài)規(guī)劃的Viterbi算法[url=]在每個(gè)時(shí)間點(diǎn)上的各個(gè)狀態(tài),計(jì)算解碼狀態(tài)序列對(duì)觀察序列的后驗(yàn)概率,保留概率最大的路徑[/url],并在每個(gè)節(jié)點(diǎn)記錄下相應(yīng)的狀態(tài)信息以便最后反向獲取詞解碼序列。Viterbi算法本質(zhì)上是一種動(dòng)態(tài)規(guī)劃算法,該算法遍歷HMM狀態(tài)網(wǎng)絡(luò)并保留每一幀語(yǔ)音在某個(gè)狀態(tài)的最優(yōu)路徑得分。
        連續(xù)語(yǔ)音識(shí)別系統(tǒng)的識(shí)別結(jié)果是一個(gè)詞序列。解碼實(shí)際上是對(duì)詞表的所有詞反復(fù)搜索。詞表中詞的排列方式會(huì)影響搜索的速度,而詞的排列方式就是字典的表示形式。Sphinx系統(tǒng)中采用音素作為聲學(xué)訓(xùn)練單元,通常字典就用來記錄每個(gè)單詞由哪些個(gè)音素組成,也可以理解為對(duì)每個(gè)詞的發(fā)音進(jìn)行標(biāo)注。
         N-best搜索和多遍搜索:為在搜索中利用各種知識(shí)源,通常要進(jìn)行多遍搜索,第一遍使用代價(jià)低的知識(shí)源(如聲學(xué)模型、語(yǔ)言模型和音標(biāo)詞典),產(chǎn)生一個(gè)候選列表或詞候選網(wǎng)格,在此基礎(chǔ)上進(jìn)行使用代價(jià)高的知識(shí)源(如4階或5階的N-Gram、4階或更高的上下文相關(guān)模型)的第二遍搜索得到最佳路徑。
對(duì)于語(yǔ)音識(shí)別過程個(gè)人的理解:
      例如我對(duì)電腦說:“幫我打開“我的電腦”!”然后電腦得理解我說了什么,然后再執(zhí)行打開“我的電腦”的操作,那怎么實(shí)現(xiàn)呢?
       這個(gè)得預(yù)先有一個(gè)工作,就是電腦得先學(xué)會(huì)“幫我打開“我的電腦”!”這句語(yǔ)音(實(shí)際上是一個(gè)波形)所代表的文字就是“幫我打開“我的電腦”!”這句詞串。那么如何讓它學(xué)會(huì)呢?
       如果以音節(jié)(對(duì)漢語(yǔ)來說就是一個(gè)字的發(fā)音)為語(yǔ)音基元的話,那么電腦就是一個(gè)字一個(gè)字地學(xué)習(xí),例如“幫”字、“我”字等等,那么“幫”字怎么學(xué)習(xí)呢?也就是說電腦接收到一個(gè)“幫”字的語(yǔ)音波形,怎么分析理解才知道它代表的是“幫”字呢?首先我們需要建立一個(gè)數(shù)學(xué)模型來表示這個(gè)語(yǔ)音。因?yàn)檎Z(yǔ)音是連續(xù)的不平穩(wěn)的信號(hào),但是在短的時(shí)間內(nèi)可以認(rèn)為是平穩(wěn)的,所以我們需要分割語(yǔ)音信號(hào)為一幀一幀,假如大概25ms一幀,然后為了讓每一幀平穩(wěn)過渡,我們就讓每幀見存在重疊,假如重疊10ms。這樣每幀的語(yǔ)言信號(hào)就是平穩(wěn)的了,再?gòu)拿繋Z(yǔ)音信號(hào)中提取反映語(yǔ)音本質(zhì)特征的信息(去除語(yǔ)音信號(hào)中對(duì)于語(yǔ)音識(shí)別無用的冗余信息,同時(shí)達(dá)到降維)。那么采用什么特征最能表達(dá)每一幀的語(yǔ)音呢?MFCC是用的比較多的一種,這里不介紹了。然后我們就提取每一幀語(yǔ)音的MFCC特征,得到了是一系列的系數(shù),大概四五十個(gè)這樣,sphinx中是39個(gè)數(shù)字,組成了特征向量。好,那么我們就通過39個(gè)數(shù)字來描述每一幀的語(yǔ)音了,那不同的語(yǔ)音幀就會(huì)有不同的39個(gè)數(shù)字的組合,那我們用什么數(shù)學(xué)模型去描述這39個(gè)數(shù)字的分布情況呢?這里我們可以用一個(gè)混合高斯模型來表示著39個(gè)數(shù)字的分布,而混合高斯模型就存在著兩個(gè)參數(shù):均值和方差;那么實(shí)際上每一幀的語(yǔ)音就對(duì)應(yīng)著這么一組均值和方差的參數(shù)了。呵呵,挺啰嗦的啊。
       好了,這樣“幫”字的語(yǔ)音波形中的一幀就對(duì)應(yīng)了一組均值和方差(HMM模型中的觀察序列),那么我們只需要確定“幫”字(HMM模型中的隱含序列)也對(duì)應(yīng)于這一組均值和方差就可以了。那么后者是怎么對(duì)應(yīng)的呢?這就是訓(xùn)練的作用了!我們知道描述一個(gè)HMM模型需要三個(gè)參數(shù):初始狀態(tài)概率分布π、隱含狀態(tài)序列的轉(zhuǎn)移矩陣A(就是某個(gè)狀態(tài)轉(zhuǎn)移到另一個(gè)狀態(tài)的概率觀察序列中的這個(gè)均值或者方差的概率)和某個(gè)隱含狀態(tài)下輸出觀察值的概率分布B(也就是某個(gè)隱含狀態(tài)下對(duì)應(yīng)于);而聲學(xué)模型可以用HMM模型來建模,也就是對(duì)于每一個(gè)建模的語(yǔ)音單元,我們需要找到一組HMM模型參數(shù)(π,A,B)就可以代表這個(gè)語(yǔ)音單元了。那么這三個(gè)參數(shù)怎么確定呢?訓(xùn)練!我們給出一個(gè)語(yǔ)音的數(shù)據(jù)庫(kù),指明說這個(gè)語(yǔ)音代表這個(gè)詞,然后讓電腦去學(xué)習(xí),也就是對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)計(jì),得到(π,A,B)這三個(gè)參數(shù)。
         好了,一個(gè)字(建模單元)的聲學(xué)模型建立了。那漢語(yǔ)是不是有很多個(gè)字啊,那我們就得對(duì)每一個(gè)建立聲學(xué)模型了。假設(shè)就有幾千個(gè)模型,然后每個(gè)模型就有了三個(gè)或者5個(gè)HMM狀態(tài),那么如果你說的句子有10個(gè)字,那我們就得搜索這所有可能的模型去匹配你的語(yǔ)音,那是多么大的搜索空間了,這非常耗時(shí)。那我們就需要采用一個(gè)比較優(yōu)的搜索算法了(這里是Viterbi-Beam算法),它每搜索到一個(gè)狀態(tài)點(diǎn),就保留概率最大的,然后舍棄之前的狀態(tài)點(diǎn),這樣就裁剪了很多的搜索路徑,但因?yàn)楹雎粤酥暗穆窂?,所以它就只能得到一個(gè)局部的最優(yōu)解。
        那假如出現(xiàn)以下情況呢?例如,It’s a nice day,從語(yǔ)音上可能會(huì)被識(shí)別為:It sun niced A,或者是It son ice day。從聲學(xué)模型來看它是無法區(qū)別這些結(jié)果,因?yàn)槠洳煌幹皇窃谟诿總€(gè)單詞的邊界劃分位置不同造成的。這時(shí)候語(yǔ)言模型就該閃亮登場(chǎng)了,從語(yǔ)義上判斷那個(gè)結(jié)果出現(xiàn)的概率最大,即為搜索結(jié)果。語(yǔ)言模型N-Gram基于這樣一種假設(shè),第n個(gè)詞的出現(xiàn)只與前面N-1個(gè)詞相關(guān),而與其它任何詞都不相關(guān),整句的概率就是各個(gè)詞出現(xiàn)概率的乘積。這些概率可以通過直接從語(yǔ)料中統(tǒng)計(jì)N個(gè)詞同時(shí)出現(xiàn)的次數(shù)得到。這樣就可以約束搜索,增加識(shí)別的準(zhǔn)確率了。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
一文讀懂語(yǔ)言識(shí)別技術(shù)原理 | 新課速遞
干貨總結(jié) | 58同城語(yǔ)音識(shí)別技術(shù)的探索和實(shí)踐
【語(yǔ)音識(shí)別基礎(chǔ)】總有一天你會(huì)用到,嗯,沒有公式~
一文讀懂語(yǔ)音識(shí)別技術(shù)
機(jī)器學(xué)習(xí)
從不溫不火到炙手可熱:語(yǔ)音識(shí)別技術(shù)簡(jiǎn)史
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服