李建鋒,唐斌
(1.北京工商大學北京102488;2.總裝備部通信研究所北京101416)
隨著多帶激勵MBE模型的成功運用,MBE語音編解碼算法也日新月易。在提高話音質(zhì)量的同時,編碼速率也在不斷地降低,從最初的8 kb/s,已經(jīng)能降到1.2 kb/s,甚至會更低[1-4]。目前比較實用的MBE算法是IMBE(Improved MBE)算法[5-6]和AMBE(Advanced MBE)算法。1997年美國DVSI公司開發(fā)了3.6 kb/s AMBE編碼算法,在此基礎上生產(chǎn)了語音編碼芯片AMBE-1000TM[7],并取得了廣泛應用;IMBE算法也是由DVSI公司開發(fā),碼速率為4.15 kb/s,其優(yōu)良的特性在商業(yè)化過程中取得了巨大成功,成為幾個全球衛(wèi)星通信服務的標準。
本方案計算MBE譜幅度參數(shù)及清濁音判決參數(shù)。在參數(shù)量化編碼時,則采用了IMBE編解碼方案,對譜幅度量化時,先進行了離散余弦變換(DCT),然后進行了矢量量化(VQ)。最終實驗測定本文算法碼速率為4.4 kb/s。
設語音信號s(n)的采樣頻率為8 kHz,每幀取160個樣點,窗函數(shù)w(n)即為基音細搜索窗(寬度取為221個樣點的哈明窗)。設加窗語音信號為sw(n),則sw(n)=w(n)×s(n)。用Sw(w)表示sw(n)的傅立葉變換,可以看成是系統(tǒng)函數(shù)Hw(w)同激勵信號譜Ew(w)的乘積,即:
而重建語音信號可以寫成:
多帶激勵編碼過程都涉及3種參數(shù)的提取,它們是基音頻率,按基音頻率各次諧波分成頻帶后每個頻帶的譜包絡參數(shù)以及每個頻帶的V/U判決信息。統(tǒng)一提取這3個參數(shù)所涉及的計算量相當大,目前在實際應用中難以實時實現(xiàn)[2,6]。一種次優(yōu)的算法是分兩步來完成參數(shù)提取計算。第一步是確定基音頻率和每個分帶的譜幅度參數(shù),第二步再對每個分帶進行V/U判決。計算的過程是要使得原始語音譜模值|Sw(w)|合成語音譜模值|Swr(w)|之差的下列加權(quán)積分達到最?。?/p>
已經(jīng)獲得了每幀語音的基音周期P,則基音頻率ω0=2π/P。對于每一個基音頻率值,將ω=-π~π分成2M個頻帶,每個頻帶的頻率下限和上限依次為am=(m-1/2)ω0以及bm=(m+1/2)ω0,m=±1,±2,…,±M。并且在每個分帶[am,bm]中保持不變[2],其值為譜幅度則第m個子帶所產(chǎn)生的擬合誤差為εm:
總的擬合誤差為:
式(6)表明,第m帶的譜值與該帶的激勵信號譜有關,若該帶為濁音帶,則可選用周期譜Pw(ω)來表示激勵信號Ewr(ω),若該帶為清音帶,激勵信號應采用理想白噪聲譜,因此最終的譜值估計還應在清濁判決后才能確定,當?shù)趍帶為濁音帶時:
當?shù)趍帶為清音帶時,由于白噪聲譜在所在頻率上保持為常數(shù),則譜幅度為:
該式實際上表示的是加窗原始語音譜幅度在該帶內(nèi)的平均值。
以上是在頻域內(nèi)推導,下面用時域采樣點進行計算。對加窗語音信號采用256點DFT
對窗函數(shù)采用16 384點DFT,以保證窗函數(shù)頻譜在頻域中移動時能有足夠的精度。
當基音頻率為ω0時,在-π~π之間有2π/ω0個諧波分量,兩個相鄰諧波之間含有256/2π個語音信號的DFT點,因此第l次諧波帶的上限和下限的計算公式:
其中[x]表示大于或等于x的最小整數(shù)。
根據(jù)式(7),可求出加窗語音激勵Pw(ω)在頻帶內(nèi)與窗主瓣包絡形狀相同,窗內(nèi)16 384點,而加窗語音256點,意味著語音改變一個樣點,窗就要改變64個樣點??梢郧蟪鲎罴炎V幅度
當?shù)趍帶為清音帶時,由式(9,10,11),則譜幅度為:
確定了基音頻率ω0和xm譜幅度后,可以利用歸一化誤差能量進行V/U判決。歸一化誤差能量定義為[2]:
若ξm小于一定的閾值,則可以判該諧波頻帶為濁音區(qū),反之為清音區(qū)。采用DFT時,式(14)表示的歸—化誤差應改成:
上式中的合成信號譜定義為[1,8]:
如果編碼速率比較低,沒有足夠的比特來表示每一個諧波頻帶的V/Uv信息,可以將幾個相鄰的諧波頻帶合并成一個帶,根據(jù)該帶的總的擬合誤差作出該帶的V/U判決。這兒采用將每幀語音信號的頻譜最多分成12個頻帶的方法,首先確定諧波個數(shù)M[1,8]:
每個頻帶通常包含3個諧波分量,則每幀所含的頻帶數(shù)K:
經(jīng)過上述語音分析,對每幀語音信號都可得到一套語音參數(shù):基音頻率ω0,V/Uv判決信息Vk,1≤k≤K,和譜幅度xm,1≤m≤M,對于ω0和Vk,采用一般的標量量化即可,分別分配8 bit和K bit。下面主要闡述譜幅度參數(shù)編解碼方法。
幅度譜的編碼主要利用幀間的相關性,首先計算預測殘差Tm,1≤m≤M,然后再對Tm進行編碼,編碼框圖如圖1所示。譜幅度編碼算法的一個重要特征是傳遞差信息,這種預測殘差反映了當前幀與過去幀在幅度譜上的差異,為了保證這種方案工作正常,編碼端要模擬解碼端的操作,用重建的過去幀的幅度譜來預測當前幀的譜幅度,圖1中的反饋路徑就給出了解碼端的部分操作。
圖1 譜幅度編碼框圖Fig.1 Block diagram of spectral amplitude coding
圖中,xm(0)是當前幀未量化的譜幅度,xm(-1)指過去的第一幀量化的譜幅度,ω0(0)和ω0(-1)指當前幀的基音頻率和過去第一幀的基音頻率。在初始化時,ω0(-1)全部置為1.0,ω0(-1)置為0.02π。Tm為[2,6,9]:
這M個預測殘差被分成6塊,每塊的長度記為Ji,1≤i≤6,分塊原則[7]如下:
第i塊的一個元素記為ci,j,1≤j≤Ji。每一塊再進行離散余弦變換,第i塊的變換長度為Ji,DCT系數(shù)記為Ci,k
現(xiàn)在將得到的DCT系數(shù)再分成兩組。第一組由每塊的第一個DCT系數(shù)組成,構(gòu)成了一個六維的矢量,稱之為PRBA(Prediction Residual Block Average)矢量;第二組由剩余的DCT系數(shù)組成。
PRBA矢量的編碼分為3步,第1步就是計算矢量元素的平均值mR:
對mR使用6比特的非均勻的標量量化器,得量化值第二步是將PRBA矢量的每一個元素分別減去,得到零均值的PRBA矢量,然后用10比特的矢量碼本對其進行矢量量化,得量化值碼本的產(chǎn)生利用LBG算法[4]。第三步是計算PRBA矢量的每個元素的量化誤差Qi:
其中Δ為量化階距,如果b落在0≤b≤2B-1范圍之外,則b取與此范圍內(nèi)的數(shù)據(jù)距離最近的值。
M-6個高階■C1,2,C1,3,…,C1,J1,…,C6,2,C6,3,…,C6,J6」DCT系數(shù)的編碼仍然采用均勻量化,每個系數(shù)分配的比特數(shù)B通過查相關比特分配表確定[2,6],DCT系數(shù)及Qi的比特分配表是根據(jù)M及它們的長時統(tǒng)計特征確定的。最后編碼值b為
如b在0≤b≤2B-1之外,則b取與此范圍內(nèi)距離最近值。
譜幅度的解碼過程是編碼過程的逆過程,如圖1所示?;纛l率ω0解碼后,根據(jù)式(17)可得M,進而根據(jù)式(23)和(24)確定塊長Ji,然后解碼PRBA矢量,則
再解碼得到高階的DCT系數(shù),就可得到6塊DCT系數(shù)Ci,k,對每塊DCT系數(shù)進行DCT反變換,可得到ci,j
將這6塊Ci,j合并成一個長度為M的矢量,記為Tm,1≤m≤M,即重建的幅度譜預測殘差。再根據(jù)式(20)確定,最后計算當前幀的幅度譜[2,6,9]:
合成語音信號sr(n)由清音部分su(n)和濁音部分sv(n)組成,合成時,這兩部分被分別合成,合成后再將其相加即可。
首先要產(chǎn)生一個白噪聲激勵,對它加窗后進行256點DFT,得到白噪聲譜Uw(m):
根據(jù)當前幀的V/Uv信息,對Uw(l)進行修正得(l)。若m頻帶為濁音段,則
若m頻帶為清音段,則[1]
其中N表示幀長。
合成語音濁音部分可用一組余弦波在時域中直接合成,[1]:
插值角頻率ωm(l,0)由本幀與上一幀第m次諧波頻率插值:
初始相位可用下式得到:
最后當前幀的合成語音sr(n)為:
取一幀實際語音,幀長20 ms,采樣率8 kHz,實際語音波形如圖2所示,僅進行語音分析合成實驗,結(jié)果如圖3所示。
對比圖2、3,原始波形與合成波形除在相位上有偏差外,頻率、幅度幾乎一致。相位偏差因采用算法沒有對語音信號相位信息進行傳遞,沒進行編參數(shù)量化、編碼,所以得到的合成語音原始語音在頻率和幅度上幾乎一致,得到的合成語音質(zhì)量當是最佳效果。
圖3 一幀合成語音波形Fig.3 A synthesized speech waveform
實驗表明:有噪聲環(huán)境下,該方法有良好的適應性,恢復語音保留了較好的講話人特征,具有較高的自然度和可信度。
[1] PAN Sheng-xi,LIU Jia,WANGZuoying,et al.A new multimodel coding algorithm based on MBE and spectral amplitude correlation between successive frames[J].Chinese Journal of Acoustics,1998,17(3):266-270.
[2] HARDWICK C J,J.A 4.8 kbps multi-band excitation speech coder[C]//Acoustics,Speech,and Signal Processing,1988.Icassp-88.,1988 International Conference on,1988:374-377.
[3] JAMROZIK M,J.Modified multiband excitation model at 2400 bps[C]//Acoustics,Speech,and Signal Processing,1997.Icassp-97.,1997 IEEE International Conference on,2.Munich,Germany,1997:1603-1606.
[4] ROWE D,SECKER P.A robust 2400bit/s MBE-LPC speech coder incorporating joint source and channel cod-ing[C]//Acoustics,Speech,and Signal Processing,1992.Icassp-92.,1992 IEEE International Conference on,2,1992:141-144.
[5] 戴懷宇,曹志剛.語音增強IMBE聲碼器研究[J].通信學報,1998,19(4):43-49.DAI Huai-yu,CAO Zhi-gang.Study of IMBE vocoder with speech enhancement[J].Journal on Communications,1998,19(4):43-49.
[6] Inmasat,Digital Voice System Inmarsat-MVoice Codec[S].Version 2.London,1991.
[7] 張連海.多帶激勵語音編碼算法研究與IMBE算法實現(xiàn)[D].鄭州:解放軍信息工程大學,2000.
[8] 袁春華.改進型多帶激勵聲碼器的研究與實現(xiàn)[D].北京:北京郵電大學,1995.