準周期性波形的語音壓縮方法
2023-09-10 07:16:50 2
專利名稱:準周期性波形的語音壓縮方法
技術領域:
本發明為一種語音壓縮方法,特別是指一種準周期性波形的語音壓縮方法。
語音壓縮是語音信號處理中一項非常重要的技術,幾乎只要有語音的地方,都會使用到語音壓縮技術,然而,以電子辭典為例,標榜以真人發音的功能,已成為電子辭典主要訴求的特色。為了提升中低檔電子辭典在市場的競爭力,節省語音數據存儲器並提高聲音品質,一種只需簡單的模擬至數字轉換器(D/A Converter)即可實現即時解壓縮及播放的語音壓縮技術,遂成為一被關注的議題。
本發明的語音壓縮方法,為非固定(not constant;varying)壓縮比特率(Bit Rate/Sec;bps),其平均比特率視所需的壓縮品質而定,對不同的語音可設定不同的壓縮參數,可達到低於12kbps,記憶容量約為原音(8k Hz Sampling Rate,16bit,mono;128kbps)的1/10,並維持平均信號信噪比(Signal-to-Noise Ratio;SNR)約7-10dB以上,且其解壓縮的運算量極低,目前已經以Z80程序處理撰寫,並已實驗證明可成功的在Z80微處理器上做即時解壓縮,只需簡單的D/A Converter即可播放,不需數位訊號處理器(DSP)及語音合成器(Speech Synthesizer)。非常有利於中低檔真人發音產品的應用。
本發明提供一種準周期性波形的語音壓縮方法,該方法至少包含下列步驟提供一語音(x),並取一段該語音的音框(x』)(音框frame,取樣的聲波信號);
計算該音框的周期,決定複製周期數(Duplicate);從該周期中找出一代表周期,並計算該代表周期的長度(L)、數據(Data)與最大值(AMPmax);計算每個該周期的最大值(AmpD)與變動量(ShiftD);及依據一編碼比特配置表進行參數編碼,其中該周期的編碼主要是以複製該代表周期的方式產生,依據該代表周期的該長度、該數據與該複製周期數進行編碼,並記錄每個該周期的該最大值與該變動量,最後填入FFH當作結束碼。
所述的準周期性波形的頻譜變化現為固定不變。
所述的該音框約20-25ms。
所述的代表周期是利用一絕對振幅差異函數(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)+xp2(n+shift)))]]>ShiftD=Indexof(minshift(n(xp(n)-xp(n+shift))2(xp2(n)+xp2(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)複製份數L供複製的數據長度Data供複製的數據Amp 1第一份複製周期振幅Shjft 1第一份複製周期偏移量AmpD第D份複製周期振幅ShjftD第D份複製周期偏移量2.若D=0,表示這個音框的數據全部為零;
L零的個數
3.若D=FFH,表示語音編碼結束。
所述的原語音數據每個Sample是16時,壓縮率=數據長度/表長度=[LD+(shift1+…+shiftD)]×2/(2+L+2D)。
所述的原語音數據每個Sample是8時,壓縮率=數據長度/表長度=[LD+(shift1+…+shiftD)]/(2+L+2D)。
本發明如應用在語音合成的音素壓縮上,可先把所有可共用的音素氣音的部分移除。
本發明可以在低階的Z80微處理器上做在線(on-line)即時(real-time)解壓縮及播放。
本發明的有益效果為本發明提出一種準周期性波形的語音壓縮方法,是特別針對有聲語音信號做處理,首先,在PC上離線(off-line)對有聲語音信號做波形編碼,利用有聲語音波形準周期性(quasi-periodic)的特性,利用相鄰周期的波形的相似度,將數個周期以同一波形周期取代並記錄每個周期的振幅變化及周期變化,以此編碼方式來達到壓縮的目的。然後,可在低階的微處理器(如Z80微處理器)上做在線(on-line)即時(real-time)解壓縮及播放,不需數位訊號處理器(DSP)及語音合成器(Speech Synthesizer),非常有利於中低檔真人發音產品的應用。
首先,輸入語音x(步驟100),設定Duplicate最小值D_min(步驟102),設定誤差邊界值(Distortion Threshold)Dist Thrd(步驟104),令已編碼語音長度Ms=0(步驟106),令Duplicate=0(步驟108),並自x(Ms)點起取一段約20-25ms的語音音框長度M(步驟110),再利用絕對振幅差異函數(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』的最大值AMPmax;接著在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個周期的最大值AmpD(步驟140),與周期的變動量ShiftD及DistD(步驟150),其執行步驟為(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)+xp2(n+shift)))]]>ShiftD=Indexof(minshift(n(xp(n)-xp(n+shift))2(xp2(n)+xp2(n+shift))))]]>shift~=-P/4~P/4(e)計算已編碼語音長度Ms=Ms+L+ShiftD;(f)如果D<D_min,回到步驟(a);
(g)回到步驟(a)直到DistD大於DistThrd為止。最後,依據編碼比特配置表進行參數編碼(步驟160),其中,每個語音音框(SpeechFrame)的編碼比特配置表如表1所示1.若D>0,D≠FFH
表1其中D(Duplicate)複製份數L供複製的數據長度Data供複製的數據Amp 1第一份複製周期振幅Shift 1第一份複製周期偏移量AmpD第D份複製周期振幅ShjftD第D份複製周期偏移量若原數據每個Sample是16bits,則需先將16bits轉為8bits,若最後解壓縮發音不為8bits,則可用查表方式將8bits轉為實際的bit數。
其中,若原數據每個取樣點(Sample)是8bits,壓縮率=數據長度/表長度=[LD+(shift1+…+shiftD)]/(2+L+2D)。其中,若原數據每個取樣點(Sample)是16bits,壓縮率=數據長度/表長度=[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,表示這個音框的數據全部為零。
L零的個數3.若D=FFH,表示語音編碼結束。
因此,本發明的語音壓縮方法是依據編碼比特配置表,填入複製份數(Duplicate)、L=xp長度、Data=xp、AmpD、ShiftD,最後填入FFH當作結束碼,完成語音壓縮的編碼程序。
圖2為本發明的準周期性波形的語音解碼流程圖,首先輸入語音壓縮碼xc(步驟200);再讀取複製周期(Duplicate)(步驟210);接著判斷Duplicate=FFH?(步驟220);如果Duplicate=FFH,則表示結束,否則進行讀取長度L(步驟230);再進行判斷Duplicate=0H?(步驟240),如果Duplicate=0H,則讀取下一個Byte=L,並產生語音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),若以數學式表示,則xs(n)=xp(n+ShiftD)*AmpD,
n=-ShiftD,…,0,1,…,L-1,令Duplicate=Duplicate-1((步驟292),並再加以判斷Duplicate=0H?(步驟295),如果是,則回到步驟210,否則,繼續執行步驟260,並直到Duplicate=FFH為止。
現以二實施例說明本發明的準周期性波形的語音壓縮方法的實例驗證。
以一語音[a]為例(8k Hz Sampling Rate,16bits,mono長度411ms)本發明的第一實施例設定Dist Thrd=0.1;限定D_min=6,解壓縮後後SNR~=10dB,Bit-Rate~=13.25kbps,圖3表其原語音與解壓縮後的語音相較波形圖,其中,以前500個取樣點為例,1代表原語音,2代表解壓縮後的語音,可看出1與2重合的周期,即為代表的周期(用來複製的周期)。
本發明的第二實施例設定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。可把原本約70MBytes的音素文件,壓成約7~10Mbytes,音質保持在SNR7-20dB以上。
權利要求
1.一種準周期性波形的語音壓縮方法,該方法至少包含下列步驟提供一語音(x),並取一段該語音的音框(x』);計算該音框的周期,決定複製周期數;從該周期中找出一代表周期,並計算該代表周期的長度(L)、數據與最大值(AMPmax);計算每個該周期的最大值(AmpD)與變動量(ShiftD);及依據一編碼比特配置表進行參數編碼,其中該周期的編碼主要是以複製該代表周期的方式產生,依據該代表周期的該長度、該數據與該複製周期數進行編碼,並記錄每個該周期的該最大值與該變動量,最後填入FFH當作結束碼。
2.如權利要求1所述的準周期性波形的語音壓縮方法,其特徵在於所述的準周期性波形的頻譜變化現為固定不變。
3.如權利要求1所述的準周期性波形的語音壓縮方法,其特徵在於所述的該音框約20-25ms。
4.如權利要求1所述的準周期性波形的語音壓縮方法,其特徵在於所述的代表周期是利用一絕對振幅差異函數計算出。
5.如權利要求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)+xp2(n+shift)))]]>ShiftD=Indexof(minshift(n(xp(n)-xp(n+shift))2(xp2(n)+xp2(n+shift))))]]>shift~=-P/4~P/4(e)計算已編碼語音長度Ms=Ms+L+ShiftD;(f)如果D<D_min,回到步驟(a);(g)回到步驟(a)直到DistD大於Dist Thrd為止。
6.如權利要求1所述的準周期性波形的語音壓縮方法,其特徵在於所述的編碼比特配置表如下所示(1)若D>0,D≠FFH
其中D複製份數;L供複製的數據長度;Data供複製的數據;Amp 1第一份複製周期振幅;Shift 1第一份複製周期偏移量;AmpD第D份複製周期振幅;ShiftD第D份複製周期偏移量;(2)若D=0,表示這個音框的數據全部為零
L零的個數;(3)若D=FFH,表示語音編碼結束。
7.如權利要求6所述的準周期性波形的語音壓縮方法,其特徵在於所述的原語音數據每個取樣點是16比特時,壓縮率=數據長度/表長度=[LD+(shift1+…+shiftD)]×2/(2+L+2D)。
8.如權利要求6所述的準周期性波形的語音壓縮方法,其特徵在於所述的原語音數據每個取樣點是8比特時,壓縮率=數據長度/表長度=[LD+(shift1+…+shiftD)]/(2+L+2D)。
9.如權利要求1所述的準周期性波形的語音壓縮方法,其特徵在於應用在語音合成的音素壓縮上,可先把所有可共用的音素氣音的部分移除。
10.如權利要求1所述的準周期性波形的語音壓縮方法,其特徵在於更可以在低階的Z80微處理器上做在線即時解壓縮及播放。
全文摘要
一種準周期性波形的語音壓縮方法,是在一準周期性語音波形中取一個代表周期,其他的周期則用複製(Duplicate)的方式產生,只記錄振幅的變化及微小的周期變動,以達到壓縮的目的。並可在Z80微處理器上做即時解壓縮,只需簡單的模擬至數字轉換器(DAC)即可播放,不需數位訊號處理器(DSP)及語音合成器(Speech Synthesizer),非常有利於中低檔真人發音產品的應用。
文檔編號G10L21/00GK1404033SQ01130758
公開日2003年3月19日 申請日期2001年8月23日 優先權日2001年8月23日
發明者楊凰琳 申請人:無敵科技股份有限公司