端點(diǎn)檢測原理
降噪原理
音頻編碼和解碼
幾種編解碼庫能力對比
訊飛語音云編解碼庫相關(guān)信息
端點(diǎn)檢測
音頻端點(diǎn)檢測就是從連續(xù)的語音流中檢測出有效的語音段。它包括兩個方面,檢測出有效語音的起始點(diǎn)即前端點(diǎn),檢測出有效語音的結(jié)束點(diǎn)即后端點(diǎn)。在語音應(yīng)用中進(jìn)行語音的端點(diǎn)檢測是很必要的。首先很簡單的一點(diǎn),就是在存儲或傳輸語音的場景下,從連續(xù)的語音流中分離出有效語音,可以降低存儲或傳輸?shù)臄?shù)據(jù)量。
其次是在有些應(yīng)用場景中,使用端點(diǎn)檢測可以簡化人機(jī)交互,比如在錄音的場景中,語音后端點(diǎn)檢測可以省略結(jié)束錄音的操作。為了能更清楚說明端點(diǎn)檢測的原理,先來分析一段音頻。
上圖是一段只有兩個字的簡單音頻,從圖上可以很直觀的看出,首尾的靜音部分聲波的振幅很小,而有效語音部分的振幅比較大,一個信號的振幅從直觀上表示了信號能量的大?。红o音部分能量值較小,有效語音部分的能量值較大。
語音信號是一個以時間為自變量的一維連續(xù)函數(shù),計(jì)算機(jī)處理的語音數(shù)據(jù)是語音信號按時間排序的采樣值序列,這些采樣值的大小同樣表示了語音信號在采樣點(diǎn)處的能量。采樣值中有正值和負(fù)值,計(jì)算能量值時不需要考慮正負(fù)號,從這個意義上看,使用采樣值的絕對值來表示能量值是自然而然的想法,由于絕對值符號在數(shù)學(xué)處理上不方便,所以采樣點(diǎn)的能量值通常使用采樣值的平方,一段包含N個采樣點(diǎn)的語音的能量值可以定義為其中各采樣值的平方和。
這樣,一段語音的能量值既與其中的采樣值大小有關(guān),又與其中包含的采樣點(diǎn)數(shù)量有關(guān)。為了考察語音能量值的變化,需要先將語音信號按照固定時長比如10或20毫秒進(jìn)行分割,每個分割單元稱為幀,每幀中包含數(shù)量相同的采樣點(diǎn),然后計(jì)算每幀語音的能量值。如果音頻前面部分連續(xù)M0幀的能量值低于一個事先指定的能量值閾值E0,接下來的連續(xù)M0幀能量值大于E0,則在語音能量值增大的地方就是語音的前端點(diǎn)。同樣的,如果連續(xù)的若干幀語音能量值較大,隨后的幀能量值變小,并且持續(xù)一定的時長,可以認(rèn)為在能量值減小的地方即是語音的后端點(diǎn)。
現(xiàn)在的問題是,能量值閾值E0怎么取?M0又是多少?理想的靜音能量值為0,故上面算法中的E0理想狀態(tài)下取0。不幸的是,采集音頻的場景中往往有一定強(qiáng)度的背景音,這種單純的背景音當(dāng)然算靜音,但其能量值顯然不為0,因此,實(shí)際采集到的音頻其背景音通常有一定的基礎(chǔ)能量值。
我們總是假設(shè)采集到的音頻在起始處有一小段靜音,長度一般為幾百毫秒,這一小段靜音是我們估計(jì)閾值E0的基礎(chǔ)。在估計(jì)E0時,選取一定數(shù)量的幀比如前100幀語音數(shù)據(jù),計(jì)算其平均能量值,然后加上一個經(jīng)驗(yàn)值或乘以一個大于1的系數(shù),由此得到E0。
至于M0,比較容易理解,其大小決定了端點(diǎn)檢測的靈敏度,M0越小,端點(diǎn)檢測的靈敏度越高,反之越低。語音應(yīng)用的場景不同,端點(diǎn)檢測的靈敏度也應(yīng)該被設(shè)置為不同的值。例如,在聲控遙控器的應(yīng)用中,由于語音指令一般都是簡單的控制指令,中間出現(xiàn)逗號或句號等較長停頓的可能性很小,所以提高端點(diǎn)檢測的靈敏度是合理的,M0設(shè)置為較小值,對應(yīng)的音頻時長一般為200-400毫秒左右。在大段的語音聽寫應(yīng)用中,由于中間會出現(xiàn)逗號或句號等較長時間的停頓,宜將端點(diǎn)檢測的靈敏度降低,此時M0值設(shè)置為較大值,對應(yīng)的時長一般為1500-3000毫秒。
以上只是語音端點(diǎn)檢測的很簡單的一般原理,實(shí)際應(yīng)用中的算法遠(yuǎn)比上面講的要復(fù)雜。作為一個應(yīng)用較廣的語音處理技術(shù),音頻端點(diǎn)檢測仍然是一個較為活躍的研究方向??拼笥嶏w已經(jīng)開始使用循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks, RNN)技術(shù)來進(jìn)行語音的端點(diǎn)檢測,實(shí)際的效果可以關(guān)注訊飛的產(chǎn)品。
降噪
降噪又稱噪聲抑制,前文提到,實(shí)際采集到的音頻通常會有一定強(qiáng)度的背景音,這些背景音一般是背景噪音,當(dāng)背景噪音強(qiáng)度較大時,會對語音應(yīng)用的效果產(chǎn)生明顯的影響,比如語音識別率降低,端點(diǎn)檢測靈敏度下降等。因此,在語音的前端處理中,進(jìn)行噪聲抑制是很有必要的。
噪聲有很多種,既有頻譜穩(wěn)定的白噪聲,又有不穩(wěn)定的脈沖噪聲和起伏噪聲。在語音應(yīng)用中,穩(wěn)定的背景噪音最為常見,技術(shù)也最成熟,效果也最好。本課程只討論穩(wěn)定的白噪聲,即總是假設(shè)背景噪聲的頻譜是穩(wěn)定或者是準(zhǔn)穩(wěn)定的。
與在時域中進(jìn)行的語音端點(diǎn)檢測不同,降噪的過程是在頻域上進(jìn)行的。為此,我們先來簡單介紹或者說復(fù)習(xí)一下用于時域-頻域相互轉(zhuǎn)換的重要工具——傅里葉變換。高等數(shù)學(xué)理論指出,一個滿足Dirichlet條件的周期為2T的函數(shù)f(t),可以展開成傅里葉級數(shù):
對于一般的連續(xù)時域信號f(t),設(shè)其定義域?yàn)閇0,T],對其進(jìn)行奇延拓后,其傅里葉級數(shù)如下式:
bn的計(jì)算同上。由上式可知,任何一個連續(xù)的時域信號f(t),都可以由一組三角函數(shù)線性疊加而成。信號的傅里葉級數(shù)展示的是構(gòu)成信號的頻率以及各個頻率處的振幅,因此,式子的右端又可以看做是信號f(t)的頻譜。上式從左到右的過程是一個求已知信號的頻譜的過程,從右到左的過程是一個由信號的頻譜重構(gòu)該信號的過程。
雖然由信號的傅里葉級數(shù)很容易理解頻譜的概念,但在實(shí)際中求取信號的頻譜時,使用的是傅里葉級數(shù)的一種推廣形式——傅里葉變換。傅里葉變換是一個大的家族,在不同的應(yīng)用領(lǐng)域,有不同的形式,在這里我們只給出兩種形式。
其中的j是虛數(shù)單位,也就是j*j=-1。
其對應(yīng)的傅里葉逆變換分別為:
在實(shí)際應(yīng)用中,將數(shù)字采樣信號進(jìn)行傅里葉變換后,可以得到信號的頻譜。頻域上的處理完成后,可以使用傅里葉逆變換將信號由頻域轉(zhuǎn)換到時域中。
以上是傅里葉變換的簡單介紹,數(shù)學(xué)功底不太好的朋友看不大懂也沒關(guān)系,只要明白,一個時域信號進(jìn)行傅里葉變換后,可以得到這個信號的頻譜,即完成如下轉(zhuǎn)換:
有了以上的理論作為基礎(chǔ),理解降噪的原理就容易多了。噪音抑制的關(guān)鍵是提取出噪聲的頻譜,然后將含噪語音根據(jù)噪聲的頻譜做一個反向的補(bǔ)償運(yùn)算,從而得到降噪后的語音。噪聲抑制的一般流程如下圖所示。
同端點(diǎn)檢測類似,假設(shè)音頻起始處的一小段語音是背景音。這一假設(shè)非常重要,因?yàn)檫@一小段背景音也是背景噪聲,是提取噪聲頻譜的基礎(chǔ)。
首先將這一小段背景音進(jìn)行分幀,并按照幀的先后順序進(jìn)行分組,每組的幀數(shù)可以為10或其他值,組的數(shù)量一般不少于5。隨后對每組背景噪聲數(shù)據(jù)幀使用傅里葉變換得到其頻譜,再將各頻譜求平均后得到背景噪聲的頻譜。
得到噪聲的頻譜后,降噪的過程就非常簡單了。上圖下面左側(cè)的圖中紅色部分即為噪聲的頻譜,黑色的線為有效語音信號的頻譜,兩者共同構(gòu)成含噪語音的頻譜。含噪語音的頻譜減去噪音頻譜后得到降噪后語音的頻譜,再使用傅里葉逆變換轉(zhuǎn)回到時域中,從而得到降噪后的語音數(shù)據(jù)。
下圖展示了降噪的效果。左右兩幅圖是降噪前后時域中的對比,左面的是含噪語音信號,從圖中可以看到噪聲還是很明顯的,右側(cè)的是降噪后的語音信號,可以看出,背景噪聲被大大的抑制了。
下面兩幅圖是頻域中的對比,其中橫軸表示時間軸,縱軸表示頻率。左面的是含噪語音,其中的亮紅色部分是有效語音,而那些像沙子一樣的紫色的部分則是噪聲,從圖中可以看出,噪聲不僅是“無時不在”,而且還是“無處不在”,也就是在各種頻率處都有分布。右側(cè)的是降噪后的語音,可以很明顯的看出,降噪前那些像沙子一樣的紫色的部分淡了很多,就是噪聲被有效的抑制了。
在實(shí)際應(yīng)用中,降噪使用的噪聲頻譜通常不是一成不變的,而是隨著降噪過程的進(jìn)行被持續(xù)修正的,即降噪的過程是自適應(yīng)的。
這樣做的原因一方面是語音數(shù)據(jù)前部的靜音長度有時不夠長,背景噪聲數(shù)據(jù)不足導(dǎo)致得到的噪聲頻譜往往不夠準(zhǔn)確。另一方面,背景噪聲往往不是絕對穩(wěn)定的,而是漸變的甚至?xí)蛔兊搅硪环N穩(wěn)定的背景噪聲。這些原因都要求在降噪的過程中對使用的噪聲頻譜做及時修正,以得到較好的降噪效果。
修正噪聲頻譜的方法是使用后繼音頻中的靜音,重復(fù)噪聲頻譜提取算法,得到新的噪聲頻譜,并將之用于修正降噪所用的噪聲頻譜。修正的方法或者是新舊頻譜進(jìn)行加權(quán)平均,或者使用新噪聲頻譜完全替換使用中的噪聲頻譜。
以上介紹的是降噪的非常簡單的原理。實(shí)際應(yīng)用中的降噪算法遠(yuǎn)比上面介紹的要復(fù)雜。現(xiàn)實(shí)中的噪聲源多種多樣,其產(chǎn)生的機(jī)理和特性也較為復(fù)雜,所以噪聲抑制在現(xiàn)今仍然是一個較為活躍的研究領(lǐng)域,各種新技術(shù)也層出不窮,比如在實(shí)際應(yīng)用中已經(jīng)使用了多麥克風(fēng)陣列來進(jìn)行噪聲抑制。
音頻壓縮
所有的音頻壓縮系統(tǒng)都要求有兩種對應(yīng)的算法,一種是運(yùn)行于源端上的編碼算法(encoding),另一種是運(yùn)行于接收端或用戶終端的解碼算法(decoding)。編碼算法和解碼算法表現(xiàn)出一定的不對稱性。
這種不對稱性一是表現(xiàn)在編碼算法和解碼算法的效率可以不同。音頻或視頻數(shù)據(jù)在存儲時,通常只被編碼一次,但將被解碼成千上萬次,所以編碼算法較復(fù)雜、效率降低、費(fèi)用昂貴是可以被接受的,但解碼算法一定要快速、簡單而且廉價。
編碼算法和解碼算法的不對稱性還表現(xiàn)在編碼和解碼的過程通常是不可逆的,也就是說,解碼后得到的數(shù)據(jù)和編碼之前的原始數(shù)據(jù)可以是不同的,只要它們聽起來或看起來是一樣的即可,這種編解碼算法通常稱為有損的,與此對應(yīng)的是,如果解碼后得到和原始數(shù)據(jù)一致的數(shù)據(jù),這種編碼和解碼稱為無損的。音視頻編解碼算法大多是有損的,因?yàn)槿淌芤恍┥倭啃畔⒌膩G失,往往可以換來壓縮率的大幅提升。
音頻信號的壓縮編碼采用了數(shù)據(jù)編碼中的一些技術(shù),如熵編碼、波形編碼、參數(shù)編碼、混合編碼、感知編碼等。本次課重點(diǎn)介紹感知編碼,相對于其他的編碼算法,感知編碼基于人耳聽覺的一些特性,去除音頻信號中的冗余,從而達(dá)到音頻壓縮的目的。相對于其他的音頻編碼算法,在人耳沒有感覺到明顯失真的條件下,可以達(dá)到10倍以上的較大壓縮率。
基于心理聲學(xué)的音頻壓縮就是利用人類聽覺系統(tǒng)的某些特點(diǎn),或者說是缺陷來實(shí)現(xiàn)對音頻的壓縮。首先來看子帶編碼。子帶(subband)是指這樣的一種頻率范圍,當(dāng)兩個音調(diào)的頻率位于一個子帶內(nèi)時,人就會把兩個音調(diào)聽成一個。更一般的情況是,如果一個復(fù)雜信號的頻率分布位于一個子帶內(nèi)時,人耳的感覺是該信號等價于一個頻率位于該子帶中心頻率處的簡單信號,這是子帶的核心內(nèi)涵。簡單說,子帶是指一個頻率范圍,頻譜位于這個范圍內(nèi)的信號可以用一個單一頻率的分量來代替。
一般等價的頻率取子帶的中心頻率,振幅取子帶內(nèi)個頻率分量振幅的加權(quán)和,更簡單的方法則是將各頻率分量的振幅直接相加,作為等價信號的振幅,這樣一個范圍內(nèi)的頻率分量用一個分量就可以代替了。
設(shè)一個信號的頻譜頻率最低值為w00,最大值為wnn。子帶編碼就是將這個頻率范圍劃分成若干子帶,然后每個子帶范圍內(nèi)的分量用一個等價的頻率分量來替換。這樣,一個具有復(fù)雜頻譜的信號可以等價為一個頻譜構(gòu)成灰常簡單的信號——頻譜被大大簡化了,需要存儲的東西就非常少了。
從以上過程不難知道,子帶如何劃分對壓縮后音頻的質(zhì)量影響很大(畢竟是近似等價)。子帶的劃分方法是子帶編碼的一個很重要的研究主題,大致可以分為等寬子帶編碼和變寬子帶編碼,見名知意,不解釋。子帶劃分后子帶數(shù)量的不同導(dǎo)致了壓縮算法的不同等級。容易知道,碼率越低壓縮率越高時,子帶數(shù)量少,同時音質(zhì)較差。相反的情況也容易理解。
其次,音頻壓縮的核心是去除冗余,所謂冗余就是語音信號中包含的不能為人耳所感知的信息,它對人類確定音色、音調(diào)等信息沒有任何幫助。比如,人耳能聽到的聲音頻率范圍為20-20KHz,無法感知頻率低于20Hz的次聲波和頻率高于20KHz的超聲波。感知編碼就是利用了人類聽覺系統(tǒng)的這類特性,達(dá)到去除音頻冗余信息的目的。
除了子帶編碼,感知編碼中的心理聲學(xué)還有:頻率屏蔽、時域屏蔽、可聽度閾值等。頻率屏蔽 頻率屏蔽在生活中處處可見,比如你在家中坐在沙發(fā)上安靜的看電視,突然,正在裝修的鄰居家一陣很刺耳的電鉆鉆墻的聲音傳來,這時你所能聽到的只有手提電鉆發(fā)出的很強(qiáng)的噪聲,盡管此時電視所發(fā)出的聲音仍然在刺激著你的耳膜,但你卻充耳不聞。也就是說,一段強(qiáng)度很高的聲音可以完全屏蔽一段強(qiáng)度較低的聲音,這種現(xiàn)象稱為頻率屏蔽。
時域屏蔽 承接前一個例子,不僅在電鉆發(fā)出聲音的時間內(nèi)人耳聽不到電視機(jī)的聲音,就是在電鉆的聲音剛停下來的一小段時間內(nèi),人耳也聽不到電視機(jī)的聲音,這種現(xiàn)象稱為時域屏蔽。
產(chǎn)生時域屏蔽的原因是人類的聽覺系統(tǒng)是一個增益可調(diào)的系統(tǒng),聽強(qiáng)度較大的聲音時,增益較低,聽強(qiáng)度較小的聲音時,增益較高,有時人類甚至借助外部手段來改變聽覺系統(tǒng)的增益,比如,捂耳朵以避免強(qiáng)度很大的聲音損傷耳膜,而屏住呼吸、側(cè)耳、以手放耳廓后更是聽較弱聲音時的常見行為。在上例中,強(qiáng)度很大的聲音剛消失時,聽覺系統(tǒng)需要一小段時間來調(diào)高增益,正是在這一小段時間內(nèi)產(chǎn)生了時域屏蔽。
可聽度閾值 設(shè)想在一個安靜的房間中,一臺由計(jì)算機(jī)控制的揚(yáng)聲器可以發(fā)出某一頻率的聲音,剛開始時揚(yáng)聲器功率較小,處于一定距離上的聽覺正常的人聽不到揚(yáng)聲器發(fā)出的聲音。然后開始逐漸增大揚(yáng)聲器的功率,當(dāng)功率增大到剛好可以被聽見的時候,記錄下此時揚(yáng)聲器的功率(聲強(qiáng)級,單位分貝),這個功率就是這個頻率下的可聽度閾值。改變揚(yáng)聲器所發(fā)音頻的頻率,重復(fù)以上實(shí)驗(yàn),最終獲得的可聽度閾值隨頻率變化的曲線如下圖所示:
由圖中可以很明顯的看出,人類的聽覺系統(tǒng)對頻率在1000-5000Hz范圍的聲音最敏感,頻率越接近兩側(cè),人類聽覺反應(yīng)越遲鈍?;剡^頭來再看頻率屏蔽的情形,這次實(shí)驗(yàn)在房間中增加一個頻率為150Hz,強(qiáng)度為60dB的信號,然后重復(fù)實(shí)驗(yàn),實(shí)驗(yàn)得出的可聽度閾值曲線如下圖所示:
從圖中很明顯的看出,可聽度閾值曲線在150Hz附近被強(qiáng)烈的扭曲了,被向上提高了很多,這意味著,本來位于可聽度閾值之上的150Hz附近的某個頻率的聲音,有可能由于150Hz的更強(qiáng)的信號的存在而變得不可聞了,也就是被屏蔽了。
感知編碼的基本規(guī)則就是,永遠(yuǎn)不需要對人耳聽不到的信號進(jìn)行編碼,就是說頻率不在可聞聲波頻率范圍內(nèi)(20-20KHz),功率低于可聽度閾值的信號或者說分量,被屏蔽的信號或者說分量,這些都是上文提到的“冗余”。音頻壓縮時,將語音信號進(jìn)行傅里葉變換后,去除低于可聽度閾值的頻率分量,只存儲和傳輸可以聽到的頻率分量。
理解了以上內(nèi)容,音頻壓縮就很容易理解了,一個信號經(jīng)過一組三角濾波器(等同于一組子帶)后,被精簡為數(shù)量很少的頻率分量。然后考察這些頻率分量,能量或者說振幅位于可聽度閾值曲線之下的直接無視(刪除該分量,因?yàn)槁牪坏剑?。再考察余下的兩兩相鄰的頻率分量,如果其中一個被旁邊的頻率屏蔽,也刪除掉。經(jīng)過以上的處理,一個復(fù)雜信號的頻譜所含有的頻率分量就很簡單了,使用很少的數(shù)據(jù)就可以存儲或者傳輸這些信息。解碼的時候使用傅里葉逆變換將上面得到的簡單頻譜重構(gòu)到時域上,得到解碼后的語音。
音頻編解碼庫
可以公開獲取的音頻編解碼開源庫很多,其特點(diǎn)和能力也有所不同,如下圖:
由圖中可以看到,AAC和MP3等走的是“高端路線”,用來對高采樣率的音樂進(jìn)行編碼,而AMR和SPEEX走的是中低端路線,可以處理16K采樣率以下的語音信號,對于語音合成、語音識別、聲紋識別等語音應(yīng)用足夠了。
科大訊飛語音云使用的是SPEEX系列,算法相關(guān)信息如下圖所示:
Speex編解碼庫壓縮率變換范圍較廣,壓縮等級可供選擇的范圍較寬,所以應(yīng)用在網(wǎng)絡(luò)狀況較為復(fù)雜的移動終端應(yīng)用中甚為合適。
-
頻率
+關(guān)注
關(guān)注
4文章
1536瀏覽量
59409 -
編碼
+關(guān)注
關(guān)注
6文章
959瀏覽量
54969 -
語音處理
+關(guān)注
關(guān)注
3文章
43瀏覽量
19367
發(fā)布評論請先 登錄
相關(guān)推薦
【「嵌入式系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)」閱讀體驗(yàn)】+ 基于語音識別的智能杯墊
射頻分析儀的技術(shù)原理和應(yīng)用場景
語音識別技術(shù)在醫(yī)療領(lǐng)域的應(yīng)用
語音識別與自然語言處理的關(guān)系
語音識別技術(shù)的應(yīng)用與發(fā)展
ASR與自然語言處理的結(jié)合
ASR語音識別技術(shù)應(yīng)用
請問VOLIB語音庫不能用來處理實(shí)時語音嗎?
語音集成電路是指什么意思
語音集成電路有哪些特點(diǎn)
語音識別和自然語言處理的區(qū)別和聯(lián)系
自然語言處理技術(shù)的原理的應(yīng)用
基于MATLAB的信號處理系統(tǒng)與分析
標(biāo)貝語音識別技術(shù)在金融領(lǐng)域中的應(yīng)用實(shí)例
![標(biāo)貝<b class='flag-5'>語音</b>識別<b class='flag-5'>技術(shù)</b>在金融領(lǐng)域中的應(yīng)用實(shí)例](https://file1.elecfans.com/web2/M00/E6/01/wKgZomZFyeKAcy__AADH2HVROGo420.png)
評論