專利名稱::可變速率聲碼器的制作方法本申請是申請日為1992年6月11日、申請號為92104618.9、與本申請相同發明名稱的發明專利申請的分案申請。本發明涉及語音處理。具體講,本發明涉及一種用于壓縮語音的新穎且已改進的方法和系統,其中,壓縮量動態地變化,但對再生語音的質量影響最小。此外,由于壓縮后的語音數據要通過一個有可能引入錯誤的信道傳送,故而本發明的方法和系統還會將信道傳輸錯誤對聲音的影響減至最小。利用數字技術傳送聲音已經得到廣泛的應用,在遠距離和數字式無線電話設備中尤其如此。這轉而使人們有興趣確定在保持再生語音聽覺質量的信道上能夠傳送的最低信息量。如果語音是在簡單取樣并數字化后傳送的,那么,為了達到普通模擬式電話機的語音質量,就需要64千比特/每秒(Kbps)數量級的數據速率。但是,通過采用語音分析,再進行適當的編碼、傳送,在接收器中進行再合成,就能顯著地降低數據速率。采用人類語言信號產生模型所提取的參數來完成語聲壓縮技術的裝置通常稱為聲碼器。這類裝置由一個分析傳入的語音以提取相關參數的編碼器和一個利用在傳輸信道中接收到的參數重新合成語音的譯碼器組成。為了精確些,模型必須不時地變化。這樣,語音被劃分成時間段或分析幀,每一幀內進行參數的計算。然后對每一新的幀更新參數。在不同類別的語音編碼器中,編碼激勵線性預測編碼(CELP)、隨機編碼或矢量激勵語音編碼是屬于一類的。在湯姆斯E.特萊門等人所著,發表于1988年移動衛星研討會論文集上的論文“一種4.8Kbps編碼激勵線性預測編碼器”中描述了這一特定類別的一個編碼算法例子。聲碼器的功能是消除語音中固有的自然冗余,從而將數字化語音信號壓縮成低比特率信號。通常,語音中含有主要是因聲道的濾波動作而產生的短期冗余,和因發聲區域聲帶的激勵而產生的長期冗余。在CELP編碼器中,這些發聲區域的動作用兩個濾波器來模擬,一個是短期共振峰濾波器,另一個是長期音調濾波器(pitchfilter)。一旦除去這些冗余,得到的剩余信號就能模擬成白色高斯噪聲,這也必須編碼。這種技術的基礎是計算一個稱為LPC濾波器的參數,該濾波器利用人的聲道模型來進行語音波形的短期預測。另外,與語音的音調有關的長期作用則通過計算一個主要模擬人的聲帶的音調濾波器的參數而得到模擬。最后,這些濾波器還必須被激勵,這是通過從碼書的大量隨機激勵波形中確定一個在激勵上述兩個濾波器的時候產生最接近原始語音的效果的波形而完成的。這樣,被傳送的參數涉及到三項(1)LPC濾波器,(2)音調濾波器,(3)碼書激勵。聲碼技術的應用在嘗試減少信道中傳送的信息量而仍舊保持再生語音的質量這一點上離目標更進了一步,雖然如此,但還需要采用其它技術,來實現進一步的縮減。以前用來縮減信息傳送量的一種技術是聲音動作選通。在這種技術中,語音停頓時不傳送信息。這種技術實現了預期的數據縮減效果,但存在著幾個缺陷。在許多情況下,由于削去了字語的初始部分,語音質量降低了。在不動作時切斷信道的另一問題是系統用戶感覺到缺少了通常伴隨著語音的背景噪聲,因此認為信道的質量低于普通電話。動作選通的再一個問題是,在沒有語音時背景中偶然的突發噪聲會引發發送器,在接收器中產生惱人的噪聲群。改進聲音動作選通系統中合成語音的質量的一個嘗試是在譯碼過程中加入合成的令人舒適的噪聲。雖然通過加入舒適的噪聲達到了質量上的某些提高,但是,由于舒適的噪聲并不模擬編碼器中的實際背景噪聲,所以它并不能顯著地改進總體質量。進行數據壓縮以實現需要傳送的信息的縮減的一種更好的技術是進行可變速率聲音編碼。因為語音本身含有靜默期間,例如停頓,所以,代表這些期間所需的數據量可以縮減。可變速率聲音編碼通過降低這些靜默期間的數據速率而最有效地利用了這一事實。在靜默期間數據速率的降低,與數據傳送完全停止相反,克服了與聲音動作選通相關的難題,同時實現了傳送信息的縮減。因而,本發明的一個目的是提供一種利用可變速率聲音編碼技術來壓縮語音的新穎和改進的方法和系統。本發明采用了上述類別語音編碼器的聲音編碼算法,即編碼激勵線性預測編碼(CELP)、隨機編碼或矢量激勵語音編碼。CELP技術本身就能使表示語音所必需的數據量顯著減少,并在重新合成時給出高質量的語音。如前所述,聲碼器參數就每一幀進行更新。本發明的聲碼器藉助于改變模型參數的頻率和精度,形成可變的輸出數據速率。本發明極顯著地不同于基本的CELP技術,在語音動作的基礎上產生可變的輸出數據速率。其結構被定義后,使得參數在語音停頓過程中較少或以較低精度進行更新。該技術使得要傳送的信息量更加減少。被利用來降低數據速率的關鍵是聲音動作因子,它是某一指定說話者在交談過程中實際說話的平均時間百分比,就通常的雙向電話交談而言,該平均數據速率可降到1/2或更多。在語音停頓過程中,聲碼器只對背景噪聲進行編碼。在這些時候,與人的聲道模型有關的某些參數勿需傳送。如前所述,先前在靜默過程中限制信息傳送量的途徑稱為聲音動作選通,這是一種在靜默的期間不傳送信息的技術。在接收側,該期間中加入合成的“舒適噪聲”。與此相反,可變速率聲碼器持續不斷地進行數據傳送,在較佳實施例中是以大約介于8Kbps和1Kbps之間的速率進行的。進行連續數據傳送的聲碼器消除了對“舒適噪聲”的需求,而以背景噪聲的編碼給重新合成的語音提供更真實的質量。因而,本發明在語音和背景音之間進行平滑的轉變,藉此,在重新合成的語音質量上,比聲音動作選通有了更顯著的改善。本發明還結合了一種掩蓋發生的錯誤的新穎技術。因為數據要通過一個可能有噪音的信道傳送,如在無線電線路中傳送,所以,它必須在數據中能容錯。利用信道編碼來減少所遇到的出錯總數的先有技術在減少錯誤方面能夠有某些成功之處。但是,僅有信道編碼還不能完全達到保證高質量再生語言所必需的錯誤警戒水平。在聲音編碼持續進行的可變速率聲碼器中,一個錯誤可能會破壞涉及到某個重要的語音內容的數據,例如與一個單詞或一個音節開頭部分有關的數據。基于線性預測編碼的聲碼器所帶來的一個典型難題是,與聲道模型有關的參數中的錯誤會產生類似人聲的聲音,還會將原始單詞的發音改變到足以使聽者迷惑的程度。在本發明中,錯誤被掩蓋住,以降低其可覺察程度。這樣,本發明所采用的錯誤掩蓋技術使得錯誤對語音清晰度的影響急劇減少。因為任何參數能夠改變的最大數量在低速率下被限制在較小范圍中,所以,在這些速率下所傳送的參數中的錯誤會較少地影響語音質量。由于在不同速率下的錯誤對語音質量有不同的可覺察的影響,所以,傳送系統可以最優化,以對較高速率的數據提供更多保護。因而,作為一個附加特征,本發明容忍信道錯誤能力較強(具有魯棒性)。本發明通過采用可變速率輸出形式的CELP算法,使得語音壓縮率根據聲音大小不同在8∶1到64∶1范圍內動態地變動。剛才的壓縮因子是對μ律輸入而言的,對于線性輸入,該壓縮因子將增大一倍。速率的確定是對各個幀分別進行的,以便充分地得益于聲音動作因子。即使由于語音停頓而產生較少的數據,重新合成的背景噪聲讓人察覺到的質量降低也是最小的。利用本發明的技術,在最大數據速率8Kbps下可以實現質量近似于長途電話的語音,在普通對話中的平均數據速率處于3.5Kbps的量級。本發明能夠檢測出語音中的短暫停頓,因而實現了有效聲音動作因子的降低。速率確定是逐幀進行的,沒有遺漏,因而,在短到一個幀周期的語音停頓間隙內數據速率可放慢,對較佳實施例,幀周期的典型值為20msec。因而,可以捕捉諸如在音節之間的那些停頓。因為不僅詞組之間的長間歇停頓可以編碼成較低速率,而且短暫停頓也可以,所以,這一技術降低了聲音動作因子,在程度上超過了通常所考慮到。因為速率確定是逐幀進行的,所以不會象聲音動作選通系統那樣,削去單詞的初始部分。在聲音動作選通系統中發生的這種性質的削去歸因于語音檢測和數據傳送再開始之間的延遲。在每一幀基礎上進行的速率確定使得語音中所有的變化都有自然的聲調。在聲碼器正常傳送的情況下,在接收端一直能聽到講話者周圍的背景噪聲,因而在語音停頓時有更自然的聲音。這樣,本發明實現了向背景噪聲的平穩轉換。聽者在語音中聽到的背景音不會象聲音動作選通系統中那樣,在停頓時突然轉變成一種合成的舒適噪聲。因為背景噪聲持續地被編碼后進行傳送,所以,背景中的重要事件可以完整清晰地得到傳送。在某些情況下,重要的背景噪聲甚至可以以最高速率進行編碼。例如,當背景中有一個人大聲說話,或者有一輛救護車從站在街角處的一個用戶身旁開過的時候,可能進行最高速率編碼。但是,一成不變或者緩慢變化的背景噪聲會以低速率進行編碼。利用可變速率聲音編碼能夠確保基于碼分多路訪問(CDMA)的數字蜂窩式電話系統的容量增加一倍以上。因為在CDMA中,信道間的干擾隨著任一信道中數據傳送速率的降低而自動地減少,所以,CDMA和可變速率聲音編碼是完全匹配的。與此相反,看一下指定傳送時隙的系統,如TDMA或FDMA等。為了使這種系統得益于數據傳送速率的降低,需要進行外部干預,以協調將不用的時隙轉讓給其它用戶。這種系統中固有的延遲意味著只有在長時的語音停頓過程中才可能轉讓信道。因而,不能充分地得益于聲音動作因子。但是,出于上述其它原因,在外部協調下,可變速率聲音編碼在CDMA之外的系統中有用。在CDMA系統中,當需要附加的系統容量時可以略微降低語音質量。簡而言之,該聲碼器可以看作是多個聲碼器以不同的速率工作,產生不同的語音質量。因而,語音質量可以混合起來,以進一步降低平均數據傳送速率。初步的實驗顯示出,將全速和半速聲音編碼語音混合起來,亦即最大允許數據速率在8Kbps與4Kbps之間逐幀變化,藉此,得到的語音比半速可變,即最大值為4Kbps情況下質量要好,而差于全速可變,即8Kbps最大值的情況。眾所周知,在絕大多數電話交談中,每次只有一個人說話。全雙工電話線路可以增加一個速率聯鎖的附加功能。如果線路的一個方向上以最高傳送速率進行傳送,那么,另一方向就被迫以最低速率傳送。鏈路兩個方向上的聯鎖保證對鏈路每一方向的平均使用不超過50%。但是,當信道切斷時,例如在動作選通中速率聯鎖情況下,收聽者在對話中無法打斷對方的談話,成為說話者。本發明容易地提供了藉助于設定聲音編碼速率的控制信號進行速率聯鎖的能力。最后應該注意到,利用可變速率聲音編碼系統,通信信息可以和對語音質量影響極小的語音數據分享信道。例如,一個高速率幀可以分割成兩半,一半用于傳送較低速率聲音數據,另一半用于通信數據。在較佳實施例的聲碼器中實現了聲音傳送在全速率和半速率聲音編碼語音之間僅有輕微的語音質量降低。因而,為了與其它數據分享傳送而以較低速率進行語音的聲音編碼在語音質量上只給用戶帶來幾乎不能察覺的差異。從下文中與附圖相結合的詳細說明中,本發明的特征、目的和優點將更為顯而易見,在所有附圖中,類似的標號標志相應的對象,其中圖1a-1e以圖線形式示出聲碼器在各種速率下的分析幀和子幀;圖2a-2d是一系列表示聲碼器在不同速率下輸出位分布的圖表;圖3是一例示編碼器的大致框圖;圖4是編碼器的流程圖;圖5是例示譯碼器的大致框圖;圖6是譯碼器流程圖;圖7是編碼器更詳細的功能性框圖;圖8是一例示漢明窗口和自相關子系統的框圖;圖9是一例示速率確定子系統的框圖;圖10是一例示LPC分析子系統的框圖;圖11是一例示LPC至LSP轉換子系統的框圖;圖12是一例示LPC量化子系統的框圖13是例示LSP插值及LSP至LPC轉換子系統的框圖;圖14是用于音調檢索的自適應碼書的框圖;圖15是編碼器的譯碼器的框圖;圖16是音調檢索子系統的框圖;圖17是碼書檢索子系統的框圖;圖18是數據壓縮子系統的框圖;圖19是譯碼器更詳盡的功能性框圖;圖20a-20d是顯示譯碼器在不同速率下接收到的參數和子幀譯碼數據的圖表;圖21a-21c是進一步顯示譯碼器在特定場合下接收到的參數及子幀譯碼數據的圖表;圖22是LSP反量化子系統的框圖;圖23是帶有后置濾波及自動增益控制的譯碼器更詳細的框圖;圖24是自適應亮度濾波器特性的圖線。根據本發明,利用眾所周知的技術對諸如語音和/或背景噪聲之類聲音進行取樣并數字化。例如,模擬信號可以用標準的8位/μ律格式轉換成數字格式,然后進行μ律/標準編碼轉換。在另一方式下,模擬信號可以直接轉換成標準脈沖編碼調制(PCM)格式的數字形式。這樣,在該較佳實施例中,每一取樣由一16位的數據字表示。眾多取樣被組織成輸入數據的幀,每一幀由預定量的取樣組成。在現在揭示的實施例中,就8KHz的取樣頻率進行考慮。對于8KHz取樣頻率,每幀由160個取樣或20msec的語音組成。應該理解,其它取樣頻率和幀尺寸也可以采用。聲音編碼領域包括許多不同的語音編碼技術,其中之一是CELP編碼技術。在前文提到論文“一種4.8Kbps的編碼激勵線性預測編碼器”中描述了這種CELP編碼技術的概要。本發明采用一種形式的CELP編碼技術,以提供編碼語音數據的可變速率,其中,LPC分析是對一定量的取樣進行的,而音調和碼書檢索則是根據傳送速率對變量的取樣進行的。在原理上,參照圖3和5討論應用于本發明中的CELP編碼技術。在本發明的該較佳實施例中,語音分析幀為20ms長,意味著所提取的參數以每秒50次的脈沖進行傳送。此外,數據傳送速率大致從8Kbps變化至4Kbps、2Kbps和1Kbps。在全速率(亦稱為速率1)下,數據傳送處于8.55Kbps的速率下,為每一幀而編碼的參數用了171位,其中包括一個11位的內部CRC(循環冗余檢驗)。除去CRC位,速率將是8Kbps。在半速率(亦稱為速率1/2)下,數據傳送以4Kbps的速率進行,每一幀的編碼參數用了80位。在四分之一速率(亦稱為速率1/4)下,數據傳送為2Kbps的速率,每幀的編碼數據用了40位。在八分之一速率(亦稱為速率1/8)下,數據傳送速率略低于1Kbps,各幀的編碼參數使用16位。圖1例示出語音數據的一個分析幀10,以及它與在LPC分析中采用的漢明窗口12的關系。不同速率下的LPC分析幀、音調和碼書子幀以圖表形式在圖2a-2d中示出。應該理解,LPC分析幀在所有速率下是大小相同的。現在參見附圖,具體講是圖1a,LPC分析是采用幀10的160個語音數據取樣完成的,它們由漢明窗口12窗口化。如圖1a所示,各個幀中的取樣s(n)記數為0-159。漢明窗口12是這樣定位的,偏離幀10中的60個取樣。該漢明窗口12從當前的數據幀10的第60個取樣s(59)開始,延續進入下一數據幀14,包括其第59個取樣s(58)。因而,為當前幀幀10產生的加權數據也含有以下一幀幀14的數據為依據的數據。根據數據傳送速率,對于圖1b-1e中示出的數據幀10的不同子幀進行多次檢索,以計算出音調濾波器和碼書激勵參數。應該理解成,在本實施例中,給幀10只選擇一個速率,因而音調和碼書檢索在不同大小的子幀中對應于下面說明的選擇速率進行。然而為了示意,在圖1b-1e中示出在本較佳實施例的各種允許速率下對幀10的音調和碼書檢索的子幀結構。如圖1a所示,在所有速率下,對每一幀10都有一次LPC計算。如圖1b所示,在全速率下,對應每一音調子幀16有兩個碼書子幀18。在全速率下有四次音調更新,四個音調子幀16各一次,每次長為40個取樣(5ms)。此外,在全速率下,有八次碼書更新,八個碼書子幀18各一次,每次長為20個取樣(2.5ms)。在半速率下,如圖1C所示,對應每一音調子幀20,有兩個碼書子幀22。音調更新兩次,兩個音調子幀20各一次,而碼書更新四次,四個碼書子幀22各一次。在四分之一速率下,如圖1d所示,對單個音調子幀20有兩個碼書子幀26。對音調子幀24進行一次音調更新,而碼書則為兩次,兩個碼書子幀26各一次。如圖1e所示,在八分之一速率下,不確定音調,在對應于幀10的幀28中碼書只更新一次。另外,雖然LPC系數每幀只計算一次,但是,在線頻譜對(LSP)表示式中,利用從前一幀得到的LSP頻率對它們線性內插達四次,以逼近漢明窗口位于每一幀中心時的LPC分析的結果。其例外情況是在全速率下對碼書子幀LPC系數不被內插。LSP頻率計算的細節在此后說明。在較低速率下音調和碼書檢索較少地進行,此外,給LPC系數的傳送也分配少量位數。在不同速率下配置的位的數量示出在圖2a-2d中。圖2a-2d中的每一個表示出分配給語音的每一160取樣幀的聲碼器編碼數據位的數量。在圖2a-2d中,各個LPC塊30a-30d中的數量是在相應速率下用于短期LPC系數編碼的位數。在本較佳實施例中,用于LPC系數編碼的位數在全、半、四分之一和八分之一速率下分別是40、20、10和10。為了采用可變速率編碼,LPC首先變換成線頻譜對(LSP),得到的LSP頻率用DPCM編碼器單獨進行編碼。LPC的階數為10,因而有10個LSP頻率和10個獨立的DPCM編碼器。對DPCM編碼器的位分配按照表I進行。表I</tables>在編碼器和譯碼器中,LSP頻率都在用于音調和碼書檢索之前轉換回LPC濾波器系數。關于音調檢索,圖2a示出在全速率下,音調更新計算四次,對語音幀的每四分之一長度各一次。對于全速率下的每次音調更新,新的音調參數編碼用了10位。如圖2b-2d所示,在其它速率下,音調更新的次數不相同。當速率降低時,更新的次數也減少。圖2b示出在半速率下的音調更新,它計算兩次,對語音幀的每一半各進行一次。與此類似,圖2c示出在四分之一速率下的音調更新,對每個語音幀計算一次。同全速率一樣,每次半速率和四分之一速率音調更新也用了10位來將新的音調參數編碼。但在八分之一速率下,如圖2d所示,不計算音調更新,因為在沒有或很少語音以及音調冗余不存在的時候,就采用該速率來對各個幀編碼。在每10位音調更新值中,7位表示音調滯后,而3位表示音調增益。音調滯后限制在17和143之間。音調增益線性是量化至0和2之間,以便用3位的值來表示。關于碼書檢索,圖2a示出,在全速率下碼書更新計算八次,語音幀的每八分之一各一次。全速率下的每次碼書更新用10位來進行新的碼書參數編碼。圖2b-2d中示出,在其它速率下進行不同次數的碼書更新。然而,隨著速率降低,碼書更新次數也減少。圖2b示出半速率下的碼書更新,它計算四次,對語音幀的每四分之一各一次。圖2c示出四分之一速率下的碼書更新,計算兩次,對語音幀的每一半各一次。同全速率下一樣,每個半速率和四分之一速率音調更新用10位來將新碼書參數編碼。最后,圖2d示出八分之一速率下的碼書更新,對每一語音幀進行一次計算。要注意到,在八分之一速率下,傳送了6位,其中兩位代表碼書增益,其余四位是隨機位。后文將進一步討論碼書更新的位分配。為碼書更新而分配的位數表示將音調預測余量矢量量化所需的數據位。在全、半和四分之一速率下,每次碼書更新由7位碼書索引加3位碼書增益總共10位數據組成。碼書增益是用工作在對數區域的差分脈碼調制(DPCM)編碼器進行編碼的。對于八分之一速率,雖然也可以采用類似的位分布,但最好用一不同的方案。在八分之一速率下,碼書增益用兩位表示,而四個隨機產生的位則與接收到的數據一起使用,作為替代碼書的偽隨機數發生器的種子。參見圖3所示的編碼器框圖,LPC分析是以開環方式進行的。從輸入語音取樣s(n)的各個幀中計算出LPC系數(α1-α10),如后文中說明,由LPC分析/量化器50來完成,已供共振峰合成濾波器60使用。然而,音調檢索的計算是以閉環方式進行的,通常這稱作分析-合成方法。但是,在實際應用中,采用一種新穎的閉環/開環混合技術來進行音調檢索。在音調檢索中,通過選取使輸入語音與合成語音的均方之差為最小的參數而進行編碼。為了簡化這部分的討論,速率的問題不作考慮。但在下文中將更詳細地討論選出的速率對音調和碼書檢索的影響。在圖3所示的初步實施例中,感知加權濾波器52由下列等式特征化W(z)=A(z)A(z/μ)------(1)]]>其中A(z)=Σi=110αiZ-i------(2)]]>它是共振峰預測濾波器,μ是感知加權參數,在本實施例中,μ=0.8。音調合成濾波器58由下列等式特征化1P(z)=11-bz-L------(3)]]>下文討論共振峰合成濾波器60,它是加權濾波器,由下列等式特征化H(z)=(1A(z))W(z)=1A(z/μ)-----(4)]]>輸入語音取樣S(n)由感知加權濾波器52加權,所產生的加權語音取樣X(n)作為和輸入提供給加法器62。感知加權用于給低信號功率頻率中的錯誤加權。在這些低信號功率頻率中,噪聲更易察覺。合成的語音取樣X’(n)從共振峰合成濾波器60輸出作為差輸入加到加法器62與X(n)作減法運算。加法器62輸出的取樣值之差輸入至均方差(MSE)單元64,它們被平方后累加。WSE單元64的結果提供給最小化單元66,它產生音調滯后L、音調增益b、碼書索引I和碼書增益G的數值。在最小化單化66中P(z)中的音調滯后參數L的所有可能值與來自乘法器56的數值c(n)一起輸入音調合成濾波器58。在音調檢索過程中,碼書沒有任何貢獻,即c(n)=0。由最小化單元66選出使輸入語音與合成語音的加權差最小的L和b的數值。音調合成濾波器58產生并輸出P(n)值給共振峰合成濾波器60,一旦找到音調濾波器的音調滯后L和音調增益b,就以類似方式進行碼書檢索。應該理解,圖3是本發明所采取的分析-合成方法的原理表示。在本發明的例示應用中,這些濾波器不應用在典型的閉環反饋結構中。在本發明中,在檢索過程中反饋聯系被切斷,而代之以開環共振峰余量,其細節在下文中提供。最小化單元66然后產生碼書索引I和碼書增益G的值。碼書54的輸出值是按照碼書索引I從許多隨機高斯矢量值中選出的,在乘法器56中乘以碼書增益G,產生音調合成濾波器58中所用的c(n)值序列。選取使均方差為最小的碼書索引I和碼書增益G用于傳送。應注意到,感知加權W(z)既通過感知加權濾波器52加在輸入語音上,也通過共振峰合成濾波器60中包含的加權功能加在合成語音上。因而,共振峰合成濾波器60實際上是加權后的共振峰合成濾波器,它把等式1的加權功能與典型的共振峰預測濾波器特性組合起來,產生等式3的加權共振峰合成功能。應該理解的是,換種方式,感知加權濾波器52可以放在加法器62和MSE單元64之間。在這種情況下,共振峰合成濾波器60具有通常的濾波器特性圖4示出用圖3的編碼器對語音編碼時所需步驟的流程。為了說明,涉及速率判定的步驟包含在圖4的流程中。在步驟80,從取樣電路獲取數字化語音取樣,在步驟82中計算出LPC系數。在LPC系數計算中用到了漢明窗口和自相關技術。在步驟84,在本實施例中依據幀能量對重要的幀作出初步的速率確定。為了有效地以少量位數將LPC系數編碼,在步驟86,LPC系數轉成線頻譜對(LSP)頻率,然后在步驟88量化,以便傳送。一種選擇方案是,在步驟90可以進行附加的速率確定,在步驟92,如果認為對初始速率作的LSP量化不充分,則可增加速率。在步驟94,對于處在分析中的語音幀的第1個音調子幀,LSP頻率經內插后轉換成LPC系數,用于進行音調檢索。在音調檢索中,碼書激勵設置為零。在步驟96和98的作為由先前討論的合成方法所進行的一種分析的音調檢索中,就每一可能的音調滯后L,將合成語音與原始語音比較。對于每一L值,確定一個取整數值的最佳音調增益b。在L和b值的組合中,最佳的L和b值組合給出合成語音與原始語音之間的最小感知加權均方誤差。在所確定的音調子幀的L、b最佳值中,在步驟100將b值量化,以便與對應的L值一起傳送。在音調檢索的另一種實現方法中,b值可以作為音調檢索一部分進行量化,這些量化值用于進行音調檢索。因而,在這種實現方式中消除了在音調檢索之后選中的b值在步驟100的量化要求。對于處在分析中的語音幀的第1碼書子幀,在步驟102,LSP頻率經內插后轉換成LPC系數,以用于進行碼書檢索。然而,在本實施例中,在全速率下,LSP頻率僅僅內插至音調子幀水平。由于在各個頻率下音調和碼書子幀的大小有差異,在音調檢索之外,對碼書檢索也進行這種內插和轉換步驟。只有速率1/8是例外,因為不計算音調數據,所以這一問題懸而未決。在步驟104和106的碼書檢索中,在音調合成濾波器中用到音調滯后L和音調增益b的最佳值,使得就每一個可能的碼書索引I,將會成語音與原始語音作比較。對于每個I值,確定一個取整數值的最佳碼書增益G。I和G值組合中,最佳的I和G值組合給出合成語音與原始語音之間最小的誤差。在給碼書子幀確定的最佳值I和G中,G值在步驟108被量化,以便與對應I值一起傳送。在碼書檢索的另一種變換應用中,G值可以量化成碼書檢索的一部分,這些量化值用于進行碼書檢索。在這種變換應用中,省除了碼書檢索之后在步驟108將選中的G值量化的要求。在碼書檢索之后,編碼器中的一個譯碼器在I、G、L和b的最佳值下運行。編碼中的譯碼器的運行使得編碼濾波存儲器重組,以用于以后的子幀。然后在步驟110進行驗證,以確定剛完成分析的該碼書子幀是否對應于已進行音調檢索的音調子幀的碼書子幀組中的最后一個碼書子幀。換句話說,確認是否還有其他對應于該音調子幀的碼書子幀。在本實施例中,對應每一音調子幀有兩個碼書子幀。如果確認有另一個對應于該音調幀的碼書子幀,則對該碼書子幀重復步驟102-108。如果不再有對應于該音調幀的碼書子幀,則在步驟112進行驗證,以確定處于分析中的語音幀中是否有其他任何音調子幀存在。如果在當前處于分析中的語音幀中有另一個音調子幀存在,則對每個音調子幀和對應的碼書子幀重復步驟94-110。當目前處于分析中的語音幀的計算都已完成之后,在步驟114,將代表語音幀的LPC系數的數值,即各音調子幀的音調滯后L和增益b和各碼書子幀的碼書索引I和增益G進行壓縮,以便傳送。參見圖5,其中示出一個譯碼器框圖,按收到的LPC系數(αi),音調滯后和增益(L&b)、碼書索引和增益(I&G)用來合成語音。同圖3一樣,為了簡化討論,在圖5中也不考慮速率信息。數據速率信息可以作為輔助信息傳送,在某些情況下,可以在信道解調級導出。譯碼器由碼書130組成,得到所接收到的碼書索引,或者在八分之一速率下得到隨機種子。碼書130的輸出提供給乘法器132的一個輸入端,而乘法器132的另一輸出端接收碼書增益G。乘法器132的輸出與音調滯后L和增益b一起供給音調合成濾波器134。音調合成濾波器134的輸出與LPC系數αi一起供給共振峰合成濾波器136。共振峰合成濾波器136的輸出供給自適應后置濾波器138,其中濾波和輸出的是再生語音。后文中將討論,有一種形式譯碼器是在編碼器中實現的。編碼器的譯碼器不包括自適應后置濾波器138,但是包括一個感知加權濾波器。圖6是與圖5譯碼器的動作相對應的流程。在步驟150譯碼器中,根據接收到的參數重建語音。具體來講,在步驟152,接收到的碼書索引值輸入進碼書,產生碼矢量或碼書輸出值。在步驟154,乘法器接收該碼矢量和碼書增益G,并將這些值相乘,得出的信號提供給音調濾波器。應該注意到,碼書增益G是通過將收到的DPCM參數譯碼和反量化而得以重建的。在步驟156,音調合成濾波器得到所接收到的音調滯后L和增益b,以及乘法器輸出信號,以對乘法器輸出進行濾波。音調合成濾波器對碼書矢量濾波后得到的數值輸入共振峰合成濾波器。在步驟158,LPC系數αi與供給共振峰合成濾波器,用于對音調合成濾波器的輸出信號濾波。在譯碼器中,將收到的參數譯碼成量化LSP頻率,將LSP頻率反量化并轉換成LPC系數αi,藉此重建LPC系數,以進行內插。在步驟160,共振峰合成濾波器的輸出提供給自適應后置濾波器,量化噪聲在其中被掩蓋,重建后的語音得到增益控制。在步驟162,重建后的語音輸出,以轉換成模擬形式。現在參見圖7a和7b的框圖,說明本發明的語音編碼技術的進一步細節。在圖7a中,各個數字化語音取樣的幀提供給一個漢明窗口系統200,在該子系統中,輸入語音在自相關子系統202進行自相關系數計算之前被窗口化。圖8的例示應用中示出了漢明窗口子系統200和自相關子系統202。漢明窗口子系統200由通常是80×16位的ROM的查算表250和乘法器252組成。在每一速率下,語音的窗口中心處于160個取樣長的分析幀的第139和140個取樣之間。這樣,用于計算自相關系數的窗口偏移分析幀60個取樣。因為漢明窗口是中心對稱的,所以窗口化是利用包含有160個WH(n)值中的80個值的ROM表進行的。漢明窗口的偏移是通過將ROM的地址指針相對于分析幀的第一個取樣偏移60個位置而實現的。這些值由乘法器以單精度與對應的輸入語音取樣相乘。在分析窗口中,將s(n)作為輸入語音信號,因而窗口化的語音信號Sw(n)被定義為Sw(n)=s(n+60)WH(n)0<=n<=79(5)和Sw(n)=s(n+60)WH(159-n)80<=n<=159(6)查算表250內容的16進制例示值在表II中給出。這些數值解釋成具有14個小數位的二進制補碼,表格要從左到右、從上到下閱讀。表II0x051f0x05250x05360x05540x057d0x05b10x05f20x063d0x06940x06f60x07640x07dc0x085e0x08ec0x09830x0a240x0ad00x0b840x0c420x0d090x0dd90x0eb00x0f900x10770x11660x125b0x13570x14590x15600x166d0x177f0x18950x19af0x1acd0x1bee0x1d110x1e370x1f5e0x20870x21b00x22da0x24030x252d0x26550x277b0x28a00x29c20xae10x2bfd0x2d150x2e290x2f390x30430x31480x32470x333f0x34310x351c0x36000x36db0x37af0x387a0x393d0x39f60x3aa60x3b4c0x3be90xec7b0x3d030x3d800xdf30x3e5b0x3eb70x3f090x3f4f0x3f890x3fb80x3fdb0x3ff30x3fff自相關子系統202由寄存器254、多路轉換器256、移位寄存器258、乘法器260、加法器262、循環移位寄存器264和緩存器266組成。窗口化的語音取樣Sw(n)每隔20ms運算一次并鎖存在寄存器254中。在LPC分析幀的第一個取樣Sw(o)上,移位寄存器258和264中復位到0。在每一個新的取樣Sw(n)上,多路轉換器256接收一個新的取樣選擇信號。該信號使取樣能夠從寄存器254進入多路轉換器。新的取樣Sw(n)也提供給乘法器260。與取樣Sw(n-10)相乘,取樣Sw(n-10)處在移位寄存器258的未位SR10上。得到的數值在加法器262中與循環移位寄存器264的未位CSR11上的數值相加。移位寄存器258和260每收到一次時鐘脈沖,就在移位寄存器258的首位SR1中用Sw(n)替換Sw(n-1),并替換先前在位置CSR10中的數值。在移位寄存器258有時鐘脈沖時,新脈沖選擇信號從多路轉換器256的輸入端中去除,使得當前處在移位寄存器260位SR10中的取樣Sw(n-9)被允許進入多路轉換器256。在循環移位寄存器264中,先前在位CSR11上的數值移入首位CSR1中。新取樣選擇信號從多路轉換器中去除后,移位寄存器258置位,以和循環移位寄存器264一樣,進行數據的循環移位。對每個取樣,移位寄存器258和264總共都得到11次時鐘脈沖,因而執行11次乘積/累加動作。在對160個取樣進行時鐘輸入后包含在循環移位寄存器264中的自相關結果作為R(0)-R(10)值時鐘輸入緩存器266。所有移位寄存器復位到零,對窗口化語音取樣的下一個幀重復此過程。回頭再參見圖7a,對語音幀計算好自相關系數后,速率確定子系統204和LPC分析子系統206就利用該數據來分別計算幀數據速率和LPC系數。由于這些運算是彼此獨立的,所以,它們可以以任何順序甚至同時計算。這里為了說明,而首先討論速率確定。速率確定子系統204有兩個功能;(1)確定當前幀的速率,(2)重新估算背景噪聲水平。當前分析幀的速率最初是依據當前幀的能量、背景噪聲水平的先前估值、先前速率和來自一控制微機的速率指令確定的。而新的背景噪聲水平是利用背景噪聲水平的先前估值和當前幀能量估算出的。本發明將自適應閾值技術用于速率確定。當背景噪聲變化時,用于選擇速率的閾值也變化。在本實施例中,計算三個閾值,以確定初始的速率選擇RTp。這些閾值是背景噪聲先前估值的二次函數,示出如下T1(B)=-5.544613(10-6)B2+4.047152B+363.1293(7)T2(B)=-1.529733(10-5)B2+8.750045B+1136.214(8)和T3(B)=-3.957050(10-5)B2+18.89962B+3346.789(9)其中,B是背景噪聲的先前估值。幀能量與三個閾值T1(B)、T2(B)和T3(B)作比較。如果幀能量低于所有三個閾值,則選擇最低的傳送速率(1Kbps),即RTp=4速率1/8。如果幀能量低于兩個閾值,則選擇第二個傳送速率(2Kbps),即RTp=3,速率1/4。如果幀能量僅低于一個閾值,就選擇第三個傳送速率(4Kbps),即RTp=2,速率1/2。如果幀能量高于所有閾值,則選取最高傳送速率(8Kbps),即RTp=1,速率1。此后,可以依據前一幀的最終速率RTr來修改初始速率RTp。如果初始速率RTp低于前一幀的最終速率減1,即(RTr-1),則設定一個中間速率RTm=(RTr-1)。在發生高能量信號向低能量信號的轉換時,這種修改過程使得速率緩慢地降低。然而,如果初始速率選擇等于或大于前一速率減1,即(RTr-1),則中間速率RTm設置成與初始速率RTp相同,即RTm=RTp。在這種場合,當發生低能量信號向高能量信號的轉換時,速率會立即提高。最后,中間速率RTm由來自微機的速率約束指令作進一步修改。如果速率RTm大于微機所允許的最高速率,則設定初始速率RTi為最高允許值。與此類似,如果中間速率RTm小于微機允許的最低速率,則初始速率RTi設為最低允許值。在某些情況下,可能會要求以微機決定的速率對所有語音編碼。速率約束指令通過將最高和最低允許速率設為期望速率,而將幀速率設置成期望速率。速率約束指令可用于特殊的速率控制場合,如用于速率聯鎖和模糊及突發傳送,這些都在后文說明。圖9給出速率確定算法的例示執行過程。要起動運算,寄存器270要預先裝入提供給加法器272的數值1。循環移位寄存器274、276和278分別裝載二次閾值等式(7)-(9)的第1、2和3系數。例如,循環移位寄存器274的末位、中位和首位分別裝載計算T1、T2和T3的等式的第1系數。與此類似,循環移位寄存器276的末位、中位和首位分別裝入計算T1、T2和T3的等式的第2系數。最后,循環移位寄存器278的末位、中位和首位分別裝入計算T1、T2和T3的等式的常數項。在各個循環移位寄存器274、276和278中,數值從末位輸出。在計算第1閾值T1時,先前幀的背景噪聲估值B在乘法器280中自乘。得到的B2值乘以第1系數-5.544613(10-6),該系數從循環移位寄存器274的末位輸出。得到的結果在加法器286中加上來自乘法器284的背景噪聲B與循環移位寄存器276末位輸出的第2系數4.047152的乘積。然后,加法器286的輸出值在加法器288中加上循環移位寄存器278的末位輸出的常數項363.1293。加法器288的輸出即為T1的計算值。加法器288輸出的T1計算值在加法器290中減去幀能量值Ef,在本實施例中,Ef是線性區域中的數值R(0),由自相關子系統提供。換種方式,幀能量Ef也可以以分貝數在對數域中表示,它近似為由有效窗口長度歸一化后的第一自相關系數R(0)的對數值Et=10log10R(0)LA/2-----(10)]]>其中,LA是自相關窗口長度。應該理解到,聲音動作也可以從包括音調預測增益或共振峰預測增益Ga在內的其它各種參數中測得Ga=10log10E(10)E(10)-----(11)]]>其中,E(10)是第10次疊代后的預測殘留能量,而E(0)是初始LPC預測殘留能量,后文中說明,在LPC分析中與R(0)相等。利用比較器或限幅器292,從加法器290的輸出中提取二進制補碼差值符號位的補碼,并提供給加法器272,與寄存器270的輸出相加。這樣,如果R(0)與T1之差為正,則寄存器270增量1。如果差值為負,寄存器270保持原樣。然后,循環寄存器274、276和278進行循環,因而,T2的等式(8)的系數出現在其輸出端。同討論閾值T1的過程一樣,重復計算閾值T2和將它與幀能量比較的過程。然后,循環寄存器264、276和278再次循環,使T3的等式(9)的系數出現在其輸出端。閾值T3的計算和與幀能量的比較與上文中說明的相同。在完成所有三個閾值的計算和比較后,寄存器270包含有初始速率估算值RTi。初始速率估算值RTp提供給速率緩降邏輯294。存儲在寄存器298中來自LSP頻率量化子系統的先前幀最終速率RTr也供給邏輯294。邏輯296計算數值(RTr-1),并提供初始速率估算值RTp和數值(RTr-1)中的較大者作為輸出。數值RTm給到速率限制邏輯296。前面說到,微機提供速率限制指令給聲碼器,具體講是給邏輯296。在用到數字信號處理器時,該指令在編碼過程的LPC分析部分結束之前送入邏輯296中。邏輯296確認該速率不超過速率限制值,并在RTm值超出限制值時修改它。如果RTm值在允許速率范圍內,它就作為初始速率值RTi從邏輯296中輸出。初始速率值RTi從邏輯296輸出到圖7a的LSP量化子系統210中。前面提到的背景噪聲估算值用于計算自適應速率閾值。先前幀的背景噪聲估算值B用于建立當前幀的速率閾值。然而,對于每一個幀,背景噪聲估算值被更新后用于為下一個幀確定速率閾值。新的背景噪聲估算值B′是根據先前幀的背景噪聲估算值B和當前幀能量Ef在當前幀中確定的。在確定用于下一幀的新的背景噪聲估算值B′(作為先前幀背景噪聲值B)時,要計算兩個數值。第1個值V1僅僅是當前幀能量Ef。第2個值V2是B+1和KB中的較大者,K=1.00547。為了防止第2個值變得太大,將其限制在一個很大的常數M=160,000之下。選擇兩個值V1和V2中小的一方作為新的背景噪聲估算值B′。數學表示為V1=R(0)(12)V2=min(160000,max(KB,B+1))(13)新的背景噪聲估算值B′是B′=min(V1,V2)(14)其中,min(x,y)是x,y中的最小值,而max(x,y)是x,y中的最大值。圖9進一步示出了背景噪聲估算算法的例示執行過程。第一個值V1僅僅是直接提供給多路轉換器300一個輸入端的當前幀能量Ef。第二個值V2從首先算出的數值KB和B+1中計算得到。在計算數值KB和B+1時,存儲在寄存器302中的先前幀背景噪聲估算值B輸出到加法器304和乘法器306中。應該注意到,存儲在寄存器302中的用于當前幀的先前幀背景噪聲估算值B與在先前幀中計算出的新的背景噪聲估算值B′相等。加法器304還得到一個輸入值1與數值B相加,從而產生B+1。乘法器304還得到一個輸入值K與數值B相乘,從而產生KB。B+1和KB分別從加法器304和乘法器306輸出到多路轉換器308和加法器310的各個輸入端。加法器310和比較器或限幅器312用于選擇B+1和KB中較大的一方。加法器310從KB中減去B+1并將結果提供給比較器或限幅器312。限幅器312提供一個控制信號給多路轉換器308,選擇B+1和KB較大的一方作為輸出。選出的B+1或KB(選中項)從多路轉換器308輸出到限幅器314,限幅器314是飽和型限幅器,當選中項低于常數值M時,輸出選中項或者在選中項超出數值M時輸出數值M。限幅器314的輸出作為第二輸入供給多路轉換器300并作為加法器316的一個輸入。加法器316在另一個輸入端還接收到幀能量值Ef。加法器316和比較器或限幅器318用于選擇數值Ef和限幅器314的輸出中較小的一方。加法器316從限幅器314的輸出值中減去幀能量值,并將結果提供給比較器或限幅器318。限幅器318向多路轉換器300提供一個控制信號。用于選擇Ef值和限幅器314的輸出值中較小的一方。多路轉換器300輸出的選中數值作為新的背景噪聲估算值B′提供給寄存器302,存儲后作為當前幀背景噪聲估算值B用在下一幀中。再參見圖7,各自相關系數R(0)-R(10)從自相關子系統202輸出到LPC分析子系統206中。在LPC分析子系統206中計算出的LPC系數用在感知加權濾波器52和共振峰合成濾波器60中。LPC系數可以通過采用德賓(Durbin)遞推式的自相關方法獲得,該方法在“語音信號數字化處理”(賴賓納和謝弗,普藍蒂斯-豪公司1978年出版)一書中討論過。這種技術是用于獲得LPC系數的高效計算方法。該算法可以用下列等式表示E(0)=R(0),i=1;(15)ki={R(i)-Σi=1i-1αi(i-1)R(i-j)}/Ei-1;-----(16)]]>αi(i)=Ki;(17)αj(i)=αj(i-1)-kiαi-j(i-1)---1<=j<=i-1;-----(18)]]>E(i)=(1-ki2)E(i-1)------(19)]]>如果i<10,則進到等式(16),并取i=i+1(20)十個LPC系數標為αj(10),1<=j<=10。在將LPC系數編碼之前必須確保濾波器的穩定性。濾波器的穩定性是這樣實現的,將濾波器的極點沿徑向向內微量移動,這一變化減小峰值頻率響應的幅值而擴展峰值的帶寬。這種技術作為帶寬擴展是眾所周知的,在拖苦拉等人所著的“PARCOR語音分析-合成中的頻譜平滑”一文(ASSP學報)中有進一步說明。在現情況下通過按比例改變各LPC系數,可以迅速地完成帶寬擴展。因而如表III中所得到的LPC都乘以對應的十六進制數值以產生LPC分析子系統206的最終輸出LPC系數α1-α10。應該注意到,表III中列出的數值是十六進制形式的。用二進制補碼標記時有十五位。在這種形式下數值0×8000表示-1.0,向數值0×7333(或29491)表示0.899994等于29491/32768。表IIIα1=α1(10)·0x7333α2=α2(10)·0x67aeα3=α3(10)·0x5d4fα4=α4(10)·0x53fbα5=α5(10)·0x4b95α6=α6(10)·0x4406α7=α7(10)·0x3d38α8=α8(10)·0x3719α9=α9(10)·0x3196α10=α10(10)·0x2ca1這些運算最好以雙精度進行,即進行32位的除法、乘法和加法。最好有雙精度的準確度,以保持自相關函數和濾波器系數的動態范圍。在圖10中示出了LPC子系統206的一個例示實施例的方框圖,它用到上述等式(15)-(20)。LPC子系統206由三個電路部分組成,一個計算電路330和兩個用于更新主計算電路330的寄存器的緩存更新電路332和334。計算首先是從數值R(1)到R(10)裝入緩存器340中開始的。為了啟動計算寄存器346,通過多路轉換器344預先裝入數值R(1)。寄存器由多路轉換器354用R(0)初始化,緩存器352(它保存十個αj(i-1)數值)由多路轉換器354初始化為全零,緩存器356(它保持十個αj(i)數值)由多數轉換器358初始化為全零,對于計算循環i設定為1。為了明了起見,計數器i和j以及其它運算循環控制在圖中未畫出,但是這種類型的邏輯電路的設計和綜合是處在數字邏輯設計領域中普通熟練者的能力范圍之內的。αj(i-1)數值從緩存器356輸出,以計算等式(14)中的KiE(i-1)項。各個數值R(i-j)從緩存器340輸出,在乘法器360中與αj(i-1)相乘。得到的數值與來自寄存器346的數值在加法器362中作減法,每次相減的結果存儲在寄存器346中以供作下一項減法。在第i個循環中,如等式(14)的求和項中所示,有i-1次乘法和累加運算。在該循環的最后,寄存器346中的數值在除法器364中除以來自寄存器348的數值E(i-1),產生數值ki。然后,該數值ki用在緩存更新電路332中,計算等式(19)中的E(i),數值E(i)在ki的下一個計算循環中用作為數值E(i-1)。當前循環的數值ki在乘法器366中自乘以獲得數值ki2。然后,數值ki2在加法器368中被減去1。這一加法器運算的結果在乘法器370中乘以來自寄存348的數值E(i)。其結果E(i)通過多路轉換器350輸入寄存器348存儲起來作為下一周期的數值E(i-1)。然后,數值ki用來以等式(15)計算數值αi(i)。在這種情況下,數值ki通過多路轉換器358輸出緩存器356。數值ki還用在緩存更新電路334中,以等式(18)從數值αi(i-1)計算出數值αj(i)。緩存器352中現存的數值用于計算αj(i)。如等式(18)所示,在第i個循環中有i-1次運算。在i=1的迭代中,不需要這些運算。對于第i次循環的各個j值,計算出一個αj(i)值。在計算各αj(i)值時,各αi-j(i-1)值在乘法器372中乘以數值ki,以輸出到加法器374。在加法器374中,從另外輸入加法器374的數值αj(i-1)中減去數值kiαi-j(i-1)。各個乘法和加法的結果作為αj(i)值通過多路轉換器358供給緩存器356。對當前循環計算出αi(i)和αj(i)值后,就將剛算出并存儲于緩存器356中的這些數值通過多路轉換器354輸出給緩存器352。存在緩存器356中的數值存儲于緩存器352的相應位置中。這樣,緩存器352得到更新,以計算i+1循環的數值ki。在前一循環的最后產生的數據αj(i-1)在當前循環中用于為下一循環產生更新數據αj(i),注意到這一點是很重要的。必須保留該前一循環的數據,以便為下一循環完整地產生更新數據。這樣,兩個緩存器356和352用于將前一循環的數據保存到更新數據完全產生為止。上述說明是針對在完成更新數值的計算時數據從緩存器356向緩存器352并行轉送作出的。這種執行方式確保舊的數據在計算新數據的整個過程中得以保留,而不會象在設置單個緩存器情況下,舊的數據在完全利用之前就丟失了。上述方式是實現相同結果的現有幾個方式之一。例如,緩存器352和356可以經過多路轉換,以使得在當前循環中依據存儲在一個第一緩存器中的數值計算數值ki時,更新數據存在第二緩存器中,用在下一計算循環中。在下一循環中,數值ki依據存在第二緩存器中的數值算出。第二緩存器中的數值和數值ki用于為下一循環產生更新數據,這些更新數據存在第一緩存器中。緩存器的這種替換使得前一計算循環的數據得以保存,以此產生更新數據,并在不重寫需要用來產生更新數據的先前數據的情況下存儲更新數據。使用這種技術能夠將與下一循環ki值的計算相關的延遲減至最小。因而,在計算ki時乘積/累加的更新可以在計算下一αj(i-1)值的同時進行。在完成最后一個計算循環(i=10)后存在緩存器356中的10個LPC系數αj(10)換算到相應的最后LPC系數αj。向多路轉換器344、376和378提供一個換算選擇信號,因而,存在系數查算表342中的換算數值,即表III的十六進制數值,被選中,通過多路轉換器344輸出。存在表342中的數值按順序在時鐘脈沖控制下輸出,并輸入乘法器360。乘法器360還通過多路轉換器370接收從寄存器356順序輸出的數值αj(10)。換算后的數值通過多路轉換器378從乘法器360輸出到LPC至LSP轉換子系統208(圖7)。為了迅速有效地以少量位數將10個換算后的LPC系數編碼,各系數轉換成線頻譜對頻率,在宋和江發表于ICASSP′84中的文章“線頻譜對(LSP)和語音數據壓縮”中對此有說明。在下列等式(21)和(22)及表IV中示出了LSP參數的計算。LSP頻率是處在0和π之間的下列等式的十個根P(ω)=cos5ω+P1cos4ω+…+P4cosω+P5/2(21)Q(ω)=cos5ω+q1cos4ω+…+q4cosω+q5/2(22)其中,Pn和qn對n=1、2、3、4分別取值,并在表IV中遞歸定義表IVP1=-(α1+α10)-1q1=-(α1-α10)+1P2=-(α2+α9)-P1q2=-(α2-α9)+q1P3=-(α3+α8)-P2q3=-(α3-α8)+q2P4=-(α4+α7)-P3q4=-(α4-α7)+q3P5=-(α5+α6)-P4q5=-(α5-α6)+q4表IV中,α1,……,α10是從LPC分析得到的換算系數。為了簡化,等式(21)和(22)的10個根換算成0到0.5之間的值。LSP頻率的特性是,當LPC濾波器穩定時,兩個等式的根變動;即,最低的根ω1是P(ω)的最低的根,次最低的根ω2是Q(ω)的最低的根,以此類推。在10個頻率中,奇頻率是P(ω)的根,而偶頻率是Q(ω)的根。根的查找方法如下。首先,如上面所示那樣將LPC系數加入,從而以雙精度計算出P和q系數。然后,每隔π/256弧度計算一次P(ω),再觀察這些值的符號變化,辨別在該子區域中的一個根。如果找到一個根,則在該區域兩端之間進行一次線性內插,以迫近根的真實位置。由于頻率的定序特性,在每對P根之間保證存在一個Q根(第5個Q根處于第5個P根與π之間)。在每對P根之間進行對分查找,確定Q根的位置。為了簡便,每個P根近似取最近的π/256數值,在這些近似值之間進行對分查找。如果未找到根,則使用先前找到根的最近的幀的LSP頻率的非量化值。現在參見圖11,其中示出一個用于產生LSP頻率的例示電路。上述操作需要總共257個在0和π之間的可能的余弦值,它們在雙精度下存儲在余弦表400中,該表格由模256計數器402尋址。對于輸入表400的各個j值,給出cosω、cos2ω、cos3ω、cos4ω和cos5ω輸出,其中ω=jπ/256(23)j是計數值。余弦表400輸出的數值cosω、cos2ω、cos3ω和cos4ω輸入到相應的各個乘法器404、406、408和410,而數值cos5ω則直接輸入加法器412中。這些值在各乘法器404、406、408和410中分別乘以通過多路轉換器414、416、418和420輸入其中的數值P4、P3、P2和P1。相乘結果也輸入累加器412。此外,數值P5通過多路轉換器422送到乘法器424,同時,常數0.5,即1/2也送到乘法器424。乘法器424的輸出結果也作為另一個輸入給加法器412。為了利用同一電路計算P(ω)和Q(ω)值,根據P/q系數選通信號,多路轉換器414-422在P1-P5或q1-q5之間作出選擇。圖中未示出產生P1-P5或q1-q5的電路,但是,利用一系列將LPC系數和P1-P5或q1-q5進行加減運算的加法器,以及存儲P1-P5或q1-q5值的寄存器,很容易實現該電路。加法器412將輸入值相加,依情況而定,輸出P(ω)或Q(ω)。為了簡便,在以后的討論中將考慮P(ω)值的情況,Q(ω)值以類似方式利用q1-q5數值算出。加法器412輸出P(ω)的當前值,存儲在寄存器426中。先前存在寄存器426中的前一P(ω)值移位至寄位器428中。當前和先前的P(ω)值的符號位在異或門430中異或,以傳給線性內插器434的起動信號的形式顯示零交叉或符號變換。P(ω)的當前和先前數值也從寄存器426和428輸出到線性內插器434,該內插器響應起動信號,在P(ω)發生零交叉的兩個值之間進行內插。該線性內插小數值結果,即與數值j-1的距離,與來自計數器256的數值j一起提供給緩存器436。門430還將起動信號提供給緩存器436,緩存器436允許數值j和對應的小數值FVj存入。在加法器438中,數值j中減去該小數值,作為緩存器436的輸出,或者換種方式,減去后輸入緩存器436。在替換方式下,在輸入緩存器436的j線中用一個寄存器,使得數值j-1與小數值輸入一起輸入緩存器436。小數值可以在存入寄存器436之前或從中輸出時加到數值j-1上。在任何情況下,混合值j+FVj或(j-1)+FVj輸出到除法器440,除以輸入的常數512。只需改變二進制字中的二進制小數點位置,就可以簡單地完成除法操作。這一除法操作為達到處于0和0.5之間的LSP頻率而提供必需的換算。P(ω)或Q(ω)的函數計算需要5次余弦值查表,4次雙精度乘法運算和4次加法運算。算出的根通常只精確到大約13位,并在單精度下存放。LSP頻率提供給LSP量化子系統210(圖7),用于量化。LSP頻率算出之后,就必須量化,以便傳送。十個LSP頻率中的每一個都大致以一偏置數為中心。應該注意到,當輸入語音具有平坦的LSP頻譜特性曲線并且不能做任何短期預測時LSP頻率接近偏置數。偏置數從編碼器中取出,并且用到一個簡單的DPCM量化器。在譯碼器中,偏置數又加回去。由LPC至LSP轉換子系統所提供的各LSP頻率ω1-ω10的偏置數的非,以十六進制形式給出在表V中。表V中給出的數值也是二進制補碼,有15個小數位。十六進制數值0x8000(或-32768)表示-1.0。這樣,表V的第一個值0xfa2f(或-1489)表示-0.045441=-1489/32768。表V子系統中用的預測器等于子系統一個緩存器中存儲的來自先前幀的量化LSP頻率的0.9倍。加入衰減常數0.9,因而信道錯誤最終將消除掉。用到的量化器是線性的,但動態范圍和步長隨速率而變。在高速率幀中,每一LSP頻率有更多位數要傳送,因而,量化級數依賴于速率。在表VI中,示出了每速率下對各頻率的量化的位分配和動態范圍。例如,在速率1,ω1統一量化成4位(即16級),最高量化級為0.025,而最低的是-0.025。表VI</tables>如果由速率確定算法選中的速率的量化范圍不夠大,或者發生斜率溢出,則速率提高到下一個較高的速率上。速率持續提升,一直到動態范圍得到調節或達到全速率為止。在圖12中,給出了運用選擇速率提高技術的裝置的一個例示框圖。圖12以框圖形式示出了LSP量化子系統210的一個例示設備,它包括速率提升電路。圖12中,當前幀LSP頻率從除法器440(圖11)輸出到寄存器442,存儲起來,以在下一幀中進行速率提升限定時輸出。先前幀LSP頻率和當前幀LSP頻率分別從寄存器442和除法器440輸出到速率提升邏輯444,進行當前幀的速率提升限定。速率提升邏輯442還接收到初始速率決定,以及來自速率限定子系統204的速率限制指令。在確定是否必須增大速率時,邏輯444根據當前和先前幀LSP頻率差值的平方之和,將先前幀LSP頻率與當前幀LSP頻率比較。其結果再與一個閾值比較,閾值如被超出,則顯示有必要提升速率來確保高質量的語音編碼。在超出閾值時,邏輯444將初始速率增加一個速率級別,從而給出整個編碼器通用的最終速率。圖12中,各LSP頻率值ω1-ω10逐個與對應的偏置數一起輸入加法器450。從輸入的LSP值中減去偏置數,其結果輸出給加法器452。加法器452還收到一個輸入-預測值,即乘以衰減常數后的先前幀對應的LSP值。加法器452從加法器450的輸出中減去預測值。加法器452的輸出作為量化器454的一個輸入。量化器454由限幅器456、最小動態范圍查算表458、逆步長查算表460、加法器462、乘法器464和位屏蔽466組成。在量化器454中進行量化,首先確定輸入值是否處在量化器454的動態范圍內。輸入值提供給限幅器456,如果該輸入超出了表458提供的限定值,限幅器456就將它限制在動態范圍的上界和下界內。查算表458按照表VI,響應輸入其中的速率和LSP頻率索引i,向限幅器456提供存儲的限定值。限幅器456的輸出值輸入加法器462,從中減去表458提供的動態范圍的最小值。按照表VI中所列的最小動態范圍值,先不管其符號,依據速率和LSP頻率索引i再次確定表格458的輸出值。例如,對于(全速率,ω1),查算表458的值為0.025。加法器462的輸出在乘法器464中乘以一個選自查算表460的數值。查算表460包含有與表VI中所列數值一致的、各個速率下的各LSP值的步長之逆相對應的數值。依據速率和LSP頻率索引i來選擇查算表460的輸出值。對于各個速率和LSP頻率索引i,存在查表460中的數值是((2n-1)/動態范圍),其中,n是代表量化值的位數。例如,對于(速率1,ω1),查算表460的數值是(15/0.05)或300。乘法器464的輸出是介于0和2n-1之間的一個數值,它供給位屏蔽466。位屏蔽466向應速率和LSP頻率索引,根據表VI,從輸入值中提取適當的位數。提出的是輸入值中的n個整數位,從而形成位限制輸出Δωi。數值Δωi是量化未偏置差分編碼LSP頻率,從代表LPC系數的信道中傳送。數值Δωi也通過一個由逆量化器468、加法器470、緩存器472和乘法器474組成的預測器反饋。逆量化器468由步長查算表476、最小動態范圍查算表478、乘法器480和加法器482組成。數值Δωi與選自查算表476的一個數值一起輸入乘法器480。查算表476含有在各個速率下依據于表VI中所列數值的各LSP數值的步長所對應的數值。依據速率和LSP頻率索引i,從查算表476中選擇輸出值。對于各個速率和LSP頻率索引i,存在查算表460中的數值是(動態范圍/2n-1),其中,n是代表量化值的位數。乘法器480將輸入值相乘,提供輸出給加法器482。加法器482從另一輸入接收表478的一個數值。表478的輸出數值根據表VI中所列最小動態范圍數值,無視其符號,由速率和LSP頻率索引i來確定。加法器482將表478提供的最小動態范圍值與乘法器480的輸出值相加,結果輸出給加法器470。加法器470在另一輸入端接收到乘法器474的預測值輸出。這些值在加法器470中相加,并存儲在十個字容量的緩存器472中。在當前幀中緩沖器472的每個先前幀輸出值在乘法器474中乘以常數0.9。乘法器474輸出的預測值如前面討論過的那樣,供給加法器452和470。在當前幀中,緩存器472中存儲的數值是先前幀重建LSP值減去偏置值。相類似,在當前幀中,加法器470的輸出值是不帶偏置的當前幀重建的LSP值。在當前幀中,緩存器472和加法器470的輸出分別提供給加法器484和486,加上偏置數。加法器484和486的輸出值分別是先前幀重建LSP頻率和當前幀重建LSP頻率值。依照下列等式在更低速率下進行LSP平滑化平滑后LSP=a(當前LSP)+(1-a)(先前LSP)(24)其中a=0全速率下a=0.1半速度下a=0.5四分之一速率下a=0.85八分之一速率下先前幀(f-1)重建LSP頻率值ω′i,f-1和當前幀(f)重建頻率值ω′i,f從量化子系統210輸出到音調子幀LSP內插子系統216和碼書子幀LSP內插子系統226。量化后的LSP頻率值Δωj從LSP量化子系統210輸出到數據匯編子系統236,用于傳送。以后說明的加權濾波器和共振峰合成濾波器所用到的LPC系數對于正在編碼的音調子幀是合適的。對各個音調子幀,LPC系數的內插對每個音調子幀進行一次,如表VII表VII速率1ωi=0.75ω′i,f-1+0.25ω′i,f音調子幀1ωi=0.5ω′i,f-1+0.5ω′i,f音調子幀2ωi=0.25ω′i,f-1+0.75ω′i,f音調子幀3ωi=ω′i,f音調子幀4速率1/2ωi=0.625ω′i,f-1+0.375ω′i,f音調子幀1ωi=0.125ω′i,f-1+0.875ω′i,f音調子幀2速率1/4ωi=0.625ω′i,f-1+0.375ω′i,f音調子幀1速率1/8不進行音調檢索音調子幀計數器224用于跟蹤計算音調參數的音調子幀,計數器的輸出提供給音調子幀LSP內插子系統216,用于音調子幀LSP內插。音調子幀計數器224還提供一個輸出給數據壓縮子系統236,指示在選中速率下音調子幀的結束。圖13示出音調子幀LSP內插子系統216的一個例示裝置,它用于對相關音調子幀的LSP頻率進行內插。在圖13中,先前和當前LSP頻率ω′i,f-1和ω′i,f分別從LSP量化子系統輸出到乘法器500和502,再分別乘以存儲器504提供的常數。存儲器504存儲一組常數,并且,根據來自音調子幀計數器的音調子幀數輸入(這在后文討論),提供一個表VII中所列的常數輸出,與先前和當前幀LSP數值相乘。乘法器500和502的輸出按照表VII中的等式在加法器506中相加,形成該音調子幀的LSP頻率值。對于各音調子幀,LSP頻率的內插一旦完成,就執行LSP至LPC的反向轉換,以獲得感知加權濾波器和A(z)的當前系數值。這樣,內插后的LSP頻率提供給圖7的LSP至LPC轉換子系統218。LSP至LPC轉換子系統218將內插LSP頻率逆轉換成LPC系數,用于語音的再合成。先前的參考文章,宋和江所著的“線頻譜對(LSP)和語音數據壓縮”中對本發明在轉換過程中用的算法有全面的討論和推導。計算特征是這樣的,P(z)和Q(z)可以利用LSP頻率由下列等式表示P(z)=(1+Z-1)πi=15(1-2cos(ω2i-1)Z-1+Z-2)-----(25)]]>其中,ωi是P′多項式的根(奇頻率),Q(z)=(1-Z-1)πi=15(1-2cos(ω2i)Z-1+Z-2)-----(26)]]>其中,ωi是Q′多項式的根(偶頻率),A(Z)=Pz+Qz2------(27)]]>這一運算首先是對所有奇頻率i算出數值2cos(ωi)。利用零附近的余弦的5階單精度泰勒級數展開式完成該計算。在余弦表中最接近點處的泰勒展開式可能更準確,但是,零附近的展開式有足夠精度,并且,不會帶來多余的計算。接下去,計數P多項式的系數。多項式之積的系數是單個多項式的系數序列的卷積。上述等式(25)中6個z多項式系數序列的卷積{1,-2cos(ω1),1},{1,-2cos(ω3),1}……{1,-2cos(ω9),1}和{1,1}被算出。P多項式一經算出,就對Q多項式重復相同的程序,上述等式(26)中的6個z多項式系數序列{1,-2cos(ω2),1},{1,-2cos(ω4),1}……{1,-2cos(ω10),1}和{1,1}以及適當的系數被加起來,并除以2,即移動1位,以形成LPC系數。圖13還詳細地示出LSP至LPC轉換子系統的例示執行過程。電路部分508依據輸入值ωi計算出數值-2cos(ωi)。電路部分508由緩存器509、加法器510和515、乘法器511、512、514、517和518、寄存器513和516組成。在計算數值-2cos(ωi)時,寄存器513和516被初始化為零。因為該電路是計算sin(ωi)的,所以,在加法器510中首先先以輸入常數值π/2減ωi。該數值由乘法器511取平方,然后,用乘法器512和寄存器513依次計算數值(π/2-ωi)2、(π/2-ωi)4、(π/2-ωi)6和(π/2-ωi)8。泰勒級數展開式系數C〔1〕-C〔4〕依次和乘法器512的輸出值一起輸入乘法器514。乘法器514的輸出值輸入加法器515,與寄存器516的輸出相加,這些值累加形成輸出C〔1〕(π/2-ωi)2+C〔2〕(π/2-ωi)4+C〔3〕(π/2-ωi)6+C〔4〕(π/2-ωi)8,輸給乘法器517。來自寄存器516的乘法器的輸入與來自加法器510的輸出在乘法器517中相乘。來自乘法器517的數值cos(ωi)在乘法器518中乘以常數-2,從而形成輸出-2cos(ωi),提供給電路部分520。電路部分520用于計算P多項式的系數,它由存儲器512、乘法器522和加法器523組成。存儲器單元P(1)…P(11)的陣列除P(1)置為1之外其余初始化為0。已標到的-2cos(ωi)數值送入乘法器524,執行卷積(1,-2cos(ωi),1),其中,1≤i≤5,1≤j≤2i+1,j<1時P(j)=0。電路部分520是雙份的(未示出),以便計算Q多項式的系數。得到的P(1)-P(11)和Q(1)-Q(11)新的最終值送給電路部分524。電路524用來完成i=1至i=10的十個音調子幀LPC系數αi的計算。它由緩存器525和526、加法器527、528和529、除法器或位移位器530組成。最終值P(i)和Q(i)存儲在緩存器525和526中。P(i)和P(i+1)數值在加法器527中相加,而相應的Q(i)和Q(i+1)值在加法器528中相減,這里1≤i≤10。加法器527和528的輸出,分別為P(z)和Q(z),輸入加法器529,相加并輸出數值(P(z)+Q(z))。將各個位移動一位,從而將加法器的輸出除以2。各移位后的數值(P(z)+Q(z))/2是LPC系數αj輸出。音調子幀LPC系數送給圖7的音調檢索子系統220。除了全速率之外,對選中速率所確定的各個碼書子幀,LSP頻率也經過內插。內插的計算方式與音調子幀LSP內插的相同。碼書子幀LSP內插在碼書子幀LSP內插子系統226中運算,并提供給LSP至LPC轉換子系統228,轉換是以類似于LSP至LPC轉換子系統218的方式進行的。在參見圖3時討論過,音調檢索是一種利用合成技術的分析,通過選擇使輸入語音和合成語音的誤差最小的參數來進行編碼。在音調檢索中,語音是用等式(2)表示頻率特性的音調合成濾波器合成的。每隔20ms,語音幀被劃分成一定量的音調子幀,如前所述,它依賴于為該幀所選擇的數據速率。對于每一個音調子幀分別計算一次參數b和L,即音調增益和滯后。在這兒例示的執行過程中,音調滯后L介于17和143之間的,在b=0的情況下,為了傳送原因L=16。語音編碼器用到了在等式(1)中所列形式的感知噪聲加權濾波器。如前所述,感知加權濾波器的目的是給處在低能量的頻率中的錯誤加權,從而減少錯誤引起的噪聲的影響。感知加權濾波器是從以前建立的短期預測濾波器中導出的。在該加權濾波器以及后文將說明的共振峰合成濾波器中用到的LPC系數是為正在編碼的子幀適當地內插過的數值。在進行合成-分析操作時,在編碼器中用到語音譯碼器/合成器的備份。在語音編碼器中所用的合成濾波器的形式由等式(3)和(4)給出。等式(3)和(4)對應于一個其后有感知加權濾波器的譯碼語音合成濾波器,因而稱其為加權合成濾波器。在假設當前幀時碼書基值為零,即G=0情況下,進行音調檢索。對于每個可能的音調滯后L進行語音合成,并將它與原始語音比較。輸入語音和合成語音之間的誤差在計算其均方誤差(MSE)之前由感知加權濾波器加權。其目的是從所有可能的L和b值中選取使感知加權語音和感知加權合成語音之間的誤差最小的L和b數值。誤差的最小化可以用下列等式表示MSE=1LPΣn=0LP-1(x(n)-x′(n))2-----(28)]]>其中,Lp是音調子幀中取樣的數量,在本實施例中,對全速率音調子幀為40。計算出使MSE最小的音調增益b。對所有允許的L數值重復這些運算,并給音調濾波器選擇產生最小MSE的L和b。最佳音調滯后的計算涉及在n=-Lmax與n=(Lp-Lmin)-1之間所有時間下的共振峰余量(圖3中的P(n)),其中Lmax是最大音調滯后值,Lmin是最小音調滯后值,而Lp是選中速率下的音調子幀長度,n=0是音調子幀的起點。在本實施例中,Lmax=143,而Lmax=17。采用圖14中給出的編號方案,對于速率1/4,n=-143到n=142,而對于速率1/2,n=-143到n=62,對于速率1,n=-143到n=22。當n<0時,共振峰余量就是來自先前音調子幀的音調濾波器輸出,它保存在音調濾波器存儲器中,稱為閉環共振峰余量。在n>=0的時候,共振峰余量是共振峰分析濾波器的輸出,該濾波器具有濾波特性A(z),其輸入是當前分析幀語音取樣。在n>=0時,共振峰余量稱為開環共振峰余量,并且當音調濾波器和碼書在該子幀中作了極好的預測時,正好為P(n)。對于從相關的共振峰余量值計算出最佳音調滯后的說明將參照圖14-17給出。音調檢索是對143個重建的閉環共振峰余量取樣P(n)(n<0)以及Lp-Lmin非量化開環共振峰余量取樣P。(n)(n≥0)作出的。該檢索有效地從一種基本開環檢索,其中L是小的,并且所用到的大部分余量取樣為n>0,逐漸轉變成一種基本閉環檢索,其中L是大的,因而用到的所有余量取樣是n<0。例如,在全速率下利用圖14中的編號方案,其中,音調子幀由40個語音取樣組成,則語音檢索從采用號碼n=-17到n=22的共振峰余量取樣組開始進行。在這一方案中,從n=-17到n=-1,取樣為閉環共振峰余量取樣,而從n=0到n=22,取樣為開環共振峰余量取樣。用于確定最佳音調滯后的下一組共振峰余量取樣是編號由n=-18到n=21的取樣。而從n=-18到n=-1,取樣是閉環共振峰余量取樣,從n=0到n=21,則是開環共振峰余量取樣。對所有取樣組進行該過程,直到給最后的共振峰余量取樣組n=-143至n=-104計算出音調滯后為止。前面就等式(28)討論過,目的是在隨機碼書給出零基值(G=0)的情況下,對于所有可能的L和b值,使x(n)與x′(n)之間的誤差最小,這里x(n)是感知加權語音減去加權共振峰濾波器的零輸入特性曲線(ZIR),x′(n)是濾波器中無存儲時的感知加權合成語音。等式(28)可以重寫成關于b的等式MSE=1LpΣn=0Lp-1(x(n)-by(n))2-----(29)]]>其中y(n)=h(n)*P(n-L)0≤n≤Lp-1(30)其中,y(n)當b=1時是帶有音調滯后L的加權合成語音,而h(n)是具有等式(3)的濾波特性的加權共振峰合成濾波器的沖激響應。該最小化過程等同于使EL值最大化,其中EL=(Exy)2Eyy------(31)]]>其中Exy=Σn=0Lp-1x(n)y(n)------(32)]]>及Eyy=Σn=0Lp-1y(n)y(n)-----(33)]]>對于給定的L,最佳值b為bL=ExyEyy------(34)]]>這一檢索對所有允許的L值重復進行。最佳值b限制為正,因而,對于在檢索中導致任何負的Exy值的L值不作考慮。最后,選出使EL值最大的音調滯后L和音調增益b用于傳送。如前所述,x(n)實際是輸入語音與加權共振峰濾波器的ZIR之間的感知加權差,這是因為,對于后面的等式(35)-(38)中設定的遞歸卷積,已假設濾波器A(z)總是從濾波器存儲器中的零起始。然而,濾波器從濾波器存儲器中的零起始并非實際情況。在合成時,濾波器處在從先前子幀保留下來的狀態下。在執行過程中,在起始點,從感知加權語音中除去初始狀態的影響。在這種方式下,對每一L值,只需計算穩態濾波器A(z)的特性曲線直到p(n),所有存儲器最初為0,并且可以用到遞歸卷積。x(n)的值只需計算一次,但是,共振峰濾波器對音調濾波器的輸出的零狀態響應y(n)要就每一滯后L進行計算。各y(n)的計算涉及許多次不必就每一滯后都進行的冗余乘法運算。下文中說明的遞歸卷積方法用于將所需計算減至最少。關于遞歸卷積,數值yL(n)用y(n)值定義成yL(n)=h(n)*P(n-L)17≤L≤143(35)或yL(n)=∑h(i)p(n-L-i)17≤L≤143(36)從等式(32)和(33)可看出yL(o)=P(-L)h(o)(37)yL(n)=yL-1(n-1)+p(-L)h(n)1≤n≤Lp,17≤L≤143(38)這樣,一旦完成y17(n)的初始卷積,余下的卷積就可以遞歸地進行,大大減少了所需的計算次數。對于速率1的上述特定例子,利用編號為n=-17到n=22的共振峰余量取樣組藉助等式(36)計算出數值y17(n)。參見圖15,編碼器包括圖5譯碼器的備份,即圖7的譯碼器子系統235,但不帶自適應后置濾波器。在圖15中,音調合成濾波器550的輸入是碼書值cI(n)與碼書增益G的乘積。輸出的共振峰余量取樣p(n)輸入共振峰合成濾波器552,經過濾波并作為重建語音取樣s′(n)輸出。在加法器554中,從對應的輸入語音取樣s(n)中減去重建語音取樣s′(n)。取樣s′(n)與s(n)之差輸入感知加權濾波器556。關于音調合成濾波器550、共振峰合成濾波器552和感知加權濾波器556,每一濾波器含有一個濾波器狀態記憶,其中Mp是音調合成濾波器550中的記憶;Ma是共振峰合成濾波器552中的記憶,而Mw是感知加權濾波器556中的記憶。來自譯碼器子系統共振峰合成濾波器552的濾波器狀態Ma提供給圖7的音調檢索子系統220。在圖16中,濾波器狀態Ma用來計算濾波器560的零輸入響應(ZIR),濾波器560計算共振峰合成濾波器552的ZIR。在加法器562中從輸入語音取樣s(n)中減去計算出的ZIR值,其結果由感知加權濾波器564加權。感知加權濾波器564的輸出xp(n)用在等式(28)-(34)中作為加權輸入語音,其中,x(n)=xp(n)。再參見圖14和15,圖14中示出的音調合成濾波器552輸出到自適應碼書568,后者基本上是一個存儲器,用于存儲如上文討論的那樣計算出的閉環和開環共振峰余量取樣。閉環共振峰余量存在存儲器部分570中,而開環共振峰余量存在存儲器部分572中。這些取樣按照前文討論過的編號方案存儲。如上文中討論的那樣,按照各音調滯后L檢索中的使用情況來組織閉環共振峰余量。開環共振峰余量用共振峰分析濾波器574從各音調子幀的輸入語音取樣中算出,濾波器574在計算po(n)值時用到譯碼器子系統共振峰濾波器552的記憶Ma。用于各當前音調子幀的Po(n)數值移位通過一系列延遲元件576,提供給自適應碼書568的存儲器部分572。開環共振峰余量被存儲起來,所產生的第一個余量取樣編號為0,而最后一個編號為142。現參見圖16,共振峰濾波器的沖激響應h(n)在濾波器566中算出,并輸出給移位寄存器580。在濾波器中為每一音調子幀計算這些數值,這在上文中談到共振峰濾波器h(n)的沖激響應時,即談到等式(29)-(30)和(35)-(38)時討論過。為了進一步減少音調濾波器子系統的計算需求,共振峰濾波器h(n)的沖激響應截斷為20個取樣。移位寄存器580及乘法器582、加法器584和移位寄存器586組合起來,如上文中討論的那樣,進行來自移位寄存器580的數值h(n)與來自自適應碼書568的數值c(m)之間的遞歸卷積。執行這一卷積操作是為了在假定音調增益設為1的情況下尋找共振峰濾波器對來自音調濾波器存儲器的輸入的零狀態響應(ZSR)。在卷積電路的操作中,對每一m值,n從Lp循環至1,而m從(Lp-17)-1循環至-143。在寄存器586中,當n=1時數據不移動,而當n=Lp時不鎖存數據。當m≤-17時,數據提供為卷積電路的輸出。繼卷積電路之后的是相關和比較電路,執行檢索,以尋找最佳音調滯后L和音調增益b。相關電路亦稱為均方誤差(MSE)電路,計算ZSR與共振峰濾波器的ZIR和輸入語音即x(n)之間的感知加權差的自相關性和互相關性。利用這些數值,相關電路就每一音調滯后數值計算出最佳音調增益b的數值。相關電路由移位寄存器588、乘法器590和592、加法器594和596、寄存器598和600、除法器602組成。在相關電路中,計算是這樣進行的,即n從Lp循環至1,而m從(Lp-17)-1循環至-143。相關電路之后是比較電路,它執行數據比較和存儲,以確定音調滯后L和增益b的最佳值。比較電路由乘法器604、比較器606、寄存器608、610和612、量化器614組成。比較電路為每一音調子幀輸出使合成語音和輸入語音之間的誤差最小的L和b值。b的值由量化器614量化到8級,用一3位的數值表示,當L=16時導出一個附加級,b=0級。這些L和b值提供給碼書檢索子系統230和數據緩存器222。它們通過數據壓縮子系統238或數據緩存器222提供給譯碼器234,用于音調檢索。類似于音調檢索,碼書檢索是一種由合成編碼系統進行的分析,在系統中,編碼是通過選取使輸入語音與用這些參數合成的語音之間的誤差最小的參數完成的。對于速率1/8,音調增益b設為零。如前文中討論的那樣,每20ms分成多個碼書子幀,如前所述,它們依賴于為該幀所選取的數據速率。對每一碼書子幀分別計算一次參數G和I,即碼書增益和索引。在計算這些參數時,除了全速率之外,在碼書子幀LSP內插子系統226中以類似于對音調子幀LSP內插子系統216說明過的方式對該子幀進行LSP頻率內插。對于每個碼書子幀,碼書子幀內插LSP頻率也由LSP至LPC轉換子系統228轉換成LPC系數。碼書子幀計數器232用于跟蹤計算碼書參數的碼書子幀,計數器輸出提供給碼書子幀LSP內插子系統226,用于碼書子幀LSP內插。碼書子幀計數器232也提供一個輸出給音調子幀計數器224,顯示在選中速率下的碼書子幀的結束。激勵碼書由2M個碼矢量組成,它們是依據一種單元變量白色高斯隨機序列而建立的。M=7時,碼書中有128個入口。碼書以某種遞歸方式組織,以使各個碼矢量與相鄰的碼矢量相差一個取樣,即一個碼矢量中的取樣移動一位,在一端移入一個新的取樣,而在另一端拋掉一個取樣。因而,一個遞歸碼書可以作為一個長2M+(Lc-1)的線性陣列存儲,其中,Lc是碼書子幀長度。然而,為了簡化執行過程,和保存存儲器空間,采用2M個取樣長的循環碼書(128個取樣)。為了減少計算量,碼書中的高斯數值的中心部分值被消除。這些數值最初選自方差為1的白色高斯過程。然后,將小于1.2的數值設為零。這有效地將大約75%的數值設置成零,產生一個脈沖碼書。碼書的中心削除將在碼書檢索中執行遞歸卷積所需的計算量降低到因為對零無須進行計算。用在當前執行過程中的碼書在下面的表VII中給出。表VII0x00000x00000x00000x00000x2afe0x00000x00000x00000x41da0x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x3bb30x00000x363e0x00000x00000x00000x00000x00000x00000x417d0x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x9dfe0x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000xc58a0x00000x00000x00000x00000x00000x00000x00000xc8db0xd3650x00000x00000xd6a80x00000x00000x00000x3e530x00000x00000xd5ed0x00000x00000x00000xd08b0x00000x00000x00000x00000x3d140x396a0x00000x00000x00000x00000x00000x00000x4ee70xd7ca0x00000x00000x438c0x00000x00000xad490x30b10x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x00000x3fcd0x00000x00000xd1870x2e160xd09b0xcd8d0x00000x00000x00000x00000x00000x00000x32ff又語音編碼器采用包括公式(3)給出形式的加權合成濾波器在內的公式(1)給出形式的感知噪聲加權濾波器。對于各個碼書指數I,合成語音并與原來的語音比較。在計算出其MSE前誤差由感知加權濾波器加權。如前所述,目的是使X(n)和X′(n)之間的誤差在I和G的所有可能值上為極小。該誤差的極小化可以由下面公式表示MSE=1LeΣn=0lc-1(X(n)-X′(n))2-----(39)]]>這里Lc是碼書子幀中的樣本數。這里對于G公式(38)可改寫MSE=1LcΣn=0Lc-1(X(n)-GY(n))2-----(40)]]>這里Y是通過用第1碼矢量并假定G=1卷積共振峰主頻成分濾波器的沖激響應而得到的。使該MSE極小轉而等效于使大EI=(Exy)2Eyy------(41)]]>為極大,這里Exy=Σn=0Lc-1X(n)Y(n)-----(42)]]>知Eyy=Σn=0Lc-1y(n)Y(n)------(43)]]>根據下面的公式得到對于所給的I最優的G,GI=ExyEyy]]>對于I的所有允許值重復這檢索。與音調檢索相反,該最優增益G允許為正值或負值。最后使EI極大的指數I,和碼書增益G被選擇用于傳送。還應注意加權音調和共振峰主頻成分的濾波器的ZIR跟輸入語音之間的感知加權差值X(n)僅需計算一次。而對于各個碼矢量的音調和共振峰主頻成分濾波器的零狀態響應需對于各個指數I來計算。由于采用循環碼書,用于音調檢索的所述遞歸卷積方法可用來使所需的計算量為最小。再參見圖15,編碼器包括與圖5中的譯碼器一樣的即圖7的譯碼器子系統在此計算出濾波器狀態。其中Mp是在音調合成濾波器550中的記憶,Ma是在共振峰合成濾波器552中的記憶;Mw是在感知加權濾波器中的記憶。分別來自譯碼器子系統的音調合成和共振峰濾波器的濾波器狀態Mp和Ma送給圖7的碼書檢索子系統230。在圖17中濾波器狀態Mp和Ma送給零沖激響應(ZIR)濾波器620以計算音調和共振峰合成濾波器550和552的ZIR。在加法器622中從所輸入的輸入語音樣值S(n)減去計算出的音調和共振峰濾波器的ZIR,該結果由感知加權濾波器加權。感知加權濾波器的輸出Xc(n)用作上面的MSE公式(39)-(44)中的加權了的輸入語音則X(n)=Xc(n)。圖17,在濾波器626中計算共振峰濾波器的沖激向應h(n)并輸出至移位寄存器628。對于各個碼書子幀計算共振峰濾波器的沖激響應h(n)。為進一步減少所需的計算量,該共振峰濾波器的沖激響應h(n)截取20個樣本。移位寄存器628隨同乘法器630、加法器632和移位寄存器634一起進行來自移位寄存器628的值h(n)與來自于如上所述含有碼書矢量的碼書636的值c(m)間的遞歸卷積。假定碼書增量為1,進行這卷積運算以對各個碼矢量尋找共振峰濾波器的零狀態向應。該卷積電路的運行,對于每個m,n從Lc到1循環,而m則從1到256循環。在寄存器586中當n=1數據不送出而當n=Lc數據不鎖存。當m≤1數據才作為該卷積電路的輸出給出。應該注意的是在開始緊接在卷積電路后的相關與比較電路前必須起動卷積電路以通過循環m子幀大小次數進行遞歸卷積運算。該相關與比較電路進行實際的碼書檢索產生碼書指數I值和碼書增益G值。該相關電路除了被作為均方差(MSE)電路借用以外,還由音調與共振峰濾波器的ZIR跟輸入語音X′(n)之間的感知加權差值來計算ZSR的自相關和互相關。換句話說該相關電路對碼書指數I的各個值計算碼書增益G。該相關電路包括移位寄存器638,乘法器640和642,加法器644和646,寄存器648和650,和除法器652。在相關電路中計算是n從Lc到1循環而m從1到256循環的。接在相關電路后的比較電路為確定碼書指數I和增益G的最優值進行數據的比較和存儲。該比較電路包括乘法器654,比較器656,寄存器658、660和662,和量化器664。該比較電路為各個碼書子幀提供使合成語音與輸入語音之間的誤差為極小的I和G的值。該碼書增益G在量化器614中量化,DPCM在量化期間以類似于參考圖12所述的偏置消除的LSP頻率量化和編碼對該值編碼。這些I和G值然后送給數據緩沖器222。在量化和該碼書的DPCM編碼中增益G是按照下面的公式計算的。量化后的Gi=20logGi-0.45(20logGi-1+20logGi-2)(45)這里20logGi-1和20logGi-2分別是對前一幀(i-1)和再前一幀(i-2)計算出的值。該LSP、I、G、L和b值隨同速率送到數據壓縮子系統236以安排這數據用于傳輸。在一項實施中該LSP、I、G、L和b值隨同速率可經數據壓縮子系統236送給譯碼器234。在另一項實施中這些數據可經數據緩沖器222送給譯碼器234以用于音調檢索。而在較佳實施例中在數據壓縮子系統236中所采用的對碼書符號位的保護會影響碼書指數。所以I和G數據直接從數據緩沖器222送出時必須考慮到該保護。在數據壓縮子系統236中數據可根據各種傳輸格式壓縮。圖18示出數據壓縮子系統236的功能單元的說明性實施例。數據壓縮子系統236包括偽隨機數發生器(PN)670,循環冗余校驗(CRC),計算單元672,數據保護邏輯674和數據組合器676。PN發生器670接收速率并對八分之一速率產生一4位的隨機數送給數據組合器676。CRC單元672接收碼書增益和LPS值以及速率,并對全速率產生一11位內部CRC碼送到數據組合器676。數據組合器676接收該隨機數,CRC碼,以及來自數據緩沖器222(圖7b)的速率和LSP、I、G、L和b值將輸出送到傳輸信道數據處理子系統234。在該項實施中數據以最小量直接從數據緩沖器222送到譯碼器234則PN發生器4位數則從PN發生器670經數據組合器676送到譯碼器234,在全速率時包括CRC位在內隨同幀數據作為從數據組合器674的輸出,而在八分之一速率該碼書指數丟下并由隨機4位數取代。在該例示實施例中最好向碼書增益符號位提供保護。對該位的保護會使聲碼器的譯碼器對在該位的單個位的誤碼不敏感。如果因一個未檢出的誤碼而使該符號位改變,該碼書指數就會指向與最優值不相關的矢量。在誤碼情況下沒有保護,就會選取該最優矢量的相反量,實質上為所要采用的可能矢量的最差矢量。這里所采用的保護方案確保增益符號位中的單個位誤碼不會使該最優矢量的相反量在該誤碼情況下被選用。數據保護邏輯674接收該碼書指數和增益并檢查該增益值的符號位。若確定出增益值符號位是相反的對相關聯的碼書指數加該值89,取模128。該碼書指數不論是否修改都從數據保護邏輯674輸出到數據組合器676。在該例示實施例中最好在全速時例如由一內部CRC(循環冗余校驗)保護所壓縮的話音包數據在感覺上最敏感的位。11特殊位被用來進行可校正所保護的任何單個誤碼的這種誤碼校驗功能。所保護的塊包括10個LSP頻率的最重要位和8個碼書增益值的最重要位。若在該塊中出現無法校正的誤碼,該包則被廢棄并標明下面述及的消除記錄。否則該音調增益設為0而余下的參數仍用收到的值。在例示實施例中讓一生成多項式g(X)=1+X3+X5+X6+X8+X9+X10產生一(31,21)循環碼來選出循環碼。但應注意的是也可用其他生成多項式。附加一總的奇偶校驗位使它為-(32,21)碼。既然僅有18個信息位,則該碼字中的前3位置零并且未被傳輸。該項技術提供附加的保護,這樣若校正子表明在這些位置有誤碼,這就意味著有無法校正的誤碼。系統地對循環碼的編碼涉及當X10μ(X)模g(X)奇偶校驗位的計算則μ(X)是信息多項式。在譯碼結束時,該校正子是用g(X)除所接收到的矢量計算得出的余數。若該校正子未顯示有誤碼,則不論總的奇偶校驗位的狀態均接收該包。若該校正子顯示有單個誤碼,若未對總的奇偶校驗位的狀態檢查則該誤碼被校正若該校正子顯示有多于一個的誤碼,則該包被廢棄。關于這些誤碼防護方案的更詳細內容可在林和科斯特羅的“誤碼控制編碼基礎及應用”4.5節中校正子計算的詳細內容中找到。在CDMA蜂窩式電話系統實施中為在20秒數據傳送幀內傳送將數據從數據組合器674送到傳輸信道數據處理子系統238用于數據壓縮。在其中聲碼器設定為全速率的傳輸幀中,由于有效位速率為9.6Kbps故傳輸192位。本例中的傳輸幀包括1位用以指示混合幀形式(0=僅為話音,1=話音和數據/信號碼)的混合方式位;160位聲碼器數據隨同11位內部CRC位;12位外部或幀CRC位;和8位尾部位或嵌入位。在半速率時,由于4.8Kbps的有效位速率故傳送80位聲碼器數據位以及8位幀CRC位和8位尾部位。在四分之一速率時,由于2.4Kbps的有效位速率故傳送40位聲碼器數據位以及8位尾部位。最后在八分之一速率時,由于1.2Kbps的有效位速率故傳送16位聲碼器數據位以及8位尾部位。要應用本發明聲碼器的CDMA系統中所采用的調制的更詳細細節在1990年6月25日申請的申請號為07/543,496,轉讓給本發明的受讓人的題為“用于產生CDMA蜂窩式電話系統中信號波形的系統和方法”的共同待批專利申請中揭示。在這種系統中在不是全速率的速率時采用了數據位組織成位組而位組偽隨機地置于20ms的數據傳送幀中的方案。應該理解除了那些用于這里對聲碼器和CDMA系統實施作說明的還可現成地采用其他幀速率和位表示,這樣別的實施例可用于聲碼器和其他系統的應用。在CDMA系統與也適用的其他子系統中,以一幀接一幀為基礎的處理子系統238可中斷聲碼器數據的傳輸以傳輸諸如信號碼數據或其他非語音數據之類的其他數據。傳輸情況的這種特殊形式是指“間隔和突發”。處理器子系統238必須用在該幀所要傳輸的數據取代該聲碼器數據。會出現另一種情況人們希望在同一數據傳輸幀期間傳輸聲碼器數據和其他數據。傳輸情況的這種特殊形式是指“遲緩和突發”。在“遲緩和突發”傳輸中,該聲碼器沒有速率約束指令以設定聲碼器最終速率在所需要的速率上,例如半速率。該半速率編碼的聲碼器數據送給處理器子系統238而為該數據傳輸幀插入隨同聲碼數據的附加數據。提供給全雙工電話線路的另一個附加功能是速率聯鎖。若線路的一個方向以最高的傳輸速率傳輸,那么上線路的另一個方向則被迫以最低的速率傳輸。甚至以最低速率,對于主動談話者有足夠的理解以意識到他正被打斷和要停止談話是可行的,藉此允許該線路別的方向估計主動談話者一方。而且若主動談話者在企圖中斷時繼續談話,因為他自己的語音干擾了感覺質量的能力也可能會未感覺出質量的降級。該聲碼器還能通過采用速率限制指令設定成以低于通常速率的速率對話音進行聲音編碼。應該理解當在CDMA系統中需要額外的容量時該速率限制指令可設定該聲碼器最大速率低于全速率。在其中公共頻譜用于傳輸的CDMA系統中某用戶信號會對該系統中的別的用戶有干擾。系統用戶容量因而由系統用戶引起的總干擾所限制。隨著干擾水平的上升,通常是由于在該系統中的用戶的增長,由于干擾的增加用戶體驗到質量的降級。各個用戶對CDMA系統的干擾的貢獻是用戶傳輸數據速率的函數。通過設定聲碼器以低于通常的速率對語音編碼,該編碼數據隨后以相應降低的數據速率傳輸,以降低由該用戶所引起的干擾的水平。所以通過以較低速率對語音進行聲音編碼系統容量會得到實質性的提高。隨著系統的需求上升,可由系統管理機或蜂窩基地站指令用戶聲碼器降低編碼速率。本發明的聲碼器具有一種良好的質量,語音以全速和半速編碼時雖然兩者可感覺有些差異但量很小。因而語音以例如半速率的較低速率進行聲音編碼對系統用戶間的通信質量的后果不及因系統用戶數量的上升所引起的干擾水平的上升所帶來的后果嚴重。因而可采用各種方案為低于通常的聲音編碼的速率來設定各自的聲音編碼器速率界限。例如可指令在蜂窩中的所有用戶以半速率對語音編碼。這種辦法實質上以很小的用戶間通信質量的損失降低系統的干擾,而為額外客戶在容量上提供實質的增長。直到由額外用戶引起的系統的總干擾量上升到降級水平故而不會對用戶間的通信質量形成沖擊。如前所述,為實現對語音樣本幀編碼的分析一合成技術該編碼器包括一個與譯碼器相同的復本如圖7所示,譯碼器234接收經過數據壓縮子系統238或數據緩沖器222的L,b,I和G值以重建合成的語音來與輸入語音比較。譯碼器的輸出如前所述為Mp,Ma和Mw值。用于編碼器和在傳輸信道另一端重建合成語音的譯碼器234的更詳細細節可參見圖19-24說明。圖19是本發明譯碼器例示性實施例的流程圖。在編碼器中和在接收機中所實施的譯碼器具有共同的結構,因而這些實施例在一起說明。對圖19的說明主要針對在傳輸信道一端的譯碼器,因為在那里接收到的數據必須在譯碼器中預處理正象在編碼器的譯碼器中直接從數據壓縮子系統238或數據緩沖器222收到合適數據(速率,I,G,L和b)。不過對于實施編碼器和譯碼器來說譯碼器的基本功能是相同的。如前面參見圖5所討論的那樣,對各個碼書子幀由該碼書指數I所規定的碼書矢量是從存儲的碼書中檢索出的。該矢量以該碼書增益G隨后對每音調子幀由音調濾波器濾波產生共振峰余量。該共振峰余量由共振峰濾波器濾波隨后通過一自適應共振峰后置濾波器和一清晰度后置濾波器,以及自動增益控制(AGC)以產生輸出語音信號。盡管碼書和音調子幀的長度是變化的,為方便實施在40樣本塊中進行譯碼。所收到的壓縮數據首先被分解成碼書增益,碼書指數,音調增益,音調滯后和LSP頻率。該LSP頻率如參見圖22所說明的那樣必須經他們各自的逆向量化器和DPCM譯碼器處理。類似地碼書增益值除了沒有偏置必須以與LSP頻率相似的方式處理。音調增益值也被逆向量化。這些參數隨后送給各個譯碼子幀。在各個譯碼子幀中,2套碼書參數(G和I),1套音調參數(b和I)和一套LPC系數需產生40個輸出樣本。圖20和21對于各種速度和其他幀狀況示出例示性子幀譯碼參數。對于全速率幀,有8套收到的碼書參數和4套收到的音調參數。LSP頻率被內插4次產生4套LSP頻率。所收到的參數和相應的子幀信息列于圖20a中。對于半速率幀,4套收到碼書參數的各套重復一次,2套收到的音調參數的各套重復一次。LSP頻率被內插3次產生4套LSP頻率。所收到的參數和相應的子幀信息列于圖20b中。對于四分之一速率幀,2套收到的碼書參數的各套重復4次,該套音調參數也被重復4次。LSP頻率被內插一次產生2套LSP頻率。所收到的參數和相應的子幀信息列于圖20c中。對于八分之一速率幀,該套收到的碼書參數用于整個幀。音調參數對于八分之一速率未給出且該音調增益簡單地設為零。該LSP頻率內插1次產生1套LSP頻率。所收到的參數和相應的子幀信息列于圖20d中。有時,話音包可按序空出讓CDMA單元或移動臺傳輸信號碼信息。當聲碼器收到一空白幀,它繼續對前一幀參數作較小的改動。碼書增益設為零。前一幀的音調滯后和增益用于當前幀的音調滯后和增益,除非該增益被限定成某值或更小。就像沒有內插而用前一幀的LSP頻率。注意編碼端和譯碼端一直被同步且聲碼器能很快從一空白幀復原。所收到的參數和相應的子幀信息列于圖21a。在因信道差錯而丟失一幀的情況下,該聲碼器試圖通過保持前一幀的能量部分且平滑地過渡到背景噪聲來屏蔽該差錯。在該例中音調增益設成零;通過用前一幀的碼書指數加89選取一隨機碼書;碼書增益則是前一子幀的碼書增益的0.7倍。應該注意的是數89沒有什么特別的東西,這只是選取偽隨機碼書矢量的通常方法。該前一幀的LSP頻率被迫向他們偏置值衰落為ωi=0.9(前面的ωi-ωi的偏置值)+ωi的偏置值(47)該LSP頻率偏置值在表5中示出。所收到的數據和相應的子幀信息列于圖21b中。若在接收機中未能確定出速率,該包被廢棄并標上消除記錄。然而若接收機確定有很大可能該幀是以全速率傳輸的,盡管帶有差錯仍進行下面的過程。如前所述在全速率時該壓縮的話音包數據的感覺上最敏感的位由內部CRC保護。在譯碼端正如接收到的矢量除以來自公式(46)的g(X)而得出余式那樣計算出校正子。若校正子顯示無誤碼,則不論總的奇偶校驗位而接收該包。若該校正子顯示單個誤碼,若總的奇偶校驗位不檢查該誤碼被校正。若該校正子顯示多于一個誤碼。該包則被廢棄。若在該塊中出現無法校正的誤碼,該包被廢棄且標明消除記錄。否則該音調增益被置零而其余的參數如圖21c所示隨著校碼被接收而被采用。本實施例中所采用的后置濾波器首先在J.H.陳等人的“用自適應后置濾波以4800BPS實時向量APC語言編碼”(Proc.ICASSP,1987)中揭示。既然語音共振峰主頻成分比起頻譜凹谷在感覺上更為重要,該后置濾波器促使該共振峰主頻成分稍微提升以改善該編碼語音的感性質量。通過相對于原來的徑向地對共振峰主頻成分的極點定標來進行。然而全極點后置濾波器通常引入頻譜傾斜而導致濾波后的語音消音。通過增加具有與極點相同相位角而較小直徑的零點來減少該全極點后置濾波器的頻率的傾斜,從而后置濾波器具有形式H(z)=A(z/ρ)A(z/σ)---0<ρ<σ<1-----(48)]]>這里A(z)是共振峰主頻成分預測濾波器,且ρ和σ值為后置濾波器定標因數這里ρ設為0.5,σ設為0.8。加上一自適應清晰度濾波器就能進一步補償由該共振峰主頻成分后置濾波器引進的頻譜傾斜。該清晰度濾波器具有形式B(z)=1-KZ-11-KZ-1------(49)]]>這里K值(分接濾波器的系數)由與A(z)的頻譜傾斜中的變化相近似的LSP頻率平均值確定。為避免因后置濾波器引起的任何大的增益漂移,采用AGC環路對語音輸出定標使它具有與未后置濾波的語音近乎相同的能量。通過用40個濾波器輸出樣本的平方和除40個濾波器輸入樣本的平方和來實現增益控制以獲得反向濾波器增益。隨后使該增益因數的平方根平滑平滑后的p=0.2當前β+0.98前一個然后濾波器輸出乘以該平滑后反向增益以產生輸出語音。在圖19中來自信道的數據以及隨同數據傳輸或由其他裝置得到的速率被送給數據壓縮子系統700。在一個CDMA系統的實施例中當以各種不同速率進行譯碼時就可從所收到的數據的誤碼率來得到速度判定。在數據分解子系統700中,在全速率時對差錯進行CRC檢碼因而該檢碼送到子幀數據分解子系統702。子系統700將諸如空白幀,消除幀或具有可用數據的差錯幀之類異常幀狀況的標志送到子系統702。子系統700將對于該幀的速率以及I,G,L,和b參數送到子系統702。在提供碼書指數I和增益G值時,該增益值的符號位在子系統702中被檢碼。若符號位相反,從關聯的碼書指數減去值89,取模(mod)128。而且在子系統中該碼書增益被反向量化且DPCM編碼,同時音調增益被反向量化。子系統700還將速率與LSP頻率送到LSP反向量化/內插子系統704。子系統700還將空白幀、消除幀或有可用數據的差錯幀的標志送到子系統704。編碼子幀計數器706將子幀計數值i和j的標志送到子系統702和704。在子系統704中該LSP頻率被反向量化和內插。圖22示出子系統704的反向量化部分的實施例,而該內插部分與參見圖12說明的那種在實質上是相同的。在圖22中,子系統704的反向量化部分包括反向量化器750,它與圖12中的反向量化器468結構相同且以相似方式工作。反向量化器750的輸出作為輸入送到加法器752。加法器752的其他輸入則由乘法器754的輸出提供。加法器752的輸出送給寄存器756存儲并輸出在乘法器754與常數0.9相乘。加法器752的輸出回被送到加法器758將偏置值加回給LSP頻率。由邏輯760確保LSP頻率的序列使LSP頻率具有最小間隔。除非在傳輸中出現差錯一般不會出現強迫分隔的需要。該LSP頻率如參見圖13和參見圖20a-20d和21a-21c說明的那樣是內插值。再參見圖19,存儲器706與子系統704連接存儲前一幀LSPs,ωi,f-1,還可用來存儲偏置值bwi。這些前一幀值對于所有速率都用于內插。在空白幀,消除幀或有可用數據的差錯幀的情況下,按照圖21a-21c中的表應用前一幀的LSPs,ωi,ωi,f-1。響應來自子系統700的空白幀標志,子系統704檢取出存于存儲器708的前一幀LSP頻率用于當前幀。響應消除幀標志,子系統704隨同偏置值再從存儲器708檢取出前一幀LSP頻率以如上所述計算當前幀的LSP頻率。在進行該計算時,在一加法器中從前一幀LSP頻率減去所存儲的偏置值,該結果在一乘法器中乘以常數值0.9,其結果在一加法器中加到所存儲的偏置值。響應具有可用數據的差錯幀標志,對于全速率若CRC通過該LSP頻率就被內插。該LSPs送到LSP至LPC轉換子系統710將LSP頻率變換回LPC值。子系統710實質上與圖7的LSP至LPC轉換子系統218和228相同并如參見圖13說明的那樣。該LPC系數αi隨后送給共振峰主頻成分濾波器714和共振峰主頻成分后置濾波器716。該LSP頻率在LSP平均值子系統還在子幀上取平均并作為值K送給自適應清晰度濾波器718。子系統702隨同速率或異常幀狀態標志從子系統700接收該幀的參數I、G、L和b。子系統702還從子幀計數器收到對于各個譯碼子幀1-4中的每個i計數的j計數。子系統702還連接存儲器720以存儲用于異常幀狀態的G,I,L和b的前一幀值。子系統702處于正常幀狀態,除去八分之一速率,要將碼書指數值Ij送到碼書722;將碼書增益Gj送到乘法器724,音調滯后L和增益b值按照20a-20d送到音調濾波器726。對于八分之一速率,由于所送的碼書指數沒有值,對于八分之一速率,由于所送的碼書指數沒有值,對于八分之一速率是16位參數值的包種籽隨同度標志送到碼書722。在異常幀狀態子系統702按照圖21a-21c提供這些數據。而且對于八分之一速率,如參見圖23所說明的那樣向碼書722提供標志。響應來自子系統700的空白幀標志,子系統702檢取出存在存儲器中的前一幀音調滯后L值和增益b值除了該增益限制為某值或小些,以用于當前幀的譯碼子幀。而且未提供碼書指數I且碼書增益G被設為零。響應消除幀標志,子系統702再從存儲器720檢取出前一幀子幀碼書指數并在加法器加89的值。該前一幀子幀碼書增益在乘法器乘以常數0.7以產生各自子幀的G值。未提供音調滯后值并將音調增益置零。響應具有可用數據的差錯幀標志,當在全速率幀中假使CRC通過就運用碼書指數和增益,而不提供音調滯后值且音調增益置零。如參考分析-合成技術中的編碼器的譯碼器所說明的那樣,該碼書指數I用作該碼書值的起動地址以向乘法器724輸出。該碼書增益值在乘法器724乘以來自碼書722的輸出值該結果送到音調濾波器726。音調濾波器用輸入的音調滯后L值和增益b值以產生輸出給共振峰主頻成分濾波器714的共振峰主頻成分余量。在共振峰主頻成分濾波器714LPC系數用來對共振峰主頻成分余量濾波以重建語音。在接收端的譯碼器重建語音進一步由共振峰主頻成分后置濾波器716和自適應清晰度濾波器718濾波。在共振峰主頻成分濾波器714和共振峰主頻成分后置濾波器716的輸出采用AGC回路,其輸出在乘法器730中乘以自適應清晰度濾波器718的輸出。乘法器730輸出的重建語音利用熟知技術變換成模擬形式并送給聽眾。在編碼器的譯碼器中,為更新它的記憶,在輸出端設置感知加權濾波器。參見圖22,說明實施譯碼器本身的更詳細節。在圖22中碼書722包括與參見圖17所說明的那種相類似的存儲器750。然而為便于說明,對于存儲器75。說明稍有差異的方法并在圖22中示出其編址。碼書722還包括開關752,多路轉換器753和偽隨機數發生器(PN)754。開關752如參見圖17說明的那樣響應該碼書指數以指向存儲器750的指數地址位置。存儲器750是有開關752指向起始記憶位置的循環存儲器,數值移過存儲器而輸出。該碼書數值經開關752從存儲器750輸出作為多路轉換器753的輸入。多路轉換器753響應全速率,半速率和四分之一速率以將經開關752提供的數值送到碼書增益放大器,乘法器724。多路轉換器753還響應八分之一速率標志以選取PN發生器754的輸出使碼書722的輸出送到乘法器724。為維持在CELP編碼的高話音質量,編碼器和譯碼器必須有相同數值存儲在他們的內部濾波器存儲器中。這可通過傳輸碼書指數進行,使譯碼器和編碼器的濾波器由數值的相同序列激勵。而對高話音質量這些序列包括大多數零,并有一些尖峰分布其間。這種激勵方式對于對背景噪聲編碼不是最優的。在對背景噪聲的編碼中,以最低速率進行,可實現偽隨機序列激勵濾波器。為確保該濾波器存儲器在編碼器和譯碼器中的相同,這兩個偽隨機序列必須相同。不管怎樣必須傳輸種籽到接收機譯碼器。既然沒有額外的位可用以送該種籽,所傳輸包位可用作種籽,似乎它們構成一個數。該技術可進行是因為是以低速率用完全相同CELP分析合成結構來確定碼書增益和指數的。差異是該碼書指數被扔掉而編碼器的濾波器存儲器用一偽隨機序列來更新。因而分析完后可確定出用于激勵的種籽。為確保包本身不在一套位模式周期地循環,在該八分之一速率的包中插入4位隨機位來取代該碼書指數值。因此該包種籽是如圖2所見到的16位數據。NP發生器754用熟知技術構筑并可由各種算法實施。在例示性實施例中所采用的算法其本質在保羅·門恩的文章“DSP片采用已證明的算法可產生隨機數”(EDN,1991,1,21)中說明。所傳輸的位包用來產生序列的種籽(來自圖18中的子系統700)。在一實施例中種籽乘以數值521且加上數值259。從這合成數值的最不重要的位用來作為有符號的16位數。該數值隨后用作產生下一碼書數值的種籽。由PN發生器產生的序列被歸一化而具有1的方差。從碼書722輸出的各個數值在乘法器724中乘以如在譯碼子幀期間所提供的碼書增益G。該數值作為輸入送給音調濾波器726的加法器756。音調濾波器726還包括乘法器758和存儲器760。該音調滯后L確定存儲器760分接位置被輸出給乘法器758。該存儲器760的輸出在乘法器758中乘以音調增益值b,結果輸出給加法器756。加法器756的輸出送到存儲器760的輸入端,它是諸如移位寄存器的一系列的延時單元。該數值經存儲器760移出(沿箭頭所指方向)且如L值所確定那樣在所選取的分接輸出端給出。既然該值經存儲器760移出,比143移出值更老的值被廢棄。加法器756的輸出還作為輸入送到共振峰主頻成分濾波器714。加法器756的輸出送到共振峰主頻成分濾波器714的加法器762的一個輸入端。共振峰主頻成分濾波器還包括乘法器764a-764j的存儲單位和存儲器766。該加法器762的輸出作為輸入送到存儲器766,它也構建成一系列分接的延時單元如移位寄存器。該數值經存儲器766移出(沿箭頭所指方向)且最后清出每個單元有分接口以將存在那里的數據作為輸入送給乘法器764a-764j的相應的分接口。每個乘法器764a-754j還接收LPC系數α1-α10的各個值來乘以來自存儲器766的輸出。來自加法器762的輸出送給作為共振峰主頻成分濾波器的輸出。共振峰主頻成分濾波器714的輸出作為輸入送到共振峰主頻成分后置濾波器716和AGC子系統728。共振峰主頻成分濾波器716包括加法器768和770以及存儲器772和乘法器774a-774j,776a-776j,和782a-782j。隨著該數值經存儲器772移出它們在相應的分接口輸出用來乘以定標的LPC系數值而在加法器768和770累加。共振峰主要頻率成分后置濾波器716的輸出作為輸入送給自適應清晰度濾波器718。自適應清晰度濾波器718包括加法器784和786,寄存器788和790,和乘法器792和794。圖24是說明自適應清晰度濾波器特點的圖表。共振峰主頻成分后置濾波器716作為輸入送給加法器784而另一輸入由乘法器792的輸出提供。加法器784的輸出送給寄存器788并存儲一循環而在下一循環隨同圖19的LSP平均器712提供的K值輸出給乘法器792和794。乘法器792和794的輸出被送給加法器784和786。加法器786的輸出送給AGC子系統728和移位寄存器790。寄存器790作為延時線以確保從共振峰主頻成分濾波器714輸出給AGC子系統728的數據與經共振峰主頻成分后置濾波器716提供給自適應清晰度濾波器718的數據間的協調。AGC子系統728接收來自共振峰主頻成分濾波器和自適應清晰度濾波器的數據以對語音輸出能量定標至大約輸入到共振峰主頻成分后置濾波器716和自適應清晰度應濾波器718的語音的能量。AGC子系統728包括乘法器798、800、802和804,加法器806、808和810,寄存器812、814和816,除法器818,和平方根單元820。從共振峰主頻成分濾波器輸出的40個樣本在乘法器798平方并在包括加法器806和寄存器812的累加器中累加以產生數值“X”。相似地從自適應清晰度濾波器718輸出的40樣本,優先于存儲器790,在乘法器800中平方并在包括加法器808和寄存器814的累加器中累加以產生數值“Y”。該數值“Y”在除法器816中除以數值“X”以產生該濾波器的反向增益。在單元818得到該反向增益因數的平方根其結果被平滑。通過當前增益G值在乘法器802乘以常數0.02,該結果在加法器810加上如寄存器820和乘法器804所計算出的0.98倍的前增益的結果來實現平滑工作。濾波器718的輸出隨后在乘法器730乘以平滑后的反向增益以提供輸出的重建語音。該輸出語音用各種已知變換技術變換成模擬形式輸出給用戶。應該理解這里所揭示的本發明的實施例只是例示性的實施例,對該實施例作出的改變可認為在功能上的等同物。本發明可以在合適的程序控制下在數字信息處理機中實施,提供如這里所公開的對語音樣本編碼并對該編碼的語音譯碼的功能操作。在本發明的另一個實施例中可以在實用熟知的超大規模集成(VLSZ)技術的專用集成電路(ASIC)來實現。所提供的對較佳實施例的前面的說明能使本領域技術人員運用本發明。對這些實施例的各種變動對于本領域技術人員將是現成明顯的,這里確定的總原則可不需要創造性勞動就可應用于其他實施例中。因而本發明希望不是限定在這所示出的實施例而是給予與這里所說的原則和新穎特征相一致的最大保護范圍。權利要求1.在編碼激勵線性預測(CELP)編碼器中,對于主要由語音及背景噪聲組成的聲信號的數字化取樣的輸入幀進行可變速率編碼的方法,其特征在于,它包括對于數字化語音取樣的一系列輸入幀中的每一個計算線性預測編碼系數(LPC);依據至少一個所述LPC系數從一組數據包速率中為每個幀選出一個輸出數據包速率;將表示LPC系數的位數限制為由所述選中速率確定的預定數量;對每個幀的一組成分音調分析子幀的各個音調子幀確定音調參數,其中,每個幀的音調子幀數量由所述選中速率確定,每個音調子幀的所述音調參數由所述選中速率所確定的位數來表示;對于每個幀的一組成分碼書分析子幀的各個碼書子幀確定碼書參數,其中,每個幀的碼書分析子幀的數量由所述選中速率確定,各碼書子幀的所述碼書參數由依據所述選中速率而確定的位數表示;和為每個幀提供一個對應的表示所述LPC系數的位的輸出數據包,為每個相應的音調和碼書子幀提供音調參數和碼書參數。2.一種可變速率編碼激勵線性預測(CELP)編碼器,用于對主要由語音和背景噪聲組成的聲音信號的數字化取樣的輸入幀進行可變速率編碼,其特征在于,它包括對一個聲音信號的數字化取樣的一系列輸入幀中的每一個計算線性預測編碼系數(LPC)的裝置;依據至少一個所述LPC系數,從一組數據包速率中為每個幀選取一個輸出數據包速率的裝置;將表示所述LPC系數的位數限制為由所述選中速率確定的一個預定數量的裝置;為每個幀的一組成分音調分析子幀中的每個音調子幀確定音調參數的裝置,其中,每個幀的音調子幀數量由所述選中速率確定,各音調子幀的所述音調參數由所述選中速率所確定的位數來表示;為每個幀的一組成分碼書分析子幀中的每個碼書子幀確定碼書參數的裝置,其中,每個幀的碼書分析子幀的數量由所述選中速率確定,每個碼書子幀的所述碼書參數由所述選中速率所確定的位數表示;和其中,在所述選中速率下,為每個幀提供一個代表所述LPC系數的位的對應輸出數據包,和各個音調和碼書子幀的所述音調參數和碼書參數。3.一種譯碼器,用于將由可變速率編碼激勵線性預測(CELP)編碼器所編碼的,主要由語音和背景噪聲組成的一個聲音信號的數字化取樣的經過編碼的幀譯碼,其特征在于,它包括用于從接收到的碼書索引參數產生一個對應的碼書激勵矢量的裝置;響應所述碼書激勵矢量,按照所接收到的碼書增益參數,放大所述碼書激勵矢量,從而形成一個音調余量的裝置;用于根據接收到的音調滯后和增益值對所述音調余量作音調合成濾波從而形成一個共振峰余量的裝置;4.如權利要求3所述的譯碼器,其特征在于,它還包括自適應地對所述重建語音取樣進行濾波從而減少所述重建語音取樣中的可聽噪聲的裝置;和用于給所述重建語音取樣和所述經自適應濾波后的重建語音取樣提供單一增益的裝置。5.如權利要求3所述的譯碼器,其特征在于,在所述語音的所述重建中,所述接收到的參數中的錯誤被屏蔽。全文摘要一種通過對數字化語音取樣的幀作可變速率編碼而將語音信號壓縮的裝置和方法。對于數字化語音取樣的每個幀確定語音動作級別,依據所確定的幀語音動作級別,從一組速率中選出一個輸出數據包速率。該組速率中的最低速率對應于檢測到的最低語音動作級別,例如對應于語音中的背景噪聲或停頓,而最高速率對應于檢測到的最大語音動作級別,如對應于現有發音。每個幀根據選中速率的預定編碼格式進行編碼,各個速率具有代表編碼幀的相應位數。對每個編碼幀形成一個數據包,各輸出數據包的位速率對應于選中的速率。文檔編號G10LGK1159639SQ9611859公開日1997年9月17日申請日期1996年12月6日優先權日1991年6月11日發明者保羅·E·雅各布,威廉·R·加德納,沖·U·李,克萊恩·S·吉豪森,S·凱瑟琳·蘭姆,民昌·蔡申請人:夸爾柯姆股份有限公司