專利名稱:準周期性波形的語音壓縮方法
技術(shù)領(lǐng)域:
本發(fā)明為一種語音壓縮方法,特別是指一種準周期性波形的語音壓縮方法。
語音壓縮是語音信號處理中一項非常重要的技術(shù),幾乎只要有語音的地方,都會使用到語音壓縮技術(shù),然而,以電子辭典為例,標榜以真人發(fā)音的功能,已成為電子辭典主要訴求的特色。為了提升中低檔電子辭典在市場的競爭力,節(jié)省語音數(shù)據(jù)存儲器并提高聲音品質(zhì),一種只需簡單的模擬至數(shù)字轉(zhuǎn)換器(D/A Converter)即可實現(xiàn)即時解壓縮及播放的語音壓縮技術(shù),遂成為一被關(guān)注的議題。
本發(fā)明的語音壓縮方法,為非固定(not constant;varying)壓縮比特率(Bit Rate/Sec;bps),其平均比特率視所需的壓縮品質(zhì)而定,對不同的語音可設定不同的壓縮參數(shù),可達到低于12kbps,記憶容量約為原音(8k Hz Sampling Rate,16bit,mono;128kbps)的1/10,并維持平均信號信噪比(Signal-to-Noise Ratio;SNR)約7-10dB以上,且其解壓縮的運算量極低,目前已經(jīng)以Z80程序處理撰寫,并已實驗證明可成功的在Z80微處理器上做即時解壓縮,只需簡單的D/A Converter即可播放,不需數(shù)字信號處理器(DSP)及語音合成器(Speech Synthesizer)。非常有利于中低檔真人發(fā)音產(chǎn)品的應用。
本發(fā)明提供一種準周期性波形的語音壓縮方法,該方法至少包含下列步驟提供一語音(x),并取一段該語音的音框(x’)(音框frame,取樣的聲波信號);
計算該音框的周期,決定復制周期數(shù)(Duplicate);從該周期中找出一代表周期,并計算該代表周期的長度(L)、數(shù)據(jù)(Data)與最大值(AMPmax);計算每個該周期的最大值(AmpD)與變動量(ShiftD);及依據(jù)一編碼比特配置表進行參數(shù)編碼,其中該周期的編碼主要是以復制該代表周期的方式產(chǎn)生,依據(jù)該代表周期的該長度、該數(shù)據(jù)與該復制周期數(shù)進行編碼,并記錄每個該周期的該最大值與該變動量,最后填入FFH當作結(jié)束碼。
所述的準周期性波形的頻譜變化現(xiàn)為固定不變。
所述的該音框約20-25ms。
所述的代表周期是利用一絕對振幅差異函數(shù)(Absolute MagnitudeDifference Function;AMDF)計算出。
所述的計算每個該周期的該最大值與該變動量的步驟至少包含下列步驟(a)令D=D+1;(b)令xp’=x(MsMs+L-1);(c)找出xp’的最大值(AmpD);(d)令xp’=xp’*AMPmax/AmpD,找出周期的變動量ShiftD及DistD(步驟150),其中DistD=minshift(Σn(xp(n)-xp′(n+shift))2(xp2(n)+xp′2(n+shift)))]]>ShiftD=Indexof(minshift(Σn(xp(n)-xp′(n+shift))2(xp2(n)+xp′2(n+shift))))]]>shift~=-P/4~P/4(e)計算已編碼語音長度Ms=Ms+L+ShjftD;(f)如果D<D_min,回到步驟(a);(g)回到步驟(a)直到DistD大于Dist Thrd為止。
所述的編碼比特配置表如下所示1.若D>0,D≠FFH
其中D(Duplicate)復制份數(shù)L供復制的數(shù)據(jù)長度Data供復制的數(shù)據(jù)Amp 1第一份復制周期振幅Shjft 1第一份復制周期偏移量AmpD第D份復制周期振幅ShjftD第D份復制周期偏移量2.若D=0,表示這個音框的數(shù)據(jù)全部為零;
L零的個數(shù)
3.若D=FFH,表示語音編碼結(jié)束。
所述的原語音數(shù)據(jù)每個Sample是16時,壓縮率=數(shù)據(jù)長度/表長度=[LD+(shift1+…+shiftD)]×2/(2+L+2D)。
所述的原語音數(shù)據(jù)每個Sample是8時,壓縮率=數(shù)據(jù)長度/表長度=[LD+(shift1+…+shiftD)]/(2+L+2D)。
本發(fā)明如應用在語音合成的音素壓縮上,可先把所有可共用的音素氣音的部分移除。
本發(fā)明可以在低階的Z80微處理器上做在線(on-line)即時(real-time)解壓縮及播放。
本發(fā)明的有益效果為本發(fā)明提出一種準周期性波形的語音壓縮方法,是特別針對有聲語音信號做處理,首先,在PC上離線(off-line)對有聲語音信號做波形編碼,利用有聲語音波形準周期性(quasi-periodic)的特性,利用相鄰周期的波形的相似度,將數(shù)個周期以同一波形周期取代并記錄每個周期的振幅變化及周期變化,以此編碼方式來達到壓縮的目的。然后,可在低階的微處理器(如Z80微處理器)上做在線(on-line)即時(real-time)解壓縮及播放,不需數(shù)字信號處理器(DSP)及語音合成器(Speech Synthesizer),非常有利于中低檔真人發(fā)音產(chǎn)品的應用。
首先,輸入語音x(步驟100),設定Duplicate最小值D_min(步驟102),設定誤差邊界值(Distortion Threshold)Dist Thrd(步驟104),令已編碼語音長度Ms=0(步驟106),令Duplicate=0(步驟108),并自x(Ms)點起取一段約20-25ms的語音音框長度M(步驟110),再利用絕對振幅差異函數(shù)(Absolute Magnitude Difference Function;AMDF),找出代表的周期長度P(步驟120),其中AMDF(k)=Σn=0M-1|x′(n)-x′(n-k)|]]>P=indexof(mink(AMDF(k)))]]>k為可能的周期范圍,對8kHz取樣的語音而言,通常為k=20,21…150;M為x’的語音長度。
接著找出代表的周期xp=x’(c1c2)(步驟130),首先,找出x’的最大值A(chǔ)MPmax;接著在AMPmax位置前1/2-3/4周期間找出切點c1,并設定切點條件為x’(c1)>0且x’(c1-1)≤0;并在AMPmax位置后1/2-3/4周期間找出切點c2,并設定切點條件為x’(c2+1)>0且x’(c2)≤0。找出代表的周期xp=x’(c1c2)(步驟130)后(長度為L=c2-c1+1),接著進行計算第D個周期的最大值A(chǔ)mpD(步驟140),與周期的變動量ShiftD及DistD(步驟150),其執(zhí)行步驟為(a)令D=D+1;(b)令xp’=x(MsMs+L-1);(c)找出xp’的最大值(AmpD);(d)令xp’=xp’*AMPmax/AmpD,找出周期的變動量ShiftD及DistD(步驟150),其中DistD=minshift(Σn(xp(n)-xp′(n+shift))2(xp2(n)+xp′2(n+shift)))]]>ShiftD=Indexof(minshift(Σn(xp(n)-xp′(n+shift))2(xp2(n)+xp′2(n+shift))))]]>shift~=-P/4~P/4(e)計算已編碼語音長度Ms=Ms+L+ShiftD;(f)如果D<D_min,回到步驟(a);
(g)回到步驟(a)直到DistD大于DistThrd為止。最后,依據(jù)編碼比特配置表進行參數(shù)編碼(步驟160),其中,每個語音音框(SpeechFrame)的編碼比特配置表如表1所示1.若D>0,D≠FFH
表1其中D(Duplicate)復制份數(shù)L供復制的數(shù)據(jù)長度Data供復制的數(shù)據(jù)Amp 1第一份復制周期振幅Shift 1第一份復制周期偏移量AmpD第D份復制周期振幅ShjftD第D份復制周期偏移量若原數(shù)據(jù)每個Sample是16bits,則需先將16bits轉(zhuǎn)為8bits,若最后解壓縮發(fā)音不為8bits,則可用查表方式將8bits轉(zhuǎn)為實際的bit數(shù)。
其中,若原數(shù)據(jù)每個取樣點(Sample)是8bits,壓縮率=數(shù)據(jù)長度/表長度=[LD+(shift1+…+shiftD)]/(2+L+2D)。其中,若原數(shù)據(jù)每個取樣點(Sample)是16bits,壓縮率=數(shù)據(jù)長度/表長度=[LD+(shift1+…+shiftD)]×2/(2+L+2D)。
以原音(8k Hz Sampling Rate,16bit,正常約為128kbps)為例,L=50,D=6,Shift1~ShlftD=0其壓縮率=50*6*2/(2+50+12)=9.375倍~13.6533kbps。
2.若D=0,表示這個音框的數(shù)據(jù)全部為零。
L零的個數(shù)3.若D=FFH,表示語音編碼結(jié)束。
因此,本發(fā)明的語音壓縮方法是依據(jù)編碼比特配置表,填入復制份數(shù)(Duplicate)、L=xp長度、Data=xp、AmpD、ShiftD,最后填入FFH當作結(jié)束碼,完成語音壓縮的編碼程序。
圖2為本發(fā)明的準周期性波形的語音解碼流程圖,首先輸入語音壓縮碼xc(步驟200);再讀取復制周期(Duplicate)(步驟210);接著判斷Duplicate=FFH?(步驟220);如果Duplicate=FFH,則表示結(jié)束,否則進行讀取長度L(步驟230);再進行判斷Duplicate=0H?(步驟240),如果Duplicate=0H,則讀取下一個Byte=L,并產(chǎn)生語音L個0(步驟245),否則進行讀取長度L的語音(步驟250)。當Duplicate>0時,進行讀下一個Byte=L,并讀L個Byte=xp(n),n=0,1,…,L-1(步驟250),接著讀取振幅AmpD(步驟260),以及讀取ShiftD(步驟270),其中,長度L的語音乘以振幅AmpD后,再通過一延遲(步驟280)位移ShiftD個取樣點(Samples),此ShiftD可以是大于等于或小于零,若大于零則長度L的語音向后位移,并在位移處補零;若小于零則長度L的語音向前位移,并截掉與前語音重疊處,最后合成語音長度L+ShiftD(步驟290),若以數(shù)學式表示,則xs(n)=xp(n+ShiftD)*AmpD,
n=-ShiftD,…,0,1,…,L-1,令Duplicate=Duplicate-1((步驟292),并再加以判斷Duplicate=0H?(步驟295),如果是,則回到步驟210,否則,繼續(xù)執(zhí)行步驟260,并直到Duplicate=FFH為止。
現(xiàn)以二實施例說明本發(fā)明的準周期性波形的語音壓縮方法的實例驗證。
以一語音[a]為例(8k Hz Sampling Rate,16bits,mono長度411ms)本發(fā)明的第一實施例設定Dist Thrd=0.1;限定D_min=6,解壓縮后后SNR~=10dB,Bit-Rate~=13.25kbps,圖3表其原語音與解壓縮后的語音相較波形圖,其中,以前500個取樣點為例,1代表原語音,2代表解壓縮后的語音,可看出1與2重合的周期,即為代表的周期(用來復制的周期)。
本發(fā)明的第二實施例設定Dist Thrd=0.5;限定D_min=6,解壓縮后SNR~=7dB,Bit-Rate~=6.4kbps,圖4為其原語音與解壓縮后的語音相較波形圖,其中,以前500個取樣點為例,1代表原語音,2代表解壓縮后的語音,可看出1與2重合的周期,即是代表的周期(用來復制的周期)。
本壓縮法已成功的應用在語音合成的音素壓縮上,可先把所有的音素氣音的部份移除(例如fa、fe、fai中f的氣音),因為他們的氣音部份是可共用的,因此不需壓縮,且其所占空間甚小。把有聲語音的部份編碼后,約可壓縮原音7~10倍左右,Bit-Rate約為15kbps??砂言炯s70MBytes的音素文件,壓成約7~10Mbytes,音質(zhì)保持在SNR7-20dB以上。
權(quán)利要求
1.一種準周期性波形的語音壓縮方法,該方法至少包含下列步驟提供一語音(x),并取一段該語音的音框(x’);計算該音框的周期,決定復制周期數(shù);從該周期中找出一代表周期,并計算該代表周期的長度(L)、數(shù)據(jù)與最大值(AMPmax);計算每個該周期的最大值(AmpD)與變動量(ShiftD);及依據(jù)一編碼比特配置表進行參數(shù)編碼,其中該周期的編碼主要是以復制該代表周期的方式產(chǎn)生,依據(jù)該代表周期的該長度、該數(shù)據(jù)與該復制周期數(shù)進行編碼,并記錄每個該周期的該最大值與該變動量,最后填入FFH當作結(jié)束碼。
2.如權(quán)利要求1所述的準周期性波形的語音壓縮方法,其特征在于所述的準周期性波形的頻譜變化現(xiàn)為固定不變。
3.如權(quán)利要求1所述的準周期性波形的語音壓縮方法,其特征在于所述的該音框約20-25ms。
4.如權(quán)利要求1所述的準周期性波形的語音壓縮方法,其特征在于所述的代表周期是利用一絕對振幅差異函數(shù)計算出。
5.如權(quán)利要求1所述的準周期性波形的語音壓縮方法,其特征在于計算每個該周期的該最大值與該變動量的步驟至少包含下列步驟(a)令D=D+1;(b)令xp’=x(MsMs+L-1);(c)找出xp’的最大值(AmpD);(d)令xp’=xp’*AMPmax/AmpD,找出周期的變動量ShiftD及DistD,其中DistD=minshift(Σn(xp(n)-xp′(n+shift))2(xp2(n)+xp′2(n+shift)))]]>ShiftD=Indexof(minshift(Σn(xp(n)-xp′(n+shift))2(xp2(n)+xp′2(n+shift))))]]>shift~=-P/4~P/4(e)計算已編碼語音長度Ms=Ms+L+ShiftD;(f)如果D<D_min,回到步驟(a);(g)回到步驟(a)直到DistD大于Dist Thrd為止。
6.如權(quán)利要求1所述的準周期性波形的語音壓縮方法,其特征在于所述的編碼比特配置表如下所示(1)若D>0,D≠FFH
其中D復制份數(shù);L供復制的數(shù)據(jù)長度;Data供復制的數(shù)據(jù);Amp 1第一份復制周期振幅;Shift 1第一份復制周期偏移量;AmpD第D份復制周期振幅;ShiftD第D份復制周期偏移量;(2)若D=0,表示這個音框的數(shù)據(jù)全部為零
L零的個數(shù);(3)若D=FFH,表示語音編碼結(jié)束。
7.如權(quán)利要求6所述的準周期性波形的語音壓縮方法,其特征在于所述的原語音數(shù)據(jù)每個取樣點是16比特時,壓縮率=數(shù)據(jù)長度/表長度=[LD+(shift1+…+shiftD)]×2/(2+L+2D)。
8.如權(quán)利要求6所述的準周期性波形的語音壓縮方法,其特征在于所述的原語音數(shù)據(jù)每個取樣點是8比特時,壓縮率=數(shù)據(jù)長度/表長度=[LD+(shift1+…+shiftD)]/(2+L+2D)。
9.如權(quán)利要求1所述的準周期性波形的語音壓縮方法,其特征在于應用在語音合成的音素壓縮上,可先把所有可共用的音素氣音的部分移除。
10.如權(quán)利要求1所述的準周期性波形的語音壓縮方法,其特征在于更可以在低階的Z80微處理器上做在線即時解壓縮及播放。
全文摘要
一種準周期性波形的語音壓縮方法,是在一準周期性語音波形中取一個代表周期,其他的周期則用復制(Duplicate)的方式產(chǎn)生,只記錄振幅的變化及微小的周期變動,以達到壓縮的目的。并可在Z80微處理器上做即時解壓縮,只需簡單的模擬至數(shù)字轉(zhuǎn)換器(DAC)即可播放,不需數(shù)字信號處理器(DSP)及語音合成器(Speech Synthesizer),非常有利于中低檔真人發(fā)音產(chǎn)品的應用。
文檔編號G10L21/00GK1404033SQ01130758
公開日2003年3月19日 申請日期2001年8月23日 優(yōu)先權(quán)日2001年8月23日
發(fā)明者楊凰琳 申請人:無敵科技股份有限公司