專利名稱:一種語音信號檢測方法
技術(shù)領域:
本發(fā)明涉及音頻傳輸領域,特別是涉及一種語音信號檢測方法。
背景技術(shù):
通常人們互相交談過程中,語音信號只占整個音頻流的50%,而在視頻會議或者視頻聊天等VOIP(Voice Over IP,以IP網(wǎng)絡為載體的語音傳輸技術(shù))業(yè)務中,甚至會更低。因此把語音信號從音頻流中提取出來,對于節(jié)約系統(tǒng)資源是十分必要的。將語音信號從音頻流中提取出來后,則只需要保存、處理所述語音信號的數(shù)據(jù),其他部分的數(shù)據(jù)則可以忽略掉,從而降低了存儲空間。對于VOIP業(yè)務,還可以減少數(shù)據(jù)傳輸量,節(jié)約網(wǎng)絡帶寬,減少網(wǎng)絡堵塞,提高語音質(zhì)量。
為了達到這一目的,目前本領域(例如應用十分廣泛的語音編碼器GSM、G273)應用一種語音信號判斷方法VAD(Voice Active Detection,語音活動檢測)。它是根據(jù)語音信號的特性,將音頻流按25毫秒等分成若干幀,并對每幀的平均能量、平均過零率等參數(shù)進行分析計算,將計算結(jié)果與事先設定的閥值比較,如果高于已設定的閥值,則認為是語音信號幀,否則認為是靜音幀。采用VAD技術(shù),編解碼器可以對語音信號幀進行正常的編碼,對靜音幀則只需標記為靜音幀,這樣使數(shù)據(jù)量大為降低,使編碼效率大為提高。然而,在多數(shù)情況下,VAD技術(shù)并不能夠準確有效地判斷語音信號,這是由于音頻信號的來源錯綜復雜,而作為語音信號幀和靜音幀判斷標準的語音能量閥值是事先設定好的,不能根據(jù)實際情況動態(tài)修改,所以導致語音信號的判斷不夠準確,無法有效的屏蔽噪音,使得音頻流回放時仍然伴有連續(xù)的噪聲。
在實際獲取、處理音頻流時,首先,說話人的環(huán)境不同,會有各種各樣的噪音。如公路的汽車轟鳴聲、機房里的機器噪音、雨天時的下雨聲等等。這些可能是有規(guī)律的連續(xù)噪音,也可能是無規(guī)律的突發(fā)噪音,這些背景音會不同程度的影響語音質(zhì)量。其次,音頻采集設備也可能產(chǎn)出噪音。例如50Hz或60Hz電源就是主要的噪音源,組成采集設備的電子器件也能產(chǎn)生噪音,這就是為什么有些計算機在沒有插麥克風的情況下,仍然可以錄出噪音的原因。另外,音頻采集設備的做工、選材以及類型不同所產(chǎn)生的噪音影響也不同。常見計算機音頻采集設備有聲卡、采集卡以及內(nèi)嵌在攝像頭的采集設備。其中聲卡應用最為廣泛,已成為計算機的標準配置,而采集卡采集聲音質(zhì)量最好,內(nèi)嵌在攝像頭中的采集設備采集聲音質(zhì)量較差。最后,聲音在數(shù)模轉(zhuǎn)換時也會引入噪音。聲音在空氣中以波的形式傳播,是一種模擬信號,經(jīng)過采集設備采集后轉(zhuǎn)換成數(shù)字信號,這就需要采樣和量化。人耳的聽覺范圍在20-20KHz,根據(jù)NYQUIST(奈奎斯特)抽樣定律要保證聲音不失真,就必須用44KHz左右采樣頻率,由于人的語音頻率范圍在300-3400Hz,所以對人聲的采樣大多數(shù)情況下采用8KHz的采樣頻率。采樣后需要對每個采樣點進行量化,常用的量化方式有兩種,一種8位量化,另一種16位量化。采用的位數(shù)越少,失真越大,引入越大的噪音,目前,絕大多數(shù)采用的是16位量化方式。
圖1所示為日常生活中錄制的語音的音頻流波形圖,錄制的環(huán)境是辦公室,伴有機器轟鳴聲,采集設備是內(nèi)嵌式的,噪音信號比較強,采用VAD技術(shù)無法有效的識別其中的語音信號和噪音信號,因此在回放時伴有大量連續(xù)的噪音。
基于VAD技術(shù),為了達到更好的語音效果,有些VOIP系統(tǒng)對其做了一些改進,其提供了一種自動控制麥克風音量技術(shù),也就是判斷噪音值,當噪音較大時,則自動降低麥克風的采集音量。這種技術(shù)可以使得噪音降低,聽覺上相對較好,但也同時降低了語音信號的能量而導致語音音量下降,無法聽清語音信息。
發(fā)明內(nèi)容
本發(fā)明提供一種語音信號檢測方法,用以解決現(xiàn)有技術(shù)中作為語音信號幀和靜音幀判斷標準的語音能量閥值不能根據(jù)實際情況動態(tài)修改,導致語音信號的判斷不夠準確,無法有效屏蔽噪音的問題。
本發(fā)明提供的語音信號檢測方法,包括下列步驟A、獲取一檢測周期內(nèi)的音頻流數(shù)據(jù),并按時間等分成若干幀,計算出每一幀音頻流數(shù)據(jù)的能量值,并與語音能量閥值比較;若大于等于所述語音能量閥值,則標識為語音幀,否則標識為靜音幀;B、統(tǒng)計當前周期內(nèi)大于等于所述語音能量閥值的幀數(shù)和小于所述語音能量閥值的幀數(shù);若大于等于所述語音能量閥值的幀數(shù)多,則取該周期內(nèi)各幀的最大能量值與當前語音能量閥值的平均值作為下一個檢測周期的語音能量閥值;否則,取該周期內(nèi)內(nèi)各幀的最小能量值與當前語音能量閥值的平均值作為下一個檢測周期的語音能量閥值;C、轉(zhuǎn)至步驟A,重復以上檢測過程,直至全部音頻流數(shù)據(jù)處理完畢。
所述語音能量閥值的初始值為一預設值。
所述步驟B中統(tǒng)計當前周期內(nèi)大于等于所述語音能量閥值的幀數(shù)和小于所述語音能量閥值的幀數(shù),具體方法為設置一個第一計數(shù)器,預設初始值為0,若當前幀的能量值大于等于當前語音能量閥值,則使該計數(shù)器加1;當前周期內(nèi)的全部幀比較完畢后,該第一計數(shù)器的值即為當前周期內(nèi)大于等于所述語音能量閥值的幀數(shù);設置一個第二計數(shù)器,預設初始值為0,若當前幀的能量值小于當前語音能量閥值,則使該計數(shù)器加1;當前周期內(nèi)的全部幀比較完畢后,該第二計數(shù)器的值即為當前周期內(nèi)小于所述語音能量閥值的幀數(shù)。
所述計算出每一幀音頻流數(shù)據(jù)的能量值,具體方法為對該幀中的每一個采樣點的幅值平方后,再加權(quán)平均得到。
所述計算出每一幀音頻流數(shù)據(jù)的能量值,具體方法為對該幀中的每一個采樣點的幅值取絕對值后,再加權(quán)平均得到。
所述一幀數(shù)據(jù)為連續(xù)2毫秒的音頻流數(shù)據(jù)。
所述檢測周期為500毫秒。
本發(fā)明將一檢測周期內(nèi)的各幀的能量值分別與當前語音能量閥值進行比較,得出能量值大于及小于當前語音能量閥值的幀數(shù),再將二者進行比較,若能量值大于當前語音能量閥值的幀數(shù)多,則取該檢測周期內(nèi)各幀的最大能量值與當前語音能量閥值的平均值作為新的語音能量閥值,否則取該檢測周期內(nèi)各幀的最小能量值與當前語音能量閥值的平均值作為新的語音能量閥值;利用這種方法在處理音頻流的過程中不斷循環(huán),可以每隔一個規(guī)定時間(檢測周期)更改一次語音能量閥值,使得作為語音信號幀和靜音幀判斷標準的語音能量閥值不再是一個事先設定好的固定值,而是隨著實際情況的變化,相應實時動態(tài)地改變,從而達到更加準確的辨別語音信號的效果,進而達到有效屏蔽噪音信號,提高語音質(zhì)量的目的。
圖1所示為日常生活中音頻流波形圖;圖2所示為本發(fā)明方法步驟流程圖;圖3所示為本發(fā)明方法中新閥值計算流程圖。
具體實施例方式
本發(fā)明涉及一種語音信號檢測方法,圖2為本發(fā)明方法的步驟流程圖,圖3為本發(fā)明方法中新閥值計算流程圖。下面結(jié)合附圖2和附圖3,描述本發(fā)明方法的具體實施方法。
S1、獲取一檢測周期內(nèi)的音頻流數(shù)據(jù),并按時間等分成若干幀,計算出每一幀音頻流數(shù)據(jù)的能量值,并與語音能量閥值比較;若大于等于所述語音能量閥值,則標識為語音幀,否則標識為靜音幀。
由于語音信號的復雜性,通常情況下無規(guī)律可尋,但在短時情況下是具有規(guī)律性的,所以為了便于分析處理,需要對音頻流進行分割。例如將音頻流按時間為2ms/幀進行分割,這樣在采樣率為8KHz時,每幀可以采集到16個樣本,而在采樣率為16KHz時,則每幀可以采集到32個樣本。由于本發(fā)明是按時間片進行數(shù)據(jù)幀分割,所以可以適應于各種采樣頻率下的語音檢測。
本發(fā)明預定義一個檢測周期,并預設一個語音能量閥值初始值。所述檢測周期,例如可以是500毫秒,該檢測周期不宜設置太短,因為設定的時間太短會導致頻繁的修改語音能量閥值,丟失語音信號的相關(guān)性,造成誤將大量語音信號判為靜音信號;也不宜設置太長,因為設定的時間過長,則在音頻流進程時間內(nèi)語音能量閥值的變更次數(shù)太少,造成誤將大量靜音信號誤判為語音信號,這樣就失去了動態(tài)修改語音能量閥值的意義。
以音頻流按2ms/幀進行分割為例,先取第一個2ms的音頻流數(shù)據(jù),即第一幀音頻流數(shù)據(jù),計算出該幀音頻流數(shù)據(jù)的能量值,具體計算方法有如下兩種方法之一對這一幀中的每一個采樣點的幅值平方后,再加權(quán)平均;其計算公式為W=1NΣi=1NS2]]>方法之二對這一幀中的每一個采樣點的幅值取絕對值后,再加權(quán)平均;其計算公式為W=1NΣi=1N|S|]]>式中N表示在所述一幀中采樣的個數(shù);S表示采樣點的幅值;得到該幀音頻流數(shù)據(jù)的能量值W。
采用第一種計算方法得到的結(jié)果比較精確,后續(xù)步驟達到的效果較好,但其運算較復雜,對系統(tǒng)資源的消耗較大;采用第二種計算方法得到的結(jié)果精確度相對較差,但運算過程簡單,對系統(tǒng)要求不高。用戶可根據(jù)自身條件及要求選擇一種計算方法。
計算得出當前幀音頻流數(shù)據(jù)的能量值后,若該幀的能量值大于等于當前語音能量閥值,則標識該幀為語音幀;同時,設置一個大于等于當前語音能量閥值的幀計數(shù)器,預設初始值為0,若當前幀的能量值大于等于當前語音能量閥值,則使該計數(shù)器加1。若當前幀的能量值小于當前語音能量閥值,則標識該幀為靜音幀;同時設置一個小于當前語音能量閥值的幀計數(shù)器,預設初始值為0,若當前幀的能量值小于當前語音能量閥值,則使該計數(shù)器加1。如此循環(huán),判斷該檢測周期內(nèi)的每一幀是語音幀或是靜音幀。
S2、根據(jù)當前檢測周期內(nèi)統(tǒng)計的數(shù)據(jù),計算并變更語音能量閥值。
結(jié)合上一步驟判斷是語音幀或是靜音幀的過程,在計算得到第一幀音頻流數(shù)據(jù)的能量值后,將其置為當前最大能量值及最小能量值。
處理完第一幀音頻流數(shù)據(jù)后,取第二幀音頻流數(shù)據(jù),通過上述公式計算得出第二幀音頻流數(shù)據(jù)的能量值。將其與當前最大能量值及最小能量值分別比較,若大于當前最大能量值,則將其置為新的最大能量值,若小于當前最小能量值,則將其置為新的最小能量值;與此同時將該能量值與當前語音能量閥值相比較,若大于等于當前語音能量閥值,則將大于等于當前語音能量閥值的幀計數(shù)器加1,若小于當前語音能量閥值,則將小于當前語音能量閥值的幀計數(shù)器加1。
如此循環(huán),直到設定的500ms時間到達,即處理了250個音頻幀后,對所述的兩個計數(shù)器的計數(shù)值進行比較,若大于等于當前語音能量閥值的計數(shù)器統(tǒng)計的幀數(shù)比小于當前語音能量閥值的計數(shù)器統(tǒng)計的幀數(shù)要多,則取該500ms內(nèi)各幀的最大能量值與當前語音能量閥值的平均值作為下一個檢測周期的語音能量閥值,否則取該500ms內(nèi)各幀的最小能量值與當前語音能量閥值的平均值作為下一個檢測周期的語音能量閥值。這樣在第一個500ms到達時,原預設的語音能量閥值被更新為通過對實時采集到的語音信號量化后,計算、統(tǒng)計得到的新的能量值。
S3、轉(zhuǎn)至步驟S1,重復以上檢測過程,直至全部音頻流數(shù)據(jù)處理完畢。
在對第一個500ms內(nèi)的數(shù)據(jù)進行統(tǒng)計、計算并變更了語音能量閥值后,將進入第二個500ms,在進入第二個500ms之前需要對所述兩個計數(shù)器及當前最大能量值和當前最小能量值清零,確保第二個500ms內(nèi)的數(shù)據(jù)統(tǒng)計準確。在這個500ms的時間內(nèi),則以上一500ms更新后的語音能量閥值為比較對象,以此類推,不斷根更新語音能量閥值,直至所述音頻流處理完畢。
采用本方法可以每隔500ms對語音能量閥值進行一次更新,這樣可以適應各種復雜的語音環(huán)境,輸出更好的語音效果。
權(quán)利要求
1.一種語音信號檢測方法,其特征在于包括下列步驟A、獲取一檢測周期內(nèi)的音頻流數(shù)據(jù),并按時間等分成若干幀,計算出每一幀音頻流數(shù)據(jù)的能量值,并與語音能量閥值比較;若大于等于所述語音能量閥值,則標識為語音幀,否則標識為靜音幀;B、統(tǒng)計當前周期內(nèi)大于等于所述語音能量閥值的幀數(shù)和小于所述語音能量閥值的幀數(shù);若大于等于所述語音能量閥值的幀數(shù)多,則取該周期內(nèi)各幀的最大能量值與當前語音能量閥值的平均值作為下一個檢測周期的語音能量閥值;否則,取該周期內(nèi)內(nèi)各幀的最小能量值與當前語音能量閥值的平均值作為下一個檢測周期的語音能量閥值;C、轉(zhuǎn)至步驟A,重復以上檢測過程,直至全部音頻流數(shù)據(jù)處理完畢。
2.如權(quán)利要求1所述的方法,其特征在于,所述語音能量閥值的初始值為一預設值。
3.如權(quán)利要求2所述的方法,其特征在于,所述步驟B中統(tǒng)計當前周期內(nèi)大于等于所述語音能量閥值的幀數(shù)和小于所述語音能量閥值的幀數(shù),具體方法為設置一個第一計數(shù)器,預設初始值為0,若當前幀的能量值大于等于當前語音能量閥值,則使該計數(shù)器加1;當前周期內(nèi)的全部幀比較完畢后,該第一計數(shù)器的值即為當前周期內(nèi)大于等于所述語音能量閥值的幀數(shù);設置一個第二計數(shù)器,預設初始值為0,若當前幀的能量值小于當前語音能量閥值,則使該計數(shù)器加1;當前周期內(nèi)的全部幀比較完畢后,該第二計數(shù)器的值即為當前周期內(nèi)小于所述語音能量閥值的幀數(shù)。
4.如權(quán)利要求1所述的方法,其特征在于,所述計算出每一幀音頻流數(shù)據(jù)的能量值,具體方法為對該幀中的每一個采樣點的幅值平方后,再加權(quán)平均得到。
5.如權(quán)利要求1所述的方法,其特征在于,所述計算出每一幀音頻流數(shù)據(jù)的能量值,具體方法為對該幀中的每一個采樣點的幅值取絕對值后,再加權(quán)平均得到。
6.如權(quán)利要求1所述的方法,其特征在于,所述一幀數(shù)據(jù)為連續(xù)2毫秒的音頻流數(shù)據(jù)。
7.如權(quán)利要求1所述的方法,其特征在于,所述檢測周期為500毫秒。
全文摘要
本發(fā)明公開了一種語音信號檢測方法,用以解決現(xiàn)有技術(shù)中作為語音信號幀和靜音幀判斷標準的語音能量閥值不能根據(jù)實際情況動態(tài)修改,導致語音信號的判斷不夠準確的問題。本發(fā)明方法先獲取一檢測周期內(nèi)的音頻流數(shù)據(jù),并按時間等分成若干幀,計算出每一幀的能量值,并與語音能量閥值比較,確定語音幀;再將所述檢測周期內(nèi)的每一幀的能量值分別與語音能量閥值相比較,若大于等于當前語音能量閥值的幀數(shù)多,則取該檢測周期內(nèi)各幀的最大能量值與當前語音能量閥值的平均值作為下一檢測周期的語音能量閥值,否則取該檢測周期內(nèi)各幀的最小能量值與當前語音能量閥值的平均值;不斷循環(huán),直至所述音頻流處理完畢。
文檔編號G10L11/02GK1622193SQ20041010253
公開日2005年6月1日 申請日期2004年12月24日 優(yōu)先權(quán)日2004年12月24日
發(fā)明者施健標, 楊勁松, 傅群, 焉勇 申請人:北京中星微電子有限公司