專利名稱::聲音處理方式的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明是指一種聲音處理方法,尤指一種自適應(yīng)差分脈沖編碼調(diào)制(AdaptiveDifferentialPulseCodeModulation,ADPCM)聲音處理方法。
背景技術(shù):
:ADPCM壓縮算法是一種針對(duì)聲音波形數(shù)據(jù)的有損壓縮算法,其所保存的是連續(xù)波形資料前后采樣點(diǎn)變化的差值,以達(dá)到描述整個(gè)波形的目的。ADPCM壓縮算法有很多種變形方式,但其核心原理基本上是相同的。以下介紹幾種ADPCM現(xiàn)有技術(shù)不同的處理方式一、傳統(tǒng)ADPCM不分段聲音處理方式IMA(InteractiveMultimediaAssociation)提過一種將16-bit數(shù)據(jù)格式的音源經(jīng)過ADPCM處理成4-bit數(shù)據(jù)格式的壓縮解壓縮方法,類似此種經(jīng)ADPCM處理最后成為4-bit數(shù)據(jù)格式的編解碼方法,業(yè)界通稱為4-bitADPCM,以下說明IMA曾提出的4-bitADPCM聲音處理方式(一)、編碼基本計(jì)算規(guī)則其算法數(shù)學(xué)公式如下Ln=4(Xn-$Xn-1)/SSn……………………………(式I)$Xn-1=$Xn-2±D$Xn-1……………………………(式II)D$Xn1=SSn-1*Ln-1(C2C1C0)/4+SSn-1/8………(式III)SSn=f2(SPn)……………………………………(式IV)SPn=SPn-1+f1(Ln-1)……………………………(式V)式I中,Ln的范圍是(-7~+7),如果超出,按-7或+7計(jì),Ln是4-Bitcode,最高位代表符號(hào),為1表示負(fù)值,為0表示正值。式II中,取“+”或“-”取決于Ln-1,Ln-1為正值,取“+”,為負(fù)值取“-”。式III中,Ln-1(C2C1C0)表示Ln-1code的絕對(duì)值,即不考慮符號(hào)的值。在這些公式中,所有變量的下標(biāo)“n”等,表示的是正在處理的第n個(gè)聲音采樣點(diǎn)對(duì)應(yīng)的各個(gè)參數(shù),“n-1”則表示前一個(gè)聲音采樣點(diǎn)對(duì)應(yīng)的各個(gè)參數(shù)。而初始化的變量下標(biāo)是0,表示預(yù)處理前的默認(rèn)值,比如$X0、SP0則分別表示預(yù)處理時(shí)默認(rèn)的predictor和stepsizeindex。f1(Ln-1)=index_table[Ln-1]f2(SPn)=stepsize_table[SPn]index_table[]和stepsize_table[]兩個(gè)表格屬性如下index_table[8]={-1,-1,-1,-1,2,4,6,8};stepsize_table[89]={7,8,9,10,11,12,13,14,16,17,19,21,23,25,28,31,34,37,41,45,50,55,60,66,73,80,88,97,107,118,130,143,157,173,190,209,230,253,279,307,337,371,408,449,494,544,598,658,724,796,876,963,1060,1166,1282,1411,1552,1707,1878,2066,2272,2499,2749,3024,3327,3660,4026,4428,4871,5358,5894,6484,7132,7845,8630,9493,10442,11487,12635,13899,15289,16818,18500,20350,22385,24623,27086,29794,32767};初始化值SP0=1,f1(L0)=0,$X0=0,然后利用前面的通用計(jì)算公式逐一遞推即可。(二)、解碼基本計(jì)算規(guī)則$Xn=$Xn-1±D$Xn…………………………(式I)D$Xn=SSn*Ln(C2C1C0)/4+SSn/8…………(式II)SSn=f2(SPn)…………………………………(式III)SPn=SPn-1+f1(Ln-1)…………………………(式IV)公式中各個(gè)參數(shù)的含義與編碼中所述相同。和編碼一樣,先讓SP0=1,f1(L0)=0,$X0=0,作為默認(rèn)值,逐一用公式計(jì)算。上述IMA處理聲音的方式提供了一種ADPCM壓縮編解碼的核心運(yùn)算方式,但若僅使用此算法,很明顯的當(dāng)壓縮編解碼后的音質(zhì)無法達(dá)到要求,唯一的方式只有提高采樣頻率(samplerate)或?qū)?-bitADPCM壓縮提升到5-bit(或更高位數(shù))ADPCM壓縮,提高采樣頻率意味著聲音數(shù)據(jù)量會(huì)大幅增加,而從4-bitADPCM改變成5-bitADPCM除了數(shù)據(jù)量增加外,其儲(chǔ)存的數(shù)據(jù)格式也會(huì)改變?yōu)?-bit,在現(xiàn)今內(nèi)存數(shù)據(jù)總線(databus)通用格式為8-bitor16-bit的情形下,又造成數(shù)據(jù)保存與解碼時(shí)處理數(shù)據(jù)的困擾。另外,若語音產(chǎn)品中夾雜4-bitADPCM與5-bitADPCM的聲音壓縮方法,在處理上也會(huì)更為復(fù)雜又沒效率。二、固定長(zhǎng)度分段式ADPCM聲音處理方式原則上編解碼的核心算法類似前述IMAADPCM,但固定以每n個(gè)(例如n=64)采樣點(diǎn)組成一個(gè)段(block),每個(gè)段頭帶有參數(shù)以優(yōu)化該段音質(zhì),優(yōu)化方式隨著各廠家技術(shù)有所不同,以下為一舉例說明(一)編碼每64個(gè)聲音采樣點(diǎn)為一個(gè)段,每一個(gè)段的開始都重新設(shè)定predictor和stepsizeindex,即公式中的$Xn和SPn,保存至ADPCM文檔。(二)解碼以64個(gè)聲音采樣點(diǎn)為一個(gè)段,對(duì)應(yīng)自適應(yīng)差分脈沖編碼(4-bitADPCMcode)是34個(gè)字節(jié)為一個(gè)段,前面兩個(gè)字節(jié)是段頭(blockhead)優(yōu)化參數(shù),后面32個(gè)字節(jié)是4-bitADPCMcode,代表64個(gè)聲音采樣點(diǎn)。在解碼過程中,每個(gè)段的開始,利用段頭優(yōu)化參數(shù)重新設(shè)定公式中的SPn和$Xn。解碼算法是編碼的逆過程,把4位的ADPCMcode轉(zhuǎn)化成16位的脈沖編碼(PCMcode)。上述固定長(zhǎng)度分段式ADPCM聲音處理方式,比起沒有分段的傳統(tǒng)ADPCM聲音處理方式,其壓縮解壓縮后的音質(zhì)可以更接近原始音源,音質(zhì)的改善程度要視其分段優(yōu)化法則與段的長(zhǎng)度而定,在不改變采樣頻率,數(shù)據(jù)格式維持同樣的位數(shù),與相同的分段優(yōu)化法則下,要提高解碼后的音質(zhì)只有縮短分段長(zhǎng)度,如此又會(huì)造成壓縮率大幅下降。對(duì)于8K左右采樣頻率的聲音數(shù)據(jù),在使用上述的兩種算法解壓縮聲音數(shù)據(jù)后,通常仍會(huì)有失真太大音質(zhì)不好問題。若對(duì)編解碼處理過后合成的音質(zhì)有更高的要求,或聲音數(shù)據(jù)中有較多的靜音,則在使用上述的算法時(shí),這類聲音數(shù)據(jù)在音質(zhì)和壓縮比率兩方面將無法獲得較好的處理結(jié)果。因此鑒于現(xiàn)有技術(shù)的缺點(diǎn),發(fā)明人經(jīng)過悉心試驗(yàn)與研究,并一本鍥而不舍的精神,終于研發(fā)出此聲音處理方式。
發(fā)明內(nèi)容為獲得較佳的聲音壓縮效果,本發(fā)明的ADPCM聲音壓縮算法采用不固定長(zhǎng)度聲音分段的方式,從該待處理的聲音數(shù)據(jù)中每次切割區(qū)分出一個(gè)段,利用該編碼優(yōu)化流程對(duì)該段進(jìn)行編碼得到編碼結(jié)果,并重復(fù)上述切割分段與編碼優(yōu)化流程,直到處理完所有待處理聲音信息。本發(fā)明的ADPCM聲音壓縮算法中的段長(zhǎng)度是不固定的,段長(zhǎng)度會(huì)隨著待處理音源各個(gè)區(qū)間聲音數(shù)據(jù)的特性而改變,段的長(zhǎng)度根據(jù)聲音編碼優(yōu)化法則與所允許的誤差指標(biāo)而調(diào)整。本發(fā)明聲音處理方式中的編碼優(yōu)化法則,采用了多種誤差量化指標(biāo),使壓縮處理后的聲音與原始音源間的誤差可量化,因此允許使用者可依音質(zhì)需求與壓縮率考慮來設(shè)定各量化指標(biāo)的最大誤差臨界值,以獲得滿意的高質(zhì)量聲音與最適當(dāng)?shù)膲嚎s率。本發(fā)明聲音處理方式也特別對(duì)音源中的靜音部份作特殊壓縮處理,以提高整體壓縮率。本發(fā)明的主要構(gòu)想為提供一種聲音處理方式,其步驟包括提供待處理的聲音資料、不固定長(zhǎng)度分段規(guī)則、編碼(encoder)優(yōu)化流程及自適應(yīng)差分脈沖編碼文件;將該待處理的聲音數(shù)據(jù)利用該不固定長(zhǎng)度分段規(guī)則,從該待處理的聲音數(shù)據(jù)中每次切割區(qū)分出一個(gè)段;利用該編碼優(yōu)化流程對(duì)該段進(jìn)行編碼,得到編碼結(jié)果;重復(fù)上述該不固定長(zhǎng)度分段規(guī)則與該編碼優(yōu)化流程,直到處理完所有該待處理的聲音數(shù)據(jù),并獲得多個(gè)段;以及在聲音處理的同時(shí)將該編碼結(jié)果輸出至該自適應(yīng)差分脈沖編碼文件中。根據(jù)上述構(gòu)想,其中該不固定長(zhǎng)度分段規(guī)則為依據(jù)該待處理的聲音數(shù)據(jù)在不同位置的特性。根據(jù)上述構(gòu)想,其中該多個(gè)段為多個(gè)聲音段(GeneralBlock)。根據(jù)上述構(gòu)想,其中該多個(gè)段為多個(gè)靜音段(SilenceBlock)。根據(jù)上述構(gòu)想,其中該多個(gè)段中具有終止段(EndBlock)。根據(jù)上述構(gòu)想,其中該多個(gè)段為多個(gè)聲音段、靜音段與終止段。根據(jù)上述構(gòu)想,其中該等聲音段具有多個(gè)聲音采樣點(diǎn)(sample)。根據(jù)上述構(gòu)想,其中該等靜音段具有多個(gè)聲音采樣點(diǎn)。根據(jù)上述構(gòu)想,其中該等靜音段中的該等聲音采樣點(diǎn)為多個(gè)靜音點(diǎn)(silencesample)。根據(jù)上述構(gòu)想,其中該等靜音段只記錄靜音點(diǎn)的數(shù)目,不需利用該編碼流程。根據(jù)上述構(gòu)想,其中該終止段代表一段聲音的結(jié)束,不需利用該編碼流程。根據(jù)上述構(gòu)想,其中該等靜音段,在統(tǒng)計(jì)數(shù)目后直接輸出到該自適應(yīng)差分脈沖編碼文件中。根據(jù)上述構(gòu)想,其中該等聲音采樣點(diǎn)中有一段可以建立該靜音段時(shí),則以該靜音段前面的所有該等聲音采樣點(diǎn)作為初步聲音段的長(zhǎng)度,也就是初步的該等聲音采樣點(diǎn)數(shù)目。本發(fā)明的另一構(gòu)想為提供一種聲音編碼優(yōu)化流程,其步驟包括提供第一聲音段、最小誤差信號(hào)功率觀念、累加誤差觀念、瞬間信號(hào)-噪聲比(SNR)觀念及自適應(yīng)差分脈沖編碼文件;利用該最小誤差信號(hào)功率觀念及該累加誤差觀念分析該第一聲音段的總體誤差情況,從該第一聲音段獲得第二聲音段;利用該最小誤差信號(hào)功率觀念及該瞬間SNR觀念分析該第二聲音段的瞬間誤差情況,從該第二聲音段獲得第三聲音段;利用該最小誤差信號(hào)功率觀念優(yōu)化該編碼;以及將編碼結(jié)果輸出至該自適應(yīng)差分脈沖編碼文件。上述的第一、第二、與第三聲音段,指的是待處理聲音在編碼優(yōu)化過程中,各個(gè)不同處理階段的輸入與輸出數(shù)據(jù)段,之前經(jīng)過初步分段規(guī)則所產(chǎn)出的聲音數(shù)據(jù),為編碼優(yōu)化過程中第一階段處理的輸入數(shù)據(jù),亦即上述的第一聲音段,而經(jīng)編碼優(yōu)化過程第一階段處理后的產(chǎn)出,即上述的第二聲音段,再經(jīng)編碼優(yōu)化過程第二階段處理后的產(chǎn)出,即上述的第三聲音段,該第三聲音段再經(jīng)編碼優(yōu)化過程產(chǎn)出最后的自適應(yīng)差分脈沖編碼文件。在上述的聲音編碼優(yōu)化過程處理中,誤差信號(hào)功率觀念被重復(fù)使用來決定該段頭參數(shù)的最佳化。根據(jù)上述構(gòu)想,其中該第一聲音段、第二聲音段與第三聲音段分別包括段頭參數(shù)。根據(jù)上述構(gòu)想,其中該段頭參數(shù)包括$Xn參數(shù);以及Spn參數(shù);其中該$Xn參數(shù)為該第一聲音段中的第一個(gè)聲音采樣點(diǎn)的運(yùn)算結(jié)果;而選擇該SPn參數(shù)的法則是采最小誤差信號(hào)功率觀念,令所選取的SPn參數(shù)會(huì)使其編解碼后的聲音與原始音源之間的誤差信號(hào)功率是最小。根據(jù)上述構(gòu)想,其中該誤差信號(hào)功率為該第一聲音段中所有該聲音采樣點(diǎn)和相對(duì)應(yīng)的合成聲音采樣點(diǎn)的差值平方后累加,再開平方根,然后除以該第一聲音段的長(zhǎng)度。根據(jù)上述構(gòu)想,其中所有該聲音采樣點(diǎn)合成誤差絕對(duì)值的累加為合成累加誤差值(εrror_Acc)。根據(jù)上述構(gòu)想,可針對(duì)該合成累加誤差值設(shè)定合成累加誤差臨界值,作為該聲音編碼優(yōu)化流程的條件。根據(jù)上述構(gòu)想,其中該合成累加誤差值小于該合成累加誤差臨界值時(shí),即獲得該第二聲音段。根據(jù)上述構(gòu)想,其中若該第二聲音段有聲音采樣點(diǎn)的合成瞬間SNR誤差(εrror_snr),大于合成聲音誤差的瞬間SNR臨界值,則將在該聲音采樣點(diǎn)之前的聲音采樣點(diǎn)重新組成聲音段,即獲得該第三聲音段。根據(jù)上述構(gòu)想,其中該合成聲音誤差的瞬間SNR誤差臨界值為index[SNR_abs]與index[SNR_ratio],作為該聲音編碼優(yōu)化流程的條件。根據(jù)上述構(gòu)想,其中該第三聲音段的每一聲音采樣點(diǎn)皆對(duì)應(yīng)自適應(yīng)差分脈沖編碼。根據(jù)上述構(gòu)想,其中該第三聲音段包括段頭。根據(jù)上述構(gòu)想,其中該段頭包括段屬性、長(zhǎng)度參數(shù)、$Xn參數(shù)與Spn參數(shù)。根據(jù)上述構(gòu)想,保存該第三聲音段的長(zhǎng)度與該段頭,并將該自適應(yīng)差分脈沖編碼輸出至該自適應(yīng)差分脈沖編碼文件。本發(fā)明的又一構(gòu)想為提供一種聲音解碼(decoder)流程,其步驟包括提供待處理的自適應(yīng)差分脈沖編碼文件及解碼方式;以及利用該解碼方式對(duì)該待處理的自適應(yīng)差分脈沖編碼文件中的多個(gè)段進(jìn)行解碼。根據(jù)上述構(gòu)想,其中該自適應(yīng)差分脈沖編碼文件為多個(gè)段在一時(shí)間軸上有次序的組合。根據(jù)上述構(gòu)想,其中該自適應(yīng)差分脈沖編碼文件具有多個(gè)聲音段。根據(jù)上述構(gòu)想,其中該自適應(yīng)差分脈沖編碼文件具有多個(gè)靜音段。根據(jù)上述構(gòu)想,其中該自適應(yīng)差分脈沖編碼文件具有終止段。根據(jù)上述構(gòu)想,其中該自適應(yīng)差分脈沖編碼文件具有多個(gè)聲音段、靜音段與終止段。根據(jù)上述構(gòu)想,其中該多個(gè)段的最開始具有段頭。根據(jù)上述構(gòu)想,其中該多個(gè)段除該段頭外,其余的數(shù)據(jù)為自適應(yīng)差分脈沖編碼。根據(jù)上述構(gòu)想,其中該段頭使用3個(gè)字節(jié),分別為第一個(gè)字節(jié)、第二個(gè)與第三個(gè)字節(jié)。根據(jù)上述構(gòu)想,其中該第一個(gè)字節(jié)的數(shù)值不等于”1”時(shí),則該段為聲音段。根據(jù)上述構(gòu)想,其中該第一個(gè)字節(jié)的數(shù)值代表該段的長(zhǎng)度。根據(jù)上述構(gòu)想,其中該第一個(gè)字節(jié)的數(shù)值等于”0”時(shí),代表聲音采樣點(diǎn)。根據(jù)上述構(gòu)想,其中該第二個(gè)字節(jié)與該第三個(gè)字節(jié)為組合數(shù)據(jù)。根據(jù)上述構(gòu)想,其中該第一個(gè)字節(jié)的數(shù)值等于”1”且該組合數(shù)據(jù)不等于”0”時(shí),則該段為靜音段。根據(jù)上述構(gòu)想,其中該組合數(shù)據(jù)代表靜音長(zhǎng)度(silencesize)。根據(jù)上述構(gòu)想,其中該靜音段不需利用該解碼方式。根據(jù)上述構(gòu)想,其中該第一個(gè)字節(jié)的數(shù)值等于”1”且該組合數(shù)據(jù)等于”0”時(shí),則該段為終止段。根據(jù)上述構(gòu)想,其中該終止段代表一段聲音的結(jié)束,不需利用該解碼方式。圖1是本發(fā)明的聲音編碼流程圖;圖2是本發(fā)明的靜音段處理流程圖;圖3是本發(fā)明的聲音段處理流程圖;及圖4是本發(fā)明的聲音解碼流程圖。具體實(shí)施例方式本發(fā)明將可由以下的實(shí)施例說明而得到充分的了解,使得熟習(xí)本方法的人士可以據(jù)以完成,然而本發(fā)明的實(shí)施并非可由下列實(shí)施例而被限制其實(shí)施型態(tài)。本發(fā)明的自適應(yīng)差分脈沖編碼有損壓縮算法如下一、編碼(一)、不固定長(zhǎng)度分段規(guī)則根據(jù)聲音資料在不同地方的特性,段的長(zhǎng)度最大是256個(gè)聲音采樣點(diǎn),最小是8個(gè)。共有三種不同類型的段,分別是聲音段、靜音段、終止段。終止段只是表示一段聲音的結(jié)束。大體上來講,若待處理的聲音數(shù)據(jù)中有一段是靜音,則建立靜音段,最小長(zhǎng)度是10個(gè),最大是65535個(gè),若少于10個(gè)靜音點(diǎn),當(dāng)成聲音段來處理,若大于65535個(gè)靜音點(diǎn),則建立新的靜音段來表示剩余的靜音段;靜音段會(huì)用三個(gè)字節(jié)(byte)表示其屬性和靜音點(diǎn)的長(zhǎng)度。若該待處理的聲音中某一段沒有靜音點(diǎn)或靜音點(diǎn)不足10個(gè),則建立聲音段,也用三個(gè)字節(jié)表示段的屬性和參數(shù),其中包括的信息有段的長(zhǎng)度(blocksize),$Xn和SPn,聲音段的長(zhǎng)度規(guī)定最少為8個(gè)字節(jié)。(二)、編碼優(yōu)化流程請(qǐng)參閱圖1,是本發(fā)明的聲音編碼流程圖。本發(fā)明的編碼算法較為復(fù)雜,在此針對(duì)該流程圖做詳細(xì)的說明。有效的段(包括有聲音采樣點(diǎn))有兩種,其分別是靜音段和聲音段。靜音段儲(chǔ)存聲音靜音,只記錄靜音點(diǎn)的數(shù)目即可,不需要用編碼算法。對(duì)一個(gè)具體的聲音數(shù)據(jù)編碼時(shí),是按順序逐段分析編碼并輸出結(jié)果到ADPCM文件中,逐段分析編碼的過程是準(zhǔn)備好待處理的聲音數(shù)據(jù)(10),若文件指針到達(dá)結(jié)尾(11),則結(jié)束當(dāng)前聲音的編碼過程(12);若文件指針并未到達(dá)結(jié)尾,則按順序從待處理的聲音數(shù)據(jù)中讀取一段較長(zhǎng)的聲音數(shù)據(jù),其為265個(gè)聲音采樣點(diǎn)(13),分析這個(gè)段(14),確定建立靜音段還是聲音段(15)。若是靜音段(16),統(tǒng)計(jì)靜音點(diǎn)的數(shù)目,建立靜音段輸出到ADPCM文件;若是聲音段(17),則要進(jìn)行復(fù)雜的分析,分析后從這一較長(zhǎng)聲音段中選取最前面的一段(最小8個(gè)聲音采樣點(diǎn),最大256個(gè)聲音采樣點(diǎn)),按編碼基本算法公式編碼輸出。(1)、靜音段的統(tǒng)計(jì)請(qǐng)參閱圖2,其是本發(fā)明的靜音段處理流程圖。建立靜音段的條件是在聲音段中至少有連續(xù)10個(gè)靜音點(diǎn)。如上所述,先讀取265個(gè)聲音采樣點(diǎn)分析(161),如果265個(gè)聲音采樣點(diǎn)的最開始沒有10個(gè)以上的連續(xù)靜音點(diǎn),則以靜音段之前的聲音采樣點(diǎn)初步建立GeneralBlock,長(zhǎng)度不確定(166);而如果265個(gè)聲音采樣點(diǎn)的最開始就有10個(gè)以上的連續(xù)靜音點(diǎn),則確定建立靜音段(162),統(tǒng)計(jì)靜音點(diǎn)的數(shù)目后輸出靜音段到該ADPCM文件中。若265個(gè)都是靜音點(diǎn),則繼續(xù)讀聲音檔案中數(shù)據(jù),若還有靜音點(diǎn),增加靜音的統(tǒng)計(jì)數(shù)目(163),直到統(tǒng)計(jì)到靜音的數(shù)目等于65535或者后面沒有靜音點(diǎn)(164),則結(jié)束并輸出靜音段到ADPCM文件中(165),如果65535個(gè)后面還有靜音點(diǎn),就要建立新的靜音段來儲(chǔ)存。前面幾次提到,一次讀取265個(gè)聲音采樣點(diǎn)來做初步分析是由于256個(gè)聲音采樣點(diǎn)的最末端可能有不足10個(gè)的靜音點(diǎn),這些靜音點(diǎn)或許可以跟256個(gè)聲音采樣點(diǎn)后面的聲音采樣點(diǎn)組成靜音段。而如果分析265個(gè)聲音采樣點(diǎn),即使在256個(gè)聲音采樣點(diǎn)最后只有一個(gè)靜音點(diǎn)(聲音采樣點(diǎn)[256]),也可以用這256個(gè)后面的265-256個(gè)聲音采樣點(diǎn)來分析聲音采樣點(diǎn)[256]應(yīng)該歸屬于當(dāng)前聲音段還是即將處理的靜音段。(2)、聲音段的編碼過程請(qǐng)參閱圖3,是本發(fā)明的聲音段處理流程圖。聲音段最少是8個(gè)聲音采樣點(diǎn)。如上所述,先讀取265個(gè)聲音采樣點(diǎn)分析,若265個(gè)聲音采樣點(diǎn)的最開始不滿足建立靜音段的條件,則確定建立聲音段,這時(shí),要首先初步確定聲音段的長(zhǎng)度,此分兩種情況(a)若265個(gè)聲音采樣點(diǎn)中有一段可以建立靜音段,也就是有10個(gè)以上的連續(xù)靜音點(diǎn),則以這個(gè)靜音段的前面的所有聲音采樣點(diǎn)作為初步聲音段的長(zhǎng)度(166),也就是初步的聲音采樣點(diǎn)數(shù)目。若這個(gè)數(shù)目小于8,要用后面的靜音點(diǎn)補(bǔ)齊到至少是8個(gè)聲音采樣點(diǎn)。(b)若265個(gè)聲音采樣點(diǎn)中沒有任何一段可以建立靜音段,則選取最前面的256個(gè)聲音采樣點(diǎn)作為初步聲音段的長(zhǎng)度(171)。為了方便說明,把剛才初步確定的聲音段表示為第一聲音段,聲音采樣點(diǎn)數(shù)目表示為第一聲音段長(zhǎng)度。初步的聲音段聲音采樣點(diǎn)數(shù)目確定后,將進(jìn)行以下的分析,大致分為三個(gè)步驟(a)這一步將以最小誤差信號(hào)功率觀念,及累加誤差觀念分析該第一聲音段,也就是分析該第一聲音段的總體誤差情況,根據(jù)誤差最終從該第一聲音段中獲得新的段,新段的長(zhǎng)度可能會(huì)改變,組成新段的聲音數(shù)據(jù)將會(huì)符合累加誤差臨界值的限制,下面為詳細(xì)說明。對(duì)該第一聲音段求得最合適的$Xn和SPn(172)。$Xn等于該第一聲音段中第一個(gè)聲音采樣點(diǎn),低7bits設(shè)為0,再加上40H;SPn的獲取是用了試驗(yàn)的方法,讓SPn分別試著取SPn能取的最小值到最大值,對(duì)該第一聲音段中的聲音采樣點(diǎn)進(jìn)行編碼與解碼的過程,求得不同的SPn對(duì)應(yīng)的誤差信號(hào)功率,哪個(gè)SPn值得到的誤差信號(hào)功率最小,就選用哪個(gè)作為最合適的SPn。誤差信號(hào)功率計(jì)算方法是該第一聲音段中所有聲音采樣點(diǎn)和相對(duì)應(yīng)的合成聲音采樣點(diǎn)的差值平方后累加,再開平方根,然后除以該第一聲音段長(zhǎng)度block1size(173)。求得該第一聲音段最合適的$Xn和SPn后,用最合適的$Xn和SPn計(jì)算合成累加誤差值εrror_Acc(所有聲音采樣點(diǎn)合成誤差絕對(duì)值累加)(174),若合成累加誤差值εrror大于某個(gè)給定的合成累加誤差臨界值index[Acc](175),則減少該第一聲音段的數(shù)目(176),即該第一聲音段長(zhǎng)度減少,對(duì)減少之后的剩余聲音采樣點(diǎn)計(jì)算合適的$Xn和SPn,用上述方法獲得新的εrror_Acc,重新和index[Acc]比較,若還是大于index[Acc],再按上述重復(fù)循環(huán),一次減少8個(gè)聲音采樣點(diǎn),直到第一聲音段計(jì)算得到的εrror_Acc小于index[Acc]或者該第一聲音段長(zhǎng)度將小于8(因?yàn)槁曇舳我?guī)定最少是8個(gè)聲音采樣點(diǎn)),這時(shí)確定的聲音段記為第二聲音段,聲音采樣點(diǎn)的長(zhǎng)度記作block2size,后面將對(duì)該第二聲音段繼續(xù)分析。(b)這一步將以瞬間信號(hào)-噪聲比(SNR)觀念分析該第二聲音段,也就是分析該第二聲音段中聲音采樣點(diǎn)的瞬間誤差情況,最終從該第二聲音段中獲得新的聲音段,新的聲音段的長(zhǎng)度可能會(huì)改變,組成新段的聲音數(shù)據(jù)將會(huì)符合瞬間信號(hào)-噪聲比(SNR)臨界值的限制,下面為詳細(xì)說明。對(duì)上面確定的該第二聲音段中block2size個(gè)聲音采樣點(diǎn)使用最小誤差信號(hào)功率觀念求得最合適的$Xn和SPn(177),然后逐個(gè)進(jìn)行編碼與解碼(178),若有一個(gè)聲音采樣點(diǎn)的合成瞬間信號(hào)-噪聲誤差(εrror_snr)大于預(yù)先設(shè)定的合成瞬間信號(hào)-噪聲誤差臨界值(179)(若此原音聲音采樣點(diǎn)的值和靜音點(diǎn)的差值絕對(duì)值在1024以內(nèi),則誤差臨界值指標(biāo),采用原聲音采樣點(diǎn)和合成聲音采樣點(diǎn)的差值絕對(duì)值index[SNR_abs];若原音聲音采樣點(diǎn)值偏離靜音點(diǎn)較遠(yuǎn),和靜音點(diǎn)的差值絕對(duì)值大于1024,則誤差臨界值指標(biāo),采用原聲音采樣點(diǎn)和合成聲音采樣點(diǎn)的差值絕對(duì)值除以原音聲音采樣點(diǎn)的值所得到的比例值index[SNR_ratio]),那么該聲音采樣點(diǎn)的合成誤差太大,則以該第二聲音段中這個(gè)合成誤差太大的聲音采樣點(diǎn)之前的所有聲音采樣點(diǎn)重新組成新的段,暫且命名為第三聲音段(180),包括的聲音采樣點(diǎn)數(shù)目為block3size。同樣,block3size要保證至少是8個(gè),若分析時(shí)發(fā)現(xiàn)在8個(gè)以內(nèi)有誤差太大的聲音采樣點(diǎn),是不處理的,要強(qiáng)制其等于8個(gè)聲音采樣點(diǎn)。(c)前面得到的第三聲音段和其長(zhǎng)度block3size是最終的聲音段,剩下的問題是如何對(duì)該第三聲音段建立一個(gè)聲音段并計(jì)算其中所有聲音采樣點(diǎn)的自適應(yīng)差分脈沖編碼(ADPCMcode),并把這個(gè)聲音段的段頭和所有該ADPCMcode輸出保存到該ADPCM文件中,下面將詳細(xì)說明。使用最小誤差信號(hào)功率觀念,對(duì)該第三聲音段中block3size個(gè)聲音采樣點(diǎn)求得最合適的$Xn和SPn(181),然后首先保存block3size和段頭到該ADPCM文件(182),段頭中的信息就是$Xn和SPn,實(shí)際上$Xn就是該第三聲音段中第一個(gè)聲音采樣點(diǎn)低7位為0后得到的值,命名為$Xn[1],用$Xn[1]加上SPn即為段頭值,而編碼與解碼計(jì)算時(shí)使用的$Xn等于$Xn[1]加上40H。保存block3size和段頭后,用基本ADPCM編碼公式逐個(gè)計(jì)算ADPCMcode,并輸出保存至該ADPCM文件。至此,計(jì)算完成了第一個(gè)聲音段,然后繼續(xù)對(duì)當(dāng)前聲音數(shù)據(jù)后面剩余的所有聲音采樣點(diǎn)重新進(jìn)行上述所有分析解碼過程,直到整個(gè)聲音數(shù)據(jù)處理完畢(183)。若聲音段的采樣點(diǎn)數(shù)目太少的話,ADPCM文件會(huì)增大,壓縮程度不好,故此例中采用最小8個(gè)聲音采樣點(diǎn)為一個(gè)聲音段。另外,若一個(gè)聲音文檔處理到結(jié)束的時(shí)候,剩下的聲音采樣點(diǎn)不足8個(gè),則最少是8個(gè)的規(guī)定就無效,亦即實(shí)際上在一個(gè)聲音文檔的ADPCM文件最后一個(gè)段的數(shù)目是有可能少于8個(gè)聲音采樣點(diǎn)的。二、解碼請(qǐng)參閱圖4,其是本發(fā)明的聲音解碼流程圖。以4-bitADPCM為例說明,本發(fā)明產(chǎn)出的ADPCM編碼壓縮后文件(21)可以看作是很多個(gè)段在時(shí)間軸上有次序的組合,其時(shí)間順序是……→前一個(gè)字節(jié)高4位→當(dāng)前字節(jié)低4位→當(dāng)前字節(jié)高4位……。本發(fā)明產(chǎn)出的ADPCM文件共有三種不同類型的段,分別是聲音段、靜音段、終止段。無論那種類型的段,在段的最開始有個(gè)段頭,占用三個(gè)字節(jié)(22),可根據(jù)段頭判斷本段是屬于那種類型的段(23)以及本段的其它信息、參數(shù),下面逐一說明。若段頭的第一個(gè)字節(jié)(byte)不等于“1“,則本段是聲音段,第一個(gè)字節(jié)數(shù)值代表本段的長(zhǎng)度,指16位聲音采樣點(diǎn)的數(shù)量,如為”0“,代表256個(gè)聲音采樣點(diǎn)。這時(shí),把第2、3字節(jié)當(dāng)成一個(gè)數(shù)據(jù),高9位代表上面解碼算法中的$Xn,低7位代表SPn。下面說明如何提取這兩個(gè)字節(jié)中的信息,而得到predictor($Xn)和stepindex(SPn)的值。xxxxxxxxxiiiiiii上面x有9個(gè)位,代表當(dāng)前段要重設(shè)的predictor,實(shí)際上在使用這個(gè)值做計(jì)算時(shí),要加上一個(gè)值40H,當(dāng)做誤差值,因?yàn)樵诰幋a過程中,predictor的后面7位是被省略,40H是省略掉的誤差的中間值,如此會(huì)減低總體的誤差。i有7個(gè)位,代表SPn的值。段頭后面的數(shù)據(jù)是ADPCMcode(24)。如此該聲音段中第一個(gè)解碼PCMcode(25)是“$Xn+40H“,第二個(gè)用段頭提供的SPn用上面運(yùn)算法則計(jì)算,第三個(gè)及后面的可根據(jù)解碼的基本運(yùn)算法則完整地計(jì)算得到。ADPCMcode是4bits數(shù)據(jù),而計(jì)算機(jī)儲(chǔ)存數(shù)據(jù)最少是以Byte為單位,如果在當(dāng)前GeneralBlock中只剩下一個(gè)ADPCMcode(4bits)沒有處理(251),并且這個(gè)code沒有和前一個(gè)code共享一個(gè)Byte來保存,那這個(gè)4bits的ADPCMcode是如何存放的呢?如果沒有選擇備用段(sparingblock),那么,這個(gè)ADPCMcode是按Byte來保存了(252),高4Bits無效;如果選擇了備用段,那么,這個(gè)ADPCMcode是按Byte來保存了(252),但是高4Bits是有效的,高4Bits保存的是下一個(gè)GeneralBlock的第一個(gè)ADPCMcode。如此,當(dāng)前的block即處理完畢(253)。若段頭的第一個(gè)字節(jié)等于“1“,把第2、3字節(jié)當(dāng)成一個(gè)組合數(shù)據(jù),若這個(gè)組合數(shù)據(jù)不等于”0“,則本段是靜音段(26),這個(gè)組合數(shù)據(jù)代表靜音長(zhǎng)度,其含義是后面有silencesize個(gè)PCM聲音采樣點(diǎn)是靜音,此時(shí)將不用上面的運(yùn)算公式計(jì)算(27)。若段頭的第一個(gè)字節(jié)等于“1”,把第2、3字節(jié)當(dāng)成一個(gè)組合數(shù)據(jù),若這個(gè)組合數(shù)據(jù)等于”0“,則本段是終止段(28),終止段只表示一段聲音的結(jié)束(29)。綜上所述,本發(fā)明的聲音編碼優(yōu)化流程同時(shí)采用了多種誤差量化指標(biāo),允許使用者可依音質(zhì)需求與壓縮率的考慮來設(shè)定各量化指標(biāo)的最大誤差臨界值,以獲得滿意的高質(zhì)量聲音與最適當(dāng)?shù)膲嚎s率。雖然本發(fā)明已由上述的實(shí)施例詳細(xì)敘述而可由本領(lǐng)域普通技術(shù)人員作出修改和改動(dòng),然而都不脫離如附加的權(quán)利要求書的保護(hù)范圍。權(quán)利要求1.一種聲音演算方式,其步驟包括提供待處理的聲音資料、不固定長(zhǎng)度分段規(guī)則、編碼優(yōu)化流程及自適應(yīng)差分脈沖編碼文件;將該待處理的聲音數(shù)據(jù)利用該不固定長(zhǎng)度分段規(guī)則,從該待處理的聲音數(shù)據(jù)中每次切割區(qū)分出一個(gè)段;利用該編碼優(yōu)化流程對(duì)該段進(jìn)行編碼,得到編碼結(jié)果;重復(fù)上述該不固定長(zhǎng)度分段規(guī)則與該編碼優(yōu)化流程,直到處理完所有該待處理的聲音數(shù)據(jù),并獲得多個(gè)段;以及在聲音處理的同時(shí)將該編碼結(jié)果輸出至該自適應(yīng)差分脈沖編碼文件中。2.根據(jù)權(quán)利要求1所述的聲音演算方式,其中,該不固定長(zhǎng)度分段規(guī)則為依據(jù)該待處理的聲音數(shù)據(jù)在不同位置的特性。3.根據(jù)權(quán)利要求1所述的聲音演算方式,其中,該多個(gè)段為多個(gè)聲音段;為多個(gè)靜音段;或具有終止段。4.根據(jù)權(quán)利要求1所述的聲音演算方式,其中該多個(gè)段為多個(gè)聲音段、靜音段與終止段,其中該等聲音段具有多個(gè)聲音采樣點(diǎn);該等靜音段具有多個(gè)聲音采樣點(diǎn),而該等靜音段中的該等聲音采樣點(diǎn)為多個(gè)靜音點(diǎn);該等靜音段只記錄靜音點(diǎn)的數(shù)目,不需利用該編碼流程;該終止段代表一段聲音的結(jié)束,不需利用該編碼流程;該等靜音段,在統(tǒng)計(jì)數(shù)目后直接輸出到該自適應(yīng)差分脈沖編碼文件中;和/或該等聲音采樣點(diǎn)中有一段可以建立該靜音段時(shí),則以該靜音段前面的所有該等聲音采樣點(diǎn)作為初步聲音段的長(zhǎng)度,也就是初步的該等聲音采樣點(diǎn)數(shù)目。5.一種聲音編碼優(yōu)化流程,其步驟包括提供第一聲音段、最小誤差信號(hào)功率觀念、累加誤差觀念、瞬間信號(hào)-噪聲比觀念及自適應(yīng)差分脈沖編碼文件;利用該最小誤差信號(hào)功率觀念及該累加誤差觀念分析該第一聲音段的總體誤差情況,從該第一聲音段獲得第二聲音段;利用該最小誤差信號(hào)功率觀念及該瞬間SNR觀念分析該第二聲音段的瞬間誤差情況,從該第二聲音段獲得第三聲音段;利用該最小誤差信號(hào)功率觀念優(yōu)化該編碼;以及將編碼結(jié)果輸出至該自適應(yīng)差分脈沖編碼文件。6.根據(jù)權(quán)利要求5所述的聲音編碼優(yōu)化流程,其中,該第一聲音段、第二聲音段與第三聲音段分別包括段頭參數(shù),其中該段頭參數(shù)包括$Xn參數(shù)以及Spn參數(shù);其中該$Xn參數(shù)為該第一聲音段中的第一個(gè)聲音采樣點(diǎn)的運(yùn)算結(jié)果;及該SPn參數(shù)的選擇會(huì)使其所對(duì)應(yīng)的合成聲音與原始音源間的誤差信號(hào)功率有最小值;該誤差信號(hào)功率為該第一聲音段中所有該聲音采樣點(diǎn)和相對(duì)應(yīng)的合成聲音采樣點(diǎn)的差值平方后累加,再開平方根,然后除以該第一聲音段的長(zhǎng)度,其中所有該聲音采樣點(diǎn)合成誤差絕對(duì)值的累加為合成累加誤差值,并可針對(duì)該合成累加誤差值設(shè)定一合成累加誤差臨界值,作為該聲音編碼優(yōu)化流程的條件,其中該合成累加誤差值小于該合成累加誤差臨界值時(shí),即獲得該第二聲音段;和/或若該第二聲音段有聲音采樣點(diǎn)的合成瞬間SNR誤差,大于合成聲音誤差的瞬間SNR臨界值,則將在該聲音采樣點(diǎn)的前的聲音采樣點(diǎn)重新組成聲音段,即獲得該第三聲音段,其中該合成聲音誤差的瞬間SNR誤差臨界值為index[SNR_abs]與index[SNR_ratio],作為該聲音編碼優(yōu)化流程的條件;該第三聲音段的每一聲音采樣點(diǎn)皆對(duì)應(yīng)自適應(yīng)差分脈沖編碼;和/或該第三聲音段包括段頭,其中該段頭包括段屬性、長(zhǎng)度參數(shù)、$Xn參數(shù)與Spn參數(shù);和/或保存該第三聲音段的長(zhǎng)度與該段頭,并將該自適應(yīng)差分脈沖編碼輸出至該自適應(yīng)差分脈沖編碼文件。7.一種聲音解碼流程,其步驟包括提供待處理的自適應(yīng)差分脈沖編碼文件及解碼方式;以及利用該解碼方式對(duì)該待處理的自適應(yīng)差分脈沖編碼文件中的多個(gè)段進(jìn)行解碼。8.根據(jù)權(quán)利要求7所述的聲音解碼流程,其中,該自適應(yīng)差分脈沖編碼文件為多個(gè)段在時(shí)間軸上有次序的組合。9.根據(jù)權(quán)利要求7所述的聲音解碼流程,其中,該自適應(yīng)差分脈沖編碼文件具有多個(gè)聲音段;具有多個(gè)靜音段;或具有終止段。10.根據(jù)權(quán)利要求7所述的聲音解碼流程,其中該自適應(yīng)差分脈沖編碼文件具有多個(gè)聲音段、靜音段與終止段;和/或該多個(gè)段的最開始具有段頭,其中該多個(gè)段除該段頭外,其余的數(shù)據(jù)為自適應(yīng)差分脈沖編碼;該段頭使用3個(gè)字節(jié),分別為第一個(gè)字節(jié)、第二個(gè)與第三個(gè)字節(jié);該第一個(gè)字節(jié)的數(shù)值不等于”1”時(shí),則該段為聲音段;該第一個(gè)字節(jié)的數(shù)值代表該段的長(zhǎng)度;該第一個(gè)字節(jié)的數(shù)值等于”0”時(shí),代表聲音采樣點(diǎn);該第二個(gè)字節(jié)與該第三個(gè)字節(jié)為組合數(shù)據(jù);該第一個(gè)字節(jié)的數(shù)值等于”1”且該組合數(shù)據(jù)不等于”0”時(shí),則該段為靜音段;該組合數(shù)據(jù)代表靜音長(zhǎng)度;該靜音段不需利用該解碼方式;該第一個(gè)字節(jié)的數(shù)值等于”1”且該組合數(shù)據(jù)等于”0”時(shí),則該段為終止段;和/或該終止段代表一段聲音的結(jié)束,不需利用該解碼方式。全文摘要本發(fā)明提供一種聲音處理方式,其步驟包括將待處理的聲音數(shù)據(jù)利用不固定長(zhǎng)度分段規(guī)則,從該待處理的聲音數(shù)據(jù)中每次切割區(qū)分出一個(gè)段;利用編碼優(yōu)化流程對(duì)該段進(jìn)行編碼得到編碼結(jié)果,并重復(fù)上述切割分段與編碼優(yōu)化流程,直到處理完所有待處理的聲音數(shù)據(jù);并在處理的同時(shí)將該編碼結(jié)果輸出,產(chǎn)生自適應(yīng)差分脈沖編碼文件。解碼流程則為編碼流程的逆過程。本發(fā)明的聲音編碼優(yōu)化流程同時(shí)采用了多種誤差量化指標(biāo),允許使用者可依音質(zhì)需求與壓縮率的考慮來設(shè)定各量化指標(biāo)的最大誤差臨界值,以獲得滿意的高質(zhì)量聲音與最適當(dāng)?shù)膲嚎s率。文檔編號(hào)G10L19/00GK1972132SQ20051012394公開日2007年5月30日申請(qǐng)日期2005年11月24日優(yōu)先權(quán)日2005年11月24日發(fā)明者王明坤,涂介勇申請(qǐng)人:盛群半導(dǎo)體股份有限公司